On 30 October 2012 10:43, Paul Berry <span dir="ltr"><<a href="mailto:stereotype441@gmail.com" target="_blank">stereotype441@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

This patch modifies context creation code for GLES1 to use<br>
_mesa_create_exec_table() (which is used for all other APIs) instead<br>
of the GLES1-specific _mesa_create_exec_table_es1().<br>
<br>
There is a slight change in functionality.  As a result of a mistake<br>
in the code generation of _mesa_create_exec_table_es1(), it does not<br>
include glFlushMappedBufferRangeEXT or glMapBufferRangeEXT (this is<br>
because when support for those two functions was added in commit<br>
762d9ac, src/mesa/main/APIspec.xml wasn't updated).  With this patch,<br>
glFlushMappedBufferRangeEXT and glMapBufferRangeEXT are properly<br>
included in the dispatch table.  Accordingly, dispatch_sanity.cpp is<br>
modified to expect these two functions to be present.<br>
<br>
Since _mesa_create_exec_table() is available even when not building<br>
ES1 support, we can now test GLES1.1 dispatch in all builds.<br></blockquote><div><br>Whoops, Ian pointed out to me that this won't work, since patch 7/9 only populates the GLES1-specific dispatch table entries when FEATURE_ES1 is enabled.  I'll restore the #if FEATURE_ES1 checks, and then after this series lands, I'll do a follow-up series that removes just enough of the FEATURE_ES1 conditions so that we can test GLES1.1 dispatch in all builds.<br>

 </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
---<br>
 src/mesa/main/context.c                 | 27 ++-------------------------<br>
 src/mesa/main/tests/dispatch_sanity.cpp | 29 +++++++++++++++++------------<br>
 2 files changed, 19 insertions(+), 37 deletions(-)<br>
<br>
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c<br>
index a510738..a4dedee 100644<br>
--- a/src/mesa/main/context.c<br>
+++ b/src/mesa/main/context.c<br>
@@ -422,14 +422,7 @@ one_time_init( struct gl_context *ctx )<br>
    if (!(api_init_mask & (1 << ctx->API))) {<br>
       _mesa_init_get_hash(ctx);<br>
<br>
-      /*<br>
-       * This is fine as ES does not use the remap table, but it may not be<br>
-       * future-proof.  We cannot always initialize the remap table because<br>
-       * when an app is linked to libGLES*, there are not enough dynamic<br>
-       * entries.<br>
-       */<br>
-      if (_mesa_is_desktop_gl(ctx) || ctx->API == API_OPENGLES2)<br>
-         _mesa_init_remap_table();<br>
+      _mesa_init_remap_table();<br>
    }<br>
<br>
    api_init_mask |= 1 << ctx->API;<br>
@@ -943,23 +936,7 @@ _mesa_initialize_context(struct gl_context *ctx,<br>
    }<br>
<br>
    /* setup the API dispatch tables */<br>
-   switch (ctx->API) {<br>
-#if FEATURE_GL || FEATURE_ES2<br>
-   case API_OPENGL:<br>
-   case API_OPENGL_CORE:<br>
-   case API_OPENGLES2:<br>
-      ctx->Exec = _mesa_create_exec_table(ctx);<br>
-      break;<br>
-#endif<br>
-#if FEATURE_ES1<br>
-   case API_OPENGLES:<br>
-      ctx->Exec = _mesa_create_exec_table_es1();<br>
-      break;<br>
-#endif<br>
-   default:<br>
-      _mesa_problem(ctx, "unknown or unsupported API");<br>
-      break;<br>
-   }<br>
+   ctx->Exec = _mesa_create_exec_table(ctx);<br>
<br>
    if (!ctx->Exec) {<br>
       _mesa_reference_shared_state(ctx, &ctx->Shared, NULL);<br>
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp<br>
index 1195633..58313cd 100644<br>
--- a/src/mesa/main/tests/dispatch_sanity.cpp<br>
+++ b/src/mesa/main/tests/dispatch_sanity.cpp<br>
@@ -72,14 +72,10 @@ struct function {<br>
    int offset;<br>
 };<br>
<br>
+extern const struct function gles11_functions_possible[];<br>
 extern const struct function gles2_functions_possible[];<br>
 extern const struct function gles3_functions_possible[];<br>
<br>
-#if FEATURE_ES1<br>
-extern "C" _glapi_table *_mesa_create_exec_table_es1(void);<br>
-extern const struct function gles11_functions_possible[];<br>
-#endif /* FEATURE_ES1 */<br>
-<br>
 class DispatchSanity_test : public ::testing::Test {<br>
 public:<br>
    virtual void SetUp();<br>
@@ -144,14 +140,23 @@ validate_nops(const _glapi_proc *table)<br>
    }<br>
 }<br>
<br>
-#if FEATURE_ES1<br>
 TEST_F(DispatchSanity_test, GLES11)<br>
 {<br>
-   _glapi_proc *exec = (_glapi_proc *) _mesa_create_exec_table_es1();<br>
-   validate_functions(exec, gles11_functions_possible);<br>
-   validate_nops(exec);<br>
+   ctx.Version = 11;<br>
+   _mesa_initialize_context(&ctx,<br>
+                            API_OPENGLES,<br>
+                            &visual,<br>
+                            NULL /* share_list */,<br>
+                            &driver_functions);<br>
+<br>
+   _swrast_CreateContext(&ctx);<br>
+   _vbo_CreateContext(&ctx);<br>
+   _tnl_CreateContext(&ctx);<br>
+   _swsetup_CreateContext(&ctx);<br>
+<br>
+   validate_functions((_glapi_proc *) ctx.Exec, gles11_functions_possible);<br>
+   validate_nops((_glapi_proc *) ctx.Exec);<br>
 }<br>
-#endif /* FEATURE_ES1 */<br>
<br>
 TEST_F(DispatchSanity_test, GLES2)<br>
 {<br>
@@ -190,7 +195,6 @@ TEST_F(DispatchSanity_test, GLES3)<br>
    validate_nops((_glapi_proc *) ctx.Exec);<br>
 }<br>
<br>
-#if FEATURE_ES1<br>
 const struct function gles11_functions_possible[] = {<br>
    { "glActiveTexture", _gloffset_ActiveTextureARB },<br>
    { "glAlphaFunc", _gloffset_AlphaFunc },<br>
@@ -251,6 +255,7 @@ const struct function gles11_functions_possible[] = {<br>
    { "glEnableClientState", _gloffset_EnableClientState },<br>
    { "glFinish", _gloffset_Finish },<br>
    { "glFlush", _gloffset_Flush },<br>
+   { "glFlushMappedBufferRangeEXT", -1 },<br>
    { "glFogf", _gloffset_Fogf },<br>
    { "glFogfv", _gloffset_Fogfv },<br>
    { "glFogx", -1 },<br>
@@ -312,6 +317,7 @@ const struct function gles11_functions_possible[] = {<br>
    { "glLoadMatrixx", -1 },<br>
    { "glLogicOp", _gloffset_LogicOp },<br>
    { "glMapBufferOES", -1 },<br>
+   { "glMapBufferRangeEXT", -1 },<br>
    { "glMaterialf", _gloffset_Materialf },<br>
    { "glMaterialfv", _gloffset_Materialfv },<br>
    { "glMaterialx", -1 },<br>
@@ -382,7 +388,6 @@ const struct function gles11_functions_possible[] = {<br>
    { "glViewport", _gloffset_Viewport },<br>
    { NULL, -1 }<br>
 };<br>
-#endif /* FEATURE_ES1 */<br>
<br>
 const struct function gles2_functions_possible[] = {<br>
    { "glActiveTexture", _gloffset_ActiveTextureARB },<br>
<span><font color="#888888">--<br>
1.7.12.4<br>
<br>
</font></span></blockquote></div><br>