Adding support for OES_standard_derivatives extension. This is not the complete implementation. Sending it to get feedback on the API. Is it OK to add extension support into TBuiltInResource? I could create a new struct for extensions but that would lead to API change.
BUG=25
Review URL: http://codereview.appspot.com/1953047
git-svn-id: https://angleproject.googlecode.com/svn/trunk@402 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/Initialize.cpp b/src/compiler/Initialize.cpp
index 1a9220b..6bfcf4f 100644
--- a/src/compiler/Initialize.cpp
+++ b/src/compiler/Initialize.cpp
@@ -472,15 +472,15 @@
{
TStringStream s;
- s << "const int gl_MaxVertexAttribs = " << resources.maxVertexAttribs << ";";
- s << "const int gl_MaxVertexUniformVectors = " << resources.maxVertexUniformVectors << ";";
+ s << "const int gl_MaxVertexAttribs = " << resources.MaxVertexAttribs << ";";
+ s << "const int gl_MaxVertexUniformVectors = " << resources.MaxVertexUniformVectors << ";";
- s << "const int gl_MaxVaryingVectors = " << resources.maxVaryingVectors << ";";
- s << "const int gl_MaxVertexTextureImageUnits = " << resources.maxVertexTextureImageUnits << ";";
- s << "const int gl_MaxCombinedTextureImageUnits = " << resources.maxCombinedTextureImageUnits << ";";
- s << "const int gl_MaxTextureImageUnits = " << resources.maxTextureImageUnits << ";";
- s << "const int gl_MaxFragmentUniformVectors = " << resources.maxFragmentUniformVectors << ";";
- s << "const int gl_MaxDrawBuffers = " << resources.maxDrawBuffers << ";";
+ s << "const int gl_MaxVaryingVectors = " << resources.MaxVaryingVectors << ";";
+ s << "const int gl_MaxVertexTextureImageUnits = " << resources.MaxVertexTextureImageUnits << ";";
+ s << "const int gl_MaxCombinedTextureImageUnits = " << resources.MaxCombinedTextureImageUnits << ";";
+ s << "const int gl_MaxTextureImageUnits = " << resources.MaxTextureImageUnits << ";";
+ s << "const int gl_MaxFragmentUniformVectors = " << resources.MaxFragmentUniformVectors << ";";
+ s << "const int gl_MaxDrawBuffers = " << resources.MaxDrawBuffers << ";";
return s.str();
}
@@ -607,7 +607,7 @@
case EShLangFragment: {
// Set up gl_FragData. The array size.
TType fragData(EbtFloat, EbpMedium, EvqFragColor, 4, false, true);
- fragData.setArraySize(resources.maxDrawBuffers);
+ fragData.setArraySize(resources.MaxDrawBuffers);
symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData"), fragData));
}
break;
diff --git a/src/compiler/Initialize.h b/src/compiler/Initialize.h
index 03c9937..c078659 100644
--- a/src/compiler/Initialize.h
+++ b/src/compiler/Initialize.h
@@ -7,8 +7,6 @@
#ifndef _INITIALIZE_INCLUDED_
#define _INITIALIZE_INCLUDED_
-#include "GLSLANG/ResourceLimits.h"
-
#include "compiler/Common.h"
#include "compiler/ShHandle.h"
#include "compiler/SymbolTable.h"
diff --git a/src/compiler/ShaderLang.cpp b/src/compiler/ShaderLang.cpp
index 865be18..e0c646a 100644
--- a/src/compiler/ShaderLang.cpp
+++ b/src/compiler/ShaderLang.cpp
@@ -97,9 +97,38 @@
}
//
+// Cleanup symbol tables
+//
+int ShFinalize()
+{
+ if (!DetachProcess())
+ return 0;
+
+ return 1;
+}
+
+//
+// Initialize built-in resources with minimum expected values.
+//
+void ShInitBuiltInResource(TBuiltInResource* resources)
+{
+ // Constants.
+ resources->MaxVertexAttribs = 8;
+ resources->MaxVertexUniformVectors = 128;
+ resources->MaxVaryingVectors = 8;
+ resources->MaxVertexTextureImageUnits = 0;
+ resources->MaxCombinedTextureImageUnits = 8;
+ resources->MaxTextureImageUnits = 8;
+ resources->MaxFragmentUniformVectors = 16;
+ resources->MaxDrawBuffers = 1;
+
+ // Extensions.
+ resources->OES_standard_derivatives = 0;
+}
+
+//
// Driver calls these to create and destroy compiler objects.
//
-
ShHandle ShConstructCompiler(EShLanguage language, EShSpec spec, const TBuiltInResource* resources)
{
if (!InitThread())
@@ -131,17 +160,6 @@
}
//
-// Cleanup symbol tables
-//
-int ShFinalize()
-{
- if (!DetachProcess())
- return 0;
-
- return 1;
-}
-
-//
// Do an actual compile on the given strings. The result is left
// in the given compile object.
//