[Mesa-dev] [PATCH] egl/gallium: implemlent EGL_KHR_create_context.

Knut Andre Tidemann knut.tidemann at gmail.com
Thu Jun 26 10:34:41 PDT 2014



On 06/26/2014 07:32 PM, Ilia Mirkin wrote:
> On Thu, Jun 26, 2014 at 1:31 PM, Knut Andre Tidemann
> <knut.tidemann at gmail.com> wrote:
>>
>> On 06/26/2014 07:25 PM, Ilia Mirkin wrote:
>>>
>>> On Thu, Jun 26, 2014 at 1:08 PM, Knut Andre Tidemann
>>> <knut.tidemann at gmail.com> wrote:
>>>>
>>>> ---
>>>>    src/gallium/state_trackers/egl/common/egl_g3d.c     | 1 +
>>>>    src/gallium/state_trackers/egl/common/egl_g3d_api.c | 8 ++++++++
>>>>    2 files changed, 9 insertions(+)
>>>>
>>>> diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.c
>>>> b/src/gallium/state_trackers/egl/common/egl_g3d.c
>>>> index d3f5e92..22b5e4a 100644
>>>> --- a/src/gallium/state_trackers/egl/common/egl_g3d.c
>>>> +++ b/src/gallium/state_trackers/egl/common/egl_g3d.c
>>>> @@ -584,6 +584,7 @@ egl_g3d_initialize(_EGLDriver *drv, _EGLDisplay *dpy)
>>>>       dpy->Extensions.KHR_fence_sync = EGL_TRUE;
>>>>
>>>>       dpy->Extensions.KHR_surfaceless_context = EGL_TRUE;
>>>> +   dpy->Extensions.KHR_create_context = EGL_TRUE;
>>>>
>>>>       if (dpy->Platform == _EGL_PLATFORM_DRM) {
>>>>          dpy->Extensions.MESA_drm_display = EGL_TRUE;
>>>> diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_api.c
>>>> b/src/gallium/state_trackers/egl/common/egl_g3d_api.c
>>>> index b19d899..4356ab8 100644
>>>> --- a/src/gallium/state_trackers/egl/common/egl_g3d_api.c
>>>> +++ b/src/gallium/state_trackers/egl/common/egl_g3d_api.c
>>>> @@ -72,6 +72,11 @@ egl_g3d_choose_st(_EGLDriver *drv, _EGLContext *ctx,
>>>>          break;
>>>>       case EGL_OPENGL_API:
>>>>          api = ST_API_OPENGL;
>>>> +      if(((ctx->ClientMajorVersion > 4) ||
>>>
>>>
>>> Did you mean > 3 here?
>>
>>
>> No 4, is correct, to catch GL 4.x and up, while the rest of the statement
>> takes care of 3.2 and up.
>
> 4 > 4 == false though... Or am I missing something obvious?
>

Sorry!

This was supposed to be >= 4 ...

Will fix it.

>>
>>
>>>
>>> Also, the convention used throughout mesa is to put a space after
>>> keywords like 'if', so 'if (' vs 'if('.
>>>
>>
>> I'll fix this.
>>
>>
>>>> +            (ctx->ClientMajorVersion == 3 && ctx->ClientMinorVersion >=
>>>> 2)) &&
>>>
>>>
>>> I don't know a whole lot about this, but you can get a core context
>>> with 3.1 as well... (in fact, mesa only supports core contexts for
>>> 3.1+).
>>>
>>
>> The way this is implemented in the intel egl driver and the
>> EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is only defind for 3.2 contexts and
>> above (as noted in the documentation).
>>
>>
>>>> +            ctx->Profile == EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR) {
>>>> +         *profile = ST_PROFILE_OPENGL_CORE;
>>>> +      }
>>>>          break;
>>>>       default:
>>>>          _eglLog(_EGL_WARNING, "unknown client API 0x%04x",
>>>> ctx->ClientAPI);
>>>> @@ -166,6 +171,9 @@ egl_g3d_create_context(_EGLDriver *drv, _EGLDisplay
>>>> *dpy, _EGLConfig *conf,
>>>>       if (gconf)
>>>>          stattribs.visual = gconf->stvis;
>>>>
>>>> +   if(gctx->base.Flags & EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR)
>>>> +      stattribs.flags = ST_CONTEXT_FLAG_DEBUG;
>>>> +
>>>>       gctx->stapi = egl_g3d_choose_st(drv, &gctx->base,
>>>> &stattribs.profile);
>>>>       if (!gctx->stapi) {
>>>>          FREE(gctx);
>>>> --
>>>> 2.0.0
>>>>
>>>> _______________________________________________
>>>> mesa-dev mailing list
>>>> mesa-dev at lists.freedesktop.org
>>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list