Increased varyings limit
For OpenGL ES 3.0, the varyings limit must be increased in order
to meet the new lower limit. This doesn't solve how the varyings
count is still verified at compile time instead of link time, but
it allows us to remove an UNIMPLEMENTED() call.
Bug b/37069434
Change-Id: Ib6641352b625d56c7c3cab119fadcdc19f794a5b
Reviewed-on: https://swiftshader-review.googlesource.com/9188
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Main/Config.hpp b/src/Main/Config.hpp
index 9a7320f..9ea1e18 100644
--- a/src/Main/Config.hpp
+++ b/src/Main/Config.hpp
@@ -87,8 +87,8 @@
FRAGMENT_UNIFORM_VECTORS = 224,
VERTEX_UNIFORM_VECTORS = 256,
MAX_VERTEX_INPUTS = 16,
- MAX_VERTEX_OUTPUTS = 12,
- MAX_FRAGMENT_INPUTS = 10,
+ MAX_VERTEX_OUTPUTS = 22,
+ MAX_FRAGMENT_INPUTS = 20,
MAX_FRAGMENT_UNIFORM_BLOCKS = 12,
MAX_VERTEX_UNIFORM_BLOCKS = 12,
MAX_UNIFORM_BUFFER_BINDINGS = MAX_FRAGMENT_UNIFORM_BLOCKS + MAX_VERTEX_UNIFORM_BLOCKS, // Limited to 127 by SourceParameter.bufferIndex in Shader.hpp
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 087f781..0ebc9ed 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -2179,10 +2179,7 @@
*params = MAX_UNIFORM_BUFFER_BINDINGS;
return true;
case GL_MAX_VARYING_COMPONENTS:
- UNIMPLEMENTED();
- // FIXME: should be MAX_VARYING_VECTORS * 4, but MAX_VARYING_VECTORS
- // must be increased (see MAX_VERTEX_OUTPUTS and MAX_FRAGMENT_INPUTS)
- *params = 60;
+ *params = MAX_VARYING_VECTORS * 4;
return true;
case GL_MAX_VERTEX_OUTPUT_COMPONENTS:
*params = MAX_VERTEX_OUTPUT_VECTORS * 4;
diff --git a/src/OpenGL/libGLESv2/Context.h b/src/OpenGL/libGLESv2/Context.h
index e31547e..6412ffb 100644
--- a/src/OpenGL/libGLESv2/Context.h
+++ b/src/OpenGL/libGLESv2/Context.h
@@ -77,7 +77,7 @@
MAX_VERTEX_ATTRIBS = sw::MAX_VERTEX_INPUTS,
MAX_UNIFORM_VECTORS = 256, // Device limit
MAX_VERTEX_UNIFORM_VECTORS = sw::VERTEX_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange
- MAX_VARYING_VECTORS = 10,
+ MAX_VARYING_VECTORS = MIN(sw::MAX_FRAGMENT_INPUTS, sw::MAX_VERTEX_OUTPUTS),
MAX_TEXTURE_IMAGE_UNITS = sw::TEXTURE_IMAGE_UNITS,
MAX_VERTEX_TEXTURE_IMAGE_UNITS = sw::VERTEX_TEXTURE_IMAGE_UNITS,
MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + MAX_VERTEX_TEXTURE_IMAGE_UNITS,