Merge "Add support for ES 3.2." into gles32-dev
diff --git a/modules/glshared/glsTextureStateQueryTests.cpp b/modules/glshared/glsTextureStateQueryTests.cpp
index 945c238..d39b7ce 100644
--- a/modules/glshared/glsTextureStateQueryTests.cpp
+++ b/modules/glshared/glsTextureStateQueryTests.cpp
@@ -442,9 +442,116 @@
} // es31
+namespace es32
+{
+
+static bool isCoreTextureTarget (glw::GLenum target)
+{
+ return es31::isCoreTextureTarget(target) ||
+ target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY ||
+ target == GL_TEXTURE_BUFFER ||
+ target == GL_TEXTURE_CUBE_MAP_ARRAY;
+}
+
+static RequiredExtensions getTextureTargetExtension (glw::GLenum target)
+{
+ DE_UNREF(target);
+ DE_ASSERT(false);
+ return RequiredExtensions();
+}
+
+static bool isCoreTextureParam (glw::GLenum pname)
+{
+ return es31::isCoreTextureParam(pname) ||
+ pname == GL_TEXTURE_BORDER_COLOR;
+}
+
+static RequiredExtensions getTextureParamExtension (glw::GLenum pname)
+{
+ switch (pname)
+ {
+ case GL_TEXTURE_SRGB_DECODE_EXT: return RequiredExtensions("GL_EXT_texture_sRGB_decode");
+ default:
+ DE_ASSERT(false);
+ return RequiredExtensions();
+ }
+}
+
+static bool isCoreQuery (QueryType query)
+{
+ return es31::isCoreQuery(query) ||
+ query == QUERY_TEXTURE_PARAM_PURE_INTEGER ||
+ query == QUERY_TEXTURE_PARAM_PURE_INTEGER ||
+ query == QUERY_TEXTURE_PARAM_PURE_UNSIGNED_INTEGER ||
+ query == QUERY_TEXTURE_PARAM_PURE_INTEGER_VEC4 ||
+ query == QUERY_TEXTURE_PARAM_PURE_UNSIGNED_INTEGER_VEC4 ||
+ query == QUERY_SAMPLER_PARAM_PURE_INTEGER ||
+ query == QUERY_SAMPLER_PARAM_PURE_UNSIGNED_INTEGER ||
+ query == QUERY_SAMPLER_PARAM_PURE_INTEGER_VEC4 ||
+ query == QUERY_SAMPLER_PARAM_PURE_UNSIGNED_INTEGER_VEC4;
+}
+
+static RequiredExtensions getQueryExtension (QueryType query)
+{
+ DE_UNREF(query);
+ DE_ASSERT(false);
+ return RequiredExtensions();
+}
+
+static bool isCoreTester (TesterType tester)
+{
+#define COMPARE_PURE_SETTERS(TESTER, X) (TESTER == X ## _SET_PURE_INT) || (TESTER == X ## _SET_PURE_UINT)
+
+ return es31::isCoreTester(tester) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_SWIZZLE_R) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_SWIZZLE_G) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_SWIZZLE_B) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_SWIZZLE_A) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_WRAP_S) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_WRAP_T) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_WRAP_R) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_MAG_FILTER) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_MIN_FILTER) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_MIN_LOD) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_MAX_LOD) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_BASE_LEVEL) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_MAX_LEVEL) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_COMPARE_MODE) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_TEXTURE_COMPARE_FUNC) ||
+ COMPARE_PURE_SETTERS(tester, TESTER_DEPTH_STENCIL_TEXTURE_MODE) ||
+ tester == TESTER_TEXTURE_WRAP_S_CLAMP_TO_BORDER ||
+ tester == TESTER_TEXTURE_WRAP_T_CLAMP_TO_BORDER ||
+ tester == TESTER_TEXTURE_WRAP_R_CLAMP_TO_BORDER ||
+ tester == TESTER_TEXTURE_BORDER_COLOR;
+
+#undef COMPARE_PURE_SETTERS
+}
+
+static RequiredExtensions getTesterExtension (TesterType tester)
+{
+#define CASE_PURE_SETTERS(X) case X ## _SET_PURE_INT: case X ## _SET_PURE_UINT
+
+ switch (tester)
+ {
+ CASE_PURE_SETTERS(TESTER_TEXTURE_SRGB_DECODE_EXT):
+ case TESTER_TEXTURE_SRGB_DECODE_EXT:
+ return RequiredExtensions("GL_EXT_texture_sRGB_decode");
+
+ default:
+ DE_ASSERT(false);
+ return RequiredExtensions();
+ }
+
+#undef CASE_PURE_SETTERS
+}
+
+} // es32
+
static bool isCoreTextureTarget (const glu::ContextType& contextType, glw::GLenum target)
{
- if (contextSupports(contextType, glu::ApiType::es(3,1)))
+ if (contextSupports(contextType, glu::ApiType::es(3,2)))
+ return es32::isCoreTextureTarget(target);
+ else if (contextSupports(contextType, glu::ApiType::es(3,1)))
return es31::isCoreTextureTarget(target);
else if (contextSupports(contextType, glu::ApiType::es(3,0)))
return es30::isCoreTextureTarget(target);
@@ -457,7 +564,9 @@
static bool isCoreTextureParam (const glu::ContextType& contextType, glw::GLenum pname)
{
- if (contextSupports(contextType, glu::ApiType::es(3,1)))
+ if (contextSupports(contextType, glu::ApiType::es(3,2)))
+ return es32::isCoreTextureParam(pname);
+ else if (contextSupports(contextType, glu::ApiType::es(3,1)))
return es31::isCoreTextureParam(pname);
else if (contextSupports(contextType, glu::ApiType::es(3,0)))
return es30::isCoreTextureParam(pname);
@@ -470,7 +579,9 @@
static bool isCoreQuery (const glu::ContextType& contextType, QueryType query)
{
- if (contextSupports(contextType, glu::ApiType::es(3,1)))
+ if (contextSupports(contextType, glu::ApiType::es(3,2)))
+ return es32::isCoreQuery(query);
+ else if (contextSupports(contextType, glu::ApiType::es(3,1)))
return es31::isCoreQuery(query);
else if (contextSupports(contextType, glu::ApiType::es(3,0)))
return es30::isCoreQuery(query);
@@ -483,7 +594,9 @@
static bool isCoreTester (const glu::ContextType& contextType, TesterType tester)
{
- if (contextSupports(contextType, glu::ApiType::es(3,1)))
+ if (contextSupports(contextType, glu::ApiType::es(3,2)))
+ return es32::isCoreTester(tester);
+ else if (contextSupports(contextType, glu::ApiType::es(3,1)))
return es31::isCoreTester(tester);
else if (contextSupports(contextType, glu::ApiType::es(3,0)))
return es30::isCoreTester(tester);
@@ -498,6 +611,8 @@
{
DE_ASSERT(!isCoreTextureTarget(contextType, target));
+ if (contextSupports(contextType, glu::ApiType::es(3,2)))
+ return es32::getTextureTargetExtension(target);
if (contextSupports(contextType, glu::ApiType::es(3,1)))
return es31::getTextureTargetExtension(target);
else if (contextSupports(contextType, glu::ApiType::es(3,0)))
@@ -513,7 +628,9 @@
{
DE_ASSERT(!isCoreTextureParam(contextType, pname));
- if (contextSupports(contextType, glu::ApiType::es(3,1)))
+ if (contextSupports(contextType, glu::ApiType::es(3,2)))
+ return es32::getTextureParamExtension(pname);
+ else if (contextSupports(contextType, glu::ApiType::es(3,1)))
return es31::getTextureParamExtension(pname);
else if (contextSupports(contextType, glu::ApiType::es(3,0)))
return es30::getTextureParamExtension(pname);
@@ -528,7 +645,9 @@
{
DE_ASSERT(!isCoreQuery(contextType, query));
- if (contextSupports(contextType, glu::ApiType::es(3,1)))
+ if (contextSupports(contextType, glu::ApiType::es(3,2)))
+ return es32::getQueryExtension(query);
+ else if (contextSupports(contextType, glu::ApiType::es(3,1)))
return es31::getQueryExtension(query);
else if (contextSupports(contextType, glu::ApiType::es(3,0)))
return es30::getQueryExtension(query);
@@ -543,7 +662,9 @@
{
DE_ASSERT(!isCoreTester(contextType, tester));
- if (contextSupports(contextType, glu::ApiType::es(3,1)))
+ if (contextSupports(contextType, glu::ApiType::es(3,2)))
+ return es32::getTesterExtension(tester);
+ else if (contextSupports(contextType, glu::ApiType::es(3,1)))
return es31::getTesterExtension(tester);
else if (contextSupports(contextType, glu::ApiType::es(3,0)))
return es30::getTesterExtension(tester);