[Mesa-dev] [PATCH 1/2] mesa : MESA_framebuffer_flip_y extension
Chad Versace
chadversary at chromium.org
Wed Jun 27 22:31:13 UTC 2018
On Wed 27 Jun 2018, Chad Versace wrote:
> On Fri 15 Jun 2018, Fritz Koenig wrote:
> > On Tue, Jun 12, 2018 at 12:28 PM Chad Versace <chadversary at chromium.org> wrote:
> > >
> > > On Thu 07 Jun 2018, Fritz Koenig wrote:
>
> > > > --- a/src/mesa/main/extensions_table.h
> > > > +++ b/src/mesa/main/extensions_table.h
> > > > @@ -322,6 +322,7 @@ EXT(KHR_texture_compression_astc_hdr , KHR_texture_compression_astc_hdr
> > > > EXT(KHR_texture_compression_astc_ldr , KHR_texture_compression_astc_ldr , GLL, GLC, x , ES2, 2012)
> > > > EXT(KHR_texture_compression_astc_sliced_3d , KHR_texture_compression_astc_sliced_3d , GLL, GLC, x , ES2, 2015)
> > > >
> > > > +EXT(MESA_framebuffer_flip_y , MESA_framebuffer_flip_y , x, x, x , ES2, 2018)
> > >
> > > Since the extension requires GLES 3.1, this row should have s/ES2/31/.
> > >
> >
> > I don't see the option for an ES31 extension, only ES2 in that file.
>
> It's non-obvious, but placing a literal 31 in that column does the right
> thing. Search the table, and you will find entries in this column with
> literal values 30 and 31 in addition to ES2.
>
> A little bit of poorly documented tribal knowledge... In the taxonomy of
> OpenGL (and ES) contexts, there currently exist four top-level branches.
> It took multiple years of API specification experiments, some good and
> other mistakes, to create the top-level taxonomy. Surprisingly, old man
> GLX is the only API to get this correct, in extension
> GLX_EXT_create_context_es2_profile. (GLX got it right probably because
> GLX_EXT_create_context_es2_profile was the last extension to be written
> in the group of "context taxonomy" extensions, and so was written after
> everyone learned from the past mistakes).
>
> The term used by GLX_EXT_create_context_es2_profile for this hiearchy in
> the taxonomy is "profile". Here are the 4:
>
> ES1 := { OpenGL ES x.y where x = 1 }
> = { OpenGL ES 1.0
> , OpenGL ES 1.1,
> , and minor variants of which no one remembers the name
> }
>
> ES2 := { OpenGL ES x.y where 2 <= x <= 3 }
>
> CORE := { OpenGL x.y where x.y >= 3.2
> and glGetIntegerv(GL_CONTEXT_PROFILE_MASK) contains GL_CONTEXT_PROFILE_CORE_BIT
> }
>
> COMPATIBILITY := { OpenGL x.y where x.y <= 3.0
> or (x.y >= 3.2
> and glGetIntegerv(GL_CONTEXT_PROFILE_MASK) contains GL_CONTEXT_PROFILE_COMPATIBILITY_BIT)
> }
Correction:
OpenGL (not-ES) 3.1 belongs to no class as I've defined them above.
And OpenGL ES 3.0 is not defined correctly. Their weird, existing the
zone of API experimentation.
Here are the corrected definitions:
CORE := { OpenGL x.y where (x.y >= 3.2 and GL_CONTEXT_PROFILE_CORE_BIT in glGetIntegerv(GL_CONTEXT_PROFILE_MASK))
or (x.y == 3.1 and GL_ARB_compatibility not in glGetString(GL_EXTENSIONS))
or (x.y == 3.0 and GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT in glGetIntegerv(GL_CONTEXT_FLAGS))
}
COMPATIBILITY := { OpenGL x.y where (x.y >= 3.2 and GL_CONTEXT_PROFILE_COMPATIBILITY_BIT in glGetIntegerv(GL_CONTEXT_PROFILE_MASK))
or (x.y == 3.1 and GL_ARB_compatibility in glGetString(GL_EXTENSIONS))
or (x.y == 3.0 and GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT not in glGetIntegerv(GL_CONTEXT_FLAGS))
or (x.y < 3.0)
}
There exist differences in opinion on how to classify the variants of
GL 3.0 and GL 3.1. The above is Mesa's classification.
More information about the mesa-dev
mailing list