[Mesa-dev] [PATCH 8/9] dispatch: stop using _mesa_create_exec_table_es1() for GLES1.

Paul Berry stereotype441 at gmail.com
Tue Oct 30 12:08:19 PDT 2012


On 30 October 2012 10:43, Paul Berry <stereotype441 at gmail.com> wrote:

> This patch modifies context creation code for GLES1 to use
> _mesa_create_exec_table() (which is used for all other APIs) instead
> of the GLES1-specific _mesa_create_exec_table_es1().
>
> There is a slight change in functionality.  As a result of a mistake
> in the code generation of _mesa_create_exec_table_es1(), it does not
> include glFlushMappedBufferRangeEXT or glMapBufferRangeEXT (this is
> because when support for those two functions was added in commit
> 762d9ac, src/mesa/main/APIspec.xml wasn't updated).  With this patch,
> glFlushMappedBufferRangeEXT and glMapBufferRangeEXT are properly
> included in the dispatch table.  Accordingly, dispatch_sanity.cpp is
> modified to expect these two functions to be present.
>
> Since _mesa_create_exec_table() is available even when not building
> ES1 support, we can now test GLES1.1 dispatch in all builds.
>

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.


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


More information about the mesa-dev mailing list