ResourceLimits.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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. #ifndef _RESOURCE_LIMITS_INCLUDED_
  37. #define _RESOURCE_LIMITS_INCLUDED_
  38. struct TLimits {
  39. bool nonInductiveForLoops;
  40. bool whileLoops;
  41. bool doWhileLoops;
  42. bool generalUniformIndexing;
  43. bool generalAttributeMatrixVectorIndexing;
  44. bool generalVaryingIndexing;
  45. bool generalSamplerIndexing;
  46. bool generalVariableIndexing;
  47. bool generalConstantMatrixVectorIndexing;
  48. };
  49. struct TBuiltInResource {
  50. int maxLights;
  51. int maxClipPlanes;
  52. int maxTextureUnits;
  53. int maxTextureCoords;
  54. int maxVertexAttribs;
  55. int maxVertexUniformComponents;
  56. int maxVaryingFloats;
  57. int maxVertexTextureImageUnits;
  58. int maxCombinedTextureImageUnits;
  59. int maxTextureImageUnits;
  60. int maxFragmentUniformComponents;
  61. int maxDrawBuffers;
  62. int maxVertexUniformVectors;
  63. int maxVaryingVectors;
  64. int maxFragmentUniformVectors;
  65. int maxVertexOutputVectors;
  66. int maxFragmentInputVectors;
  67. int minProgramTexelOffset;
  68. int maxProgramTexelOffset;
  69. int maxClipDistances;
  70. int maxComputeWorkGroupCountX;
  71. int maxComputeWorkGroupCountY;
  72. int maxComputeWorkGroupCountZ;
  73. int maxComputeWorkGroupSizeX;
  74. int maxComputeWorkGroupSizeY;
  75. int maxComputeWorkGroupSizeZ;
  76. int maxComputeUniformComponents;
  77. int maxComputeTextureImageUnits;
  78. int maxComputeImageUniforms;
  79. int maxComputeAtomicCounters;
  80. int maxComputeAtomicCounterBuffers;
  81. int maxVaryingComponents;
  82. int maxVertexOutputComponents;
  83. int maxGeometryInputComponents;
  84. int maxGeometryOutputComponents;
  85. int maxFragmentInputComponents;
  86. int maxImageUnits;
  87. int maxCombinedImageUnitsAndFragmentOutputs;
  88. int maxCombinedShaderOutputResources;
  89. int maxImageSamples;
  90. int maxVertexImageUniforms;
  91. int maxTessControlImageUniforms;
  92. int maxTessEvaluationImageUniforms;
  93. int maxGeometryImageUniforms;
  94. int maxFragmentImageUniforms;
  95. int maxCombinedImageUniforms;
  96. int maxGeometryTextureImageUnits;
  97. int maxGeometryOutputVertices;
  98. int maxGeometryTotalOutputComponents;
  99. int maxGeometryUniformComponents;
  100. int maxGeometryVaryingComponents;
  101. int maxTessControlInputComponents;
  102. int maxTessControlOutputComponents;
  103. int maxTessControlTextureImageUnits;
  104. int maxTessControlUniformComponents;
  105. int maxTessControlTotalOutputComponents;
  106. int maxTessEvaluationInputComponents;
  107. int maxTessEvaluationOutputComponents;
  108. int maxTessEvaluationTextureImageUnits;
  109. int maxTessEvaluationUniformComponents;
  110. int maxTessPatchComponents;
  111. int maxPatchVertices;
  112. int maxTessGenLevel;
  113. int maxViewports;
  114. int maxVertexAtomicCounters;
  115. int maxTessControlAtomicCounters;
  116. int maxTessEvaluationAtomicCounters;
  117. int maxGeometryAtomicCounters;
  118. int maxFragmentAtomicCounters;
  119. int maxCombinedAtomicCounters;
  120. int maxAtomicCounterBindings;
  121. int maxVertexAtomicCounterBuffers;
  122. int maxTessControlAtomicCounterBuffers;
  123. int maxTessEvaluationAtomicCounterBuffers;
  124. int maxGeometryAtomicCounterBuffers;
  125. int maxFragmentAtomicCounterBuffers;
  126. int maxCombinedAtomicCounterBuffers;
  127. int maxAtomicCounterBufferSize;
  128. int maxTransformFeedbackBuffers;
  129. int maxTransformFeedbackInterleavedComponents;
  130. int maxCullDistances;
  131. int maxCombinedClipAndCullDistances;
  132. int maxSamples;
  133. int maxMeshOutputVerticesNV;
  134. int maxMeshOutputPrimitivesNV;
  135. int maxMeshWorkGroupSizeX_NV;
  136. int maxMeshWorkGroupSizeY_NV;
  137. int maxMeshWorkGroupSizeZ_NV;
  138. int maxTaskWorkGroupSizeX_NV;
  139. int maxTaskWorkGroupSizeY_NV;
  140. int maxTaskWorkGroupSizeZ_NV;
  141. int maxMeshViewCountNV;
  142. int maxDualSourceDrawBuffersEXT;
  143. TLimits limits;
  144. };
  145. #endif // _RESOURCE_LIMITS_INCLUDED_