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 <chadvers...@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. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev