[Mesa-dev] [PATCH 15/19] mesa: Don't set shaderapi dispatch pointers for many things in ES2 or core
Ian Romanick
idr at freedesktop.org
Mon Sep 10 00:31:18 PDT 2012
On 09/08/2012 12:02 AM, Eric Anholt wrote:
> Ian Romanick <idr at freedesktop.org> writes:
>
>> From: Ian Romanick <ian.d.romanick at intel.com>
>>
>> NOTE: This is a candidate for the 9.0 branch
>
> GL_ARB_shader_objects and friends are marked as GL not GLL in
> extensions.c -- should their functions still be exposed if we're
> exposing the extensions?
Oops. Good catch.
>> /* GL_EXT_gpu_shader4 / GL 3.0 */
>> - SET_BindFragDataLocationEXT(exec, _mesa_BindFragDataLocation);
>> - SET_GetFragDataLocationEXT(exec, _mesa_GetFragDataLocation);
>> + if (ctx->API != API_OPENGLES2 || _mesa_is_gles3(ctx)) {
>> + SET_BindFragDataLocationEXT(exec, _mesa_BindFragDataLocation);
>> + }
>> + if (ctx->API != API_OPENGLES2 || _mesa_is_gles3(ctx)) {
>> + SET_GetFragDataLocationEXT(exec, _mesa_GetFragDataLocation);
>> + }
>
> Fold these two ifs together? Also, should the EXTs actually be exposed
> on gles3? (seems like just the core versions below should)
The EXT and non-EXT functions go through the same dispatch slot. This
is an area where we have a bug that I don't know how to fix.
eglGetProcAddress will give a valid, working function pointer for
functions in ES2 that are not valid in ES2. That is,
f1 = eglGetProcAddress("glMapBufferOES");
f2 = eglGetProcAddress("glMapBufferARB");
will set f1 and f2 to the same pointer. I believe it will do the same
for desktop GL.
That said, I'm not sure we care.
>> @@ -1778,8 +1788,10 @@ _mesa_init_shader_dispatch(struct _glapi_table *exec)
>> SET_ShaderBinary(exec, _mesa_ShaderBinary);
>>
>> /* GL_ARB_blend_func_extended */
>> - SET_BindFragDataLocationIndexed(exec, _mesa_BindFragDataLocationIndexed);
>> - SET_GetFragDataIndex(exec, _mesa_GetFragDataIndex);
>> + if (ctx->API != API_OPENGLES2) {
>> + SET_BindFragDataLocationIndexed(exec, _mesa_BindFragDataLocationIndexed);
>> + SET_GetFragDataIndex(exec, _mesa_GetFragDataIndex);
>> + }
>> #endif /* FEATURE_GL */
>> }
More information about the mesa-dev
mailing list