Home | History | Annotate | Download | only in Include
      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 
    137     TLimits limits;
    138 };
    139 
    140 #endif // _RESOURCE_LIMITS_INCLUDED_
    141