[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