Fix shader call stack size mismatch

https://swiftshader-review.googlesource.com/c/SwiftShader/+/16328
increased the maximum call depth validated by the GLSL ES compiler,
without increasing the stack size supported by our back-end.

The sw::MAX_SHADER_CALL_STACK_SIZE of the back-end is now statically
passed to an es2::MAX_SHADER_CALL_STACK_SIZE (has to remain equal or
smaller) and then passed to the GLSL compiler's resources limits.

Bug b/123587120

Change-Id: I9a56d5b4e980dc0881c238669d2b786bb3c855e3
Reviewed-on: https://swiftshader-review.googlesource.com/c/24628
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Main/Config.hpp b/src/Main/Config.hpp
index d2ba6ff..f0e9563 100644
--- a/src/Main/Config.hpp
+++ b/src/Main/Config.hpp
@@ -100,7 +100,7 @@
 		MAX_SHADER_CALL_SITES = 2048,
 		MAX_SHADER_NESTED_LOOPS = 4,
 		MAX_SHADER_NESTED_IFS = 24 + 24,
-		MAX_SHADER_CALL_STACK_SIZE = 16,
+		MAX_SHADER_CALL_STACK_SIZE = 64,
 		MAX_SHADER_ENABLE_STACK_SIZE = 1 + 24,
 	};
 }
diff --git a/src/OpenGL/libGLESv2/Context.h b/src/OpenGL/libGLESv2/Context.h
index 5e3449f..bb85011 100644
--- a/src/OpenGL/libGLESv2/Context.h
+++ b/src/OpenGL/libGLESv2/Context.h
@@ -105,6 +105,7 @@
 	MAX_UNIFORM_BUFFER_BINDINGS = sw::MAX_UNIFORM_BUFFER_BINDINGS,
 	UNIFORM_BUFFER_OFFSET_ALIGNMENT = 4,
 	NUM_PROGRAM_BINARY_FORMATS = 0,
+	MAX_SHADER_CALL_STACK_SIZE = sw::MAX_SHADER_CALL_STACK_SIZE,
 };
 
 const GLenum compressedTextureFormats[] =
diff --git a/src/OpenGL/libGLESv2/Shader.cpp b/src/OpenGL/libGLESv2/Shader.cpp
index 1b77941..ba19865 100644
--- a/src/OpenGL/libGLESv2/Shader.cpp
+++ b/src/OpenGL/libGLESv2/Shader.cpp
@@ -183,7 +183,7 @@
 	resources.OES_EGL_image_external_essl3 = 1;
 	resources.EXT_draw_buffers = 1;
 	resources.ARB_texture_rectangle = 1;
-	resources.MaxCallStackDepth = 64;
+	resources.MaxCallStackDepth = MAX_SHADER_CALL_STACK_SIZE;
 	assembler->Init(resources);
 
 	return assembler;