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

Kenneth Graunke kenneth at whitecape.org
Thu Jun 26 11:02:27 PDT 2014


On Thursday, June 26, 2014 07:31:20 PM Knut Andre Tidemann 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.
> 
> >
> > 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).

Right.  The profile mechanism was introduced with 3.2.

3.1 is a total anomaly - by default, it removes all of the deprecated 
functionality (like the 3.2 core profile).  Implementations can add it back by 
exposing the GL_ARB_compatibility extension.  Apps just ask for 3.1 and get 
one or the other, with little control over which they get.

Using 3.1 correctly is hard.  3.2 is much nicer.

--Ken
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140626/993c1d00/attachment.sig>


More information about the mesa-dev mailing list