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

Ilia Mirkin imirkin at alum.mit.edu
Thu Jun 26 10:32:53 PDT 2014


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?

>
>
>>
>> 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