mesa/tests: Add ES3.0 dispatch table sanity test
authorMatt Turner <mattst88@gmail.com>
Tue, 16 Oct 2012 23:20:36 +0000 (16:20 -0700)
committerMatt Turner <mattst88@gmail.com>
Thu, 25 Oct 2012 21:29:05 +0000 (14:29 -0700)
Since ES3.0 is backward compatible with 2.0, we check that all the 2.0
functions and additional 3.0 functions exist.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/mesa/main/tests/dispatch_sanity.cpp

index c50f40b812fd7dc2a4834eab7dc878f6c8af4e77..119563393910b1b6da9c0be798d72e6e10e7e454 100644 (file)
@@ -73,6 +73,7 @@ struct function {
 };
 
 extern const struct function gles2_functions_possible[];
+extern const struct function gles3_functions_possible[];
 
 #if FEATURE_ES1
 extern "C" _glapi_table *_mesa_create_exec_table_es1(void);
@@ -170,6 +171,25 @@ TEST_F(DispatchSanity_test, GLES2)
    validate_nops((_glapi_proc *) ctx.Exec);
 }
 
+TEST_F(DispatchSanity_test, GLES3)
+{
+   ctx.Version = 30;
+   _mesa_initialize_context(&ctx,
+                            API_OPENGLES2, //api,
+                            &visual,
+                            NULL, //&share_list,
+                            &driver_functions);
+
+   _swrast_CreateContext(&ctx);
+   _vbo_CreateContext(&ctx);
+   _tnl_CreateContext(&ctx);
+   _swsetup_CreateContext(&ctx);
+
+   validate_functions((_glapi_proc *) ctx.Exec, gles2_functions_possible);
+   validate_functions((_glapi_proc *) ctx.Exec, gles3_functions_possible);
+   validate_nops((_glapi_proc *) ctx.Exec);
+}
+
 #if FEATURE_ES1
 const struct function gles11_functions_possible[] = {
    { "glActiveTexture", _gloffset_ActiveTextureARB },
@@ -530,3 +550,132 @@ const struct function gles2_functions_possible[] = {
    { "glViewport", _gloffset_Viewport },
    { NULL, -1 }
 };
+
+const struct function gles3_functions_possible[] = {
+   { "glBeginQuery", -1 },
+   { "glBeginTransformFeedback", -1 },
+   { "glBindBufferBase", -1 },
+   { "glBindBufferRange", -1 },
+   { "glBindSampler", -1 },
+   { "glBindTransformFeedback", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glBindVertexArray", -1 },
+   { "glBlitFramebuffer", -1 },
+   { "glClearBufferfi", -1 },
+   { "glClearBufferfv", -1 },
+   { "glClearBufferiv", -1 },
+   { "glClearBufferuiv", -1 },
+   { "glClientWaitSync", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glCompressedTexImage3D", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glCompressedTexSubImage3D", -1 },
+   { "glCopyBufferSubData", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glCopyTexSubImage3D", -1 },
+   { "glDeleteQueries", -1 },
+   { "glDeleteSamplers", -1 },
+   { "glDeleteSync", -1 },
+   { "glDeleteTransformFeedbacks", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glDeleteVertexArrays", -1 },
+   { "glDrawArraysInstanced", -1 },
+   // We check for the aliased -NV version in GLES 2
+   // { "glDrawBuffers", -1 },
+   { "glDrawElementsInstanced", -1 },
+   { "glDrawRangeElements", -1 },
+   { "glEndQuery", -1 },
+   { "glEndTransformFeedback", -1 },
+   { "glFenceSync", -1 },
+   // We check for the aliased -EXT version in GLES 2
+   // { "glFlushMappedBufferRange", -1 },
+   { "glFramebufferTextureLayer", -1 },
+   { "glGenQueries", -1 },
+   { "glGenSamplers", -1 },
+   { "glGenTransformFeedbacks", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glGenVertexArrays", -1 },
+   { "glGetActiveUniformBlockiv", -1 },
+   { "glGetActiveUniformBlockName", -1 },
+   { "glGetActiveUniformsiv", -1 },
+   // We have an implementation (added Jan 1 2010, 1fbc7193) but never tested...
+   // { "glGetBufferParameteri64v", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glGetBufferPointerv", -1 },
+   { "glGetFragDataLocation", -1 },
+   /// XXX: Missing implementation of glGetInteger64i_v
+   // { "glGetInteger64i_v", -1 },
+   { "glGetInteger64v", -1 },
+   { "glGetIntegeri_v", -1 },
+   // XXX: Missing implementation of ARB_internalformat_query
+   // { "glGetInternalformativ", -1 },
+   // XXX: Missing implementation of ARB_get_program_binary
+   /// { "glGetProgramBinary", -1 },
+   { "glGetQueryiv", -1 },
+   { "glGetQueryObjectuiv", -1 },
+   { "glGetSamplerParameterfv", -1 },
+   { "glGetSamplerParameteriv", -1 },
+   { "glGetStringi", -1 },
+   { "glGetSynciv", -1 },
+   { "glGetTransformFeedbackVarying", -1 },
+   { "glGetUniformBlockIndex", -1 },
+   { "glGetUniformIndices", -1 },
+   { "glGetUniformuiv", -1 },
+   { "glGetVertexAttribIiv", -1 },
+   { "glGetVertexAttribIuiv", -1 },
+   { "glInvalidateFramebuffer", -1 },
+   { "glInvalidateSubFramebuffer", -1 },
+   { "glIsQuery", -1 },
+   { "glIsSampler", -1 },
+   { "glIsSync", -1 },
+   { "glIsTransformFeedback", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glIsVertexArray", -1 },
+   // We check for the aliased -EXT version in GLES 2
+   // { "glMapBufferRange", -1 },
+   { "glPauseTransformFeedback", -1 },
+   // XXX: Missing implementation of ARB_get_program_binary
+   // { "glProgramBinary", -1 },
+   // XXX: Missing implementation of ARB_get_program_binary
+   // { "glProgramParameteri", -1 },
+   // We check for the aliased -NV version in GLES 2
+   // { "glReadBuffer", -1 },
+   { "glRenderbufferStorageMultisample", -1 },
+   { "glResumeTransformFeedback", -1 },
+   { "glSamplerParameterf", -1 },
+   { "glSamplerParameterfv", -1 },
+   { "glSamplerParameteri", -1 },
+   { "glSamplerParameteriv", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glTexImage3D", -1 },
+   { "glTexStorage2D", -1 },
+   { "glTexStorage3D", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glTexSubImage3D", -1 },
+   { "glTransformFeedbackVaryings", -1 },
+   { "glUniform1ui", -1 },
+   { "glUniform1uiv", -1 },
+   { "glUniform2ui", -1 },
+   { "glUniform2uiv", -1 },
+   { "glUniform3ui", -1 },
+   { "glUniform3uiv", -1 },
+   { "glUniform4ui", -1 },
+   { "glUniform4uiv", -1 },
+   { "glUniformBlockBinding", -1 },
+   { "glUniformMatrix2x3fv", -1 },
+   { "glUniformMatrix2x4fv", -1 },
+   { "glUniformMatrix3x2fv", -1 },
+   { "glUniformMatrix3x4fv", -1 },
+   { "glUniformMatrix4x2fv", -1 },
+   { "glUniformMatrix4x3fv", -1 },
+   // We check for the aliased -OES version in GLES 2
+   // { "glUnmapBuffer", -1 },
+   { "glVertexAttribDivisor", -1 },
+   { "glVertexAttribI4i", -1 },
+   { "glVertexAttribI4iv", -1 },
+   { "glVertexAttribI4ui", -1 },
+   { "glVertexAttribI4uiv", -1 },
+   { "glVertexAttribIPointer", -1 },
+   { "glWaitSync", -1 },
+   { NULL, -1 }
+};