111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//Copyright (C) 2002-2005 3Dlabs Inc. Ltd. 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//Copyright (C) 2013 LunarG, Inc. 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//All rights reserved. 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//Redistribution and use in source and binary forms, with or without 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//modification, are permitted provided that the following conditions 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//are met: 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Redistributions of source code must retain the above copyright 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// notice, this list of conditions and the following disclaimer. 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Redistributions in binary form must reproduce the above 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// copyright notice, this list of conditions and the following 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// disclaimer in the documentation and/or other materials provided 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// with the distribution. 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Neither the name of 3Dlabs Inc. Ltd. nor the names of its 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// contributors may be used to endorse or promote products derived 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// from this software without specific prior written permission. 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//POSSIBILITY OF SUCH DAMAGE. 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _RESOURCE_LIMITS_INCLUDED_ 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _RESOURCE_LIMITS_INCLUDED_ 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct TLimits { 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bool nonInductiveForLoops; 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bool whileLoops; 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bool doWhileLoops; 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bool generalUniformIndexing; 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bool generalAttributeMatrixVectorIndexing; 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bool generalVaryingIndexing; 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bool generalSamplerIndexing; 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bool generalVariableIndexing; 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bool generalConstantMatrixVectorIndexing; 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct TBuiltInResource { 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxLights; 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxClipPlanes; 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTextureUnits; 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTextureCoords; 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVertexAttribs; 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVertexUniformComponents; 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVaryingFloats; 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVertexTextureImageUnits; 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxCombinedTextureImageUnits; 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTextureImageUnits; 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxFragmentUniformComponents; 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxDrawBuffers; 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVertexUniformVectors; 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVaryingVectors; 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxFragmentUniformVectors; 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVertexOutputVectors; 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxFragmentInputVectors; 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int minProgramTexelOffset; 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxProgramTexelOffset; 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxClipDistances; 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeWorkGroupCountX; 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeWorkGroupCountY; 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeWorkGroupCountZ; 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeWorkGroupSizeX; 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeWorkGroupSizeY; 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeWorkGroupSizeZ; 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeUniformComponents; 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeTextureImageUnits; 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeImageUniforms; 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeAtomicCounters; 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxComputeAtomicCounterBuffers; 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVaryingComponents; 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVertexOutputComponents; 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryInputComponents; 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryOutputComponents; 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxFragmentInputComponents; 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxImageUnits; 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxCombinedImageUnitsAndFragmentOutputs; 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxCombinedShaderOutputResources; 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxImageSamples; 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVertexImageUniforms; 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessControlImageUniforms; 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessEvaluationImageUniforms; 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryImageUniforms; 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxFragmentImageUniforms; 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxCombinedImageUniforms; 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryTextureImageUnits; 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryOutputVertices; 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryTotalOutputComponents; 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryUniformComponents; 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryVaryingComponents; 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessControlInputComponents; 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessControlOutputComponents; 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessControlTextureImageUnits; 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessControlUniformComponents; 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessControlTotalOutputComponents; 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessEvaluationInputComponents; 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessEvaluationOutputComponents; 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessEvaluationTextureImageUnits; 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessEvaluationUniformComponents; 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessPatchComponents; 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxPatchVertices; 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessGenLevel; 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxViewports; 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVertexAtomicCounters; 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessControlAtomicCounters; 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessEvaluationAtomicCounters; 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryAtomicCounters; 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxFragmentAtomicCounters; 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxCombinedAtomicCounters; 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxAtomicCounterBindings; 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxVertexAtomicCounterBuffers; 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessControlAtomicCounterBuffers; 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTessEvaluationAtomicCounterBuffers; 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxGeometryAtomicCounterBuffers; 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxFragmentAtomicCounterBuffers; 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxCombinedAtomicCounterBuffers; 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxAtomicCounterBufferSize; 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTransformFeedbackBuffers; 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxTransformFeedbackInterleavedComponents; 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxCullDistances; 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxCombinedClipAndCullDistances; 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int maxSamples; 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TLimits limits; 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif // _RESOURCE_LIMITS_INCLUDED_ 141