Re: [Mesa-dev] [PATCH V3] glapi: add GL_OES_geometry_shader extension
On 01/13/2016 10:29 AM, Lofstedt, Marta wrote: -Original Message- From: ibmir...@gmail.com [mailto:ibmir...@gmail.com] On Behalf Of Ilia Mirkin Sent: Tuesday, January 12, 2016 7:09 PM To: Marta Lofstedt Cc: mesa-dev@lists.freedesktop.org; Romanick, Ian D; Lofstedt, Marta Subject: Re: [PATCH V3] glapi: add GL_OES_geometry_shader extension On Tue, Jan 12, 2016 at 9:13 AM, Marta Lofstedtwrote: From: Marta Lofstedt Add xml definitions for the GL_OES_geometry_shader extension and expose the extension for OpenGL ES 3.1. V3: Added dependency to OES_shader_io_blocks and updated to correct Khronos extension number. May I ask why you did this? OES_shader_io_blocks is a purely shader compiler/linker feature, I expect it will be enabled whenever GLES 3.1 is enabled, no? Why would it be tied to geometry shaders? Sure, geometry shaders require it to work, but just because you have OES_shader_io_blocks doesn't necessarily mean you also have geometry shaders... My intension was to address the co-dependency between oes_geometry_shader and oes_shader_io_block. But as always, you are right Ilia. The dependency issue need to be fixed in the driver. So, please disregard this V3, I will push the V2 with the changes suggested by Ilia in the comments. FYI here are quotes from the oes_geometry_shader specification: " OES_shader_io_blocks or EXT_shader_io_blocks is required." IMO according to this it looks OES_shader_io_blocks is a valid requirement as that functionality is not part of OpenGL ES 3.1. " This extension relies on the OES_shader_io_blocks extension to provide the required functionality for declaring input and output blocks and interfacing between shaders." " If the OES_geometry_shader extension is enabled, the OES_shader_io_blocks extension is also implicitly enabled. In practical terms, there's a non-trivial chance that A4xx will get tessellation before geometry shaders, which would also require OES_shader_io_blocks to be exposed. Yes, but for desktop we already have the "shader_io_block" functionality. So, the dependency is a GLES issue, and tessellation is not yet exposed under GLES. -ilia ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH V3] glapi: add GL_OES_geometry_shader extension
> -Original Message- > From: ibmir...@gmail.com [mailto:ibmir...@gmail.com] On Behalf Of Ilia > Mirkin > Sent: Tuesday, January 12, 2016 7:09 PM > To: Marta Lofstedt > Cc: mesa-dev@lists.freedesktop.org; Romanick, Ian D; Lofstedt, Marta > Subject: Re: [PATCH V3] glapi: add GL_OES_geometry_shader extension > > On Tue, Jan 12, 2016 at 9:13 AM, Marta Lofstedt >wrote: > > From: Marta Lofstedt > > > > Add xml definitions for the GL_OES_geometry_shader extension and > > expose the extension for OpenGL ES 3.1. > > > > V3: Added dependency to OES_shader_io_blocks and updated to correct > > Khronos extension number. > > May I ask why you did this? OES_shader_io_blocks is a purely shader > compiler/linker feature, I expect it will be enabled whenever GLES 3.1 is > enabled, no? Why would it be tied to geometry shaders? Sure, geometry > shaders require it to work, but just because you have OES_shader_io_blocks > doesn't necessarily mean you also have geometry shaders... > My intension was to address the co-dependency between oes_geometry_shader and oes_shader_io_block. But as always, you are right Ilia. The dependency issue need to be fixed in the driver. So, please disregard this V3, I will push the V2 with the changes suggested by Ilia in the comments. FYI here are quotes from the oes_geometry_shader specification: " OES_shader_io_blocks or EXT_shader_io_blocks is required." " This extension relies on the OES_shader_io_blocks extension to provide the required functionality for declaring input and output blocks and interfacing between shaders." " If the OES_geometry_shader extension is enabled, the OES_shader_io_blocks extension is also implicitly enabled. > In practical terms, there's a non-trivial chance that A4xx will get > tessellation > before geometry shaders, which would also require OES_shader_io_blocks > to be exposed. Yes, but for desktop we already have the "shader_io_block" functionality. So, the dependency is a GLES issue, and tessellation is not yet exposed under GLES. > > -ilia ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH V3] glapi: add GL_OES_geometry_shader extension
On 01/14/2016 01:11 AM, Ilia Mirkin wrote: On Wed, Jan 13, 2016 at 3:55 AM, Tapani Pälliwrote: On 01/13/2016 10:29 AM, Lofstedt, Marta wrote: -Original Message- From: ibmir...@gmail.com [mailto:ibmir...@gmail.com] On Behalf Of Ilia Mirkin Sent: Tuesday, January 12, 2016 7:09 PM To: Marta Lofstedt Cc: mesa-dev@lists.freedesktop.org; Romanick, Ian D; Lofstedt, Marta Subject: Re: [PATCH V3] glapi: add GL_OES_geometry_shader extension On Tue, Jan 12, 2016 at 9:13 AM, Marta Lofstedt wrote: From: Marta Lofstedt Add xml definitions for the GL_OES_geometry_shader extension and expose the extension for OpenGL ES 3.1. V3: Added dependency to OES_shader_io_blocks and updated to correct Khronos extension number. May I ask why you did this? OES_shader_io_blocks is a purely shader compiler/linker feature, I expect it will be enabled whenever GLES 3.1 is enabled, no? Why would it be tied to geometry shaders? Sure, geometry shaders require it to work, but just because you have OES_shader_io_blocks doesn't necessarily mean you also have geometry shaders... My intension was to address the co-dependency between oes_geometry_shader and oes_shader_io_block. But as always, you are right Ilia. The dependency issue need to be fixed in the driver. So, please disregard this V3, I will push the V2 with the changes suggested by Ilia in the comments. FYI here are quotes from the oes_geometry_shader specification: " OES_shader_io_blocks or EXT_shader_io_blocks is required." IMO according to this it looks OES_shader_io_blocks is a valid requirement as that functionality is not part of OpenGL ES 3.1. Sure. But that has little bearing on the discussion here -- OES_shader_io_blocks is a compiler feature, not a backend feature. In order for any backend to expose OES_geometry_shader, the OES_shader_io_blocks ext needs to be done. But just because it is done doesn't mean you have geometry shaders. Right, that is correct. For a moment there I forgot how this table works :) There needs to be separate enable bits for these. So you have to make sure that not only does the backend support geometry shaders, but the core supports OES_shader_io_blocks before you expose OES_geometry_shader. That doesn't seem too onerous. -ilia // Tapani ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH V3] glapi: add GL_OES_geometry_shader extension
On Wed, Jan 13, 2016 at 3:55 AM, Tapani Pälliwrote: > On 01/13/2016 10:29 AM, Lofstedt, Marta wrote: >> >> >>> -Original Message- >>> From: ibmir...@gmail.com [mailto:ibmir...@gmail.com] On Behalf Of Ilia >>> Mirkin >>> Sent: Tuesday, January 12, 2016 7:09 PM >>> To: Marta Lofstedt >>> Cc: mesa-dev@lists.freedesktop.org; Romanick, Ian D; Lofstedt, Marta >>> Subject: Re: [PATCH V3] glapi: add GL_OES_geometry_shader extension >>> >>> On Tue, Jan 12, 2016 at 9:13 AM, Marta Lofstedt >>> wrote: From: Marta Lofstedt Add xml definitions for the GL_OES_geometry_shader extension and expose the extension for OpenGL ES 3.1. V3: Added dependency to OES_shader_io_blocks and updated to correct Khronos extension number. >>> >>> May I ask why you did this? OES_shader_io_blocks is a purely shader >>> compiler/linker feature, I expect it will be enabled whenever GLES 3.1 is >>> enabled, no? Why would it be tied to geometry shaders? Sure, geometry >>> shaders require it to work, but just because you have >>> OES_shader_io_blocks >>> doesn't necessarily mean you also have geometry shaders... >>> >> My intension was to address the co-dependency between oes_geometry_shader >> and oes_shader_io_block. >> But as always, you are right Ilia. The dependency issue need to be fixed >> in the driver. >> >> So, please disregard this V3, I will push the V2 with the changes >> suggested by Ilia in the comments. >> >> FYI here are quotes from the oes_geometry_shader specification: >> " OES_shader_io_blocks or EXT_shader_io_blocks is required." > > > IMO according to this it looks OES_shader_io_blocks is a valid requirement > as that functionality is not part of OpenGL ES 3.1. Sure. But that has little bearing on the discussion here -- OES_shader_io_blocks is a compiler feature, not a backend feature. In order for any backend to expose OES_geometry_shader, the OES_shader_io_blocks ext needs to be done. But just because it is done doesn't mean you have geometry shaders. So you have to make sure that not only does the backend support geometry shaders, but the core supports OES_shader_io_blocks before you expose OES_geometry_shader. That doesn't seem too onerous. -ilia ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH V3] glapi: add GL_OES_geometry_shader extension
On 01/13/2016 12:55 AM, Tapani Pälli wrote: > On 01/13/2016 10:29 AM, Lofstedt, Marta wrote: >> >>> -Original Message- >>> From: ibmir...@gmail.com [mailto:ibmir...@gmail.com] On Behalf Of Ilia >>> Mirkin >>> Sent: Tuesday, January 12, 2016 7:09 PM >>> To: Marta Lofstedt >>> Cc: mesa-dev@lists.freedesktop.org; Romanick, Ian D; Lofstedt, Marta >>> Subject: Re: [PATCH V3] glapi: add GL_OES_geometry_shader extension >>> >>> On Tue, Jan 12, 2016 at 9:13 AM, Marta Lofstedt >>>wrote: From: Marta Lofstedt Add xml definitions for the GL_OES_geometry_shader extension and expose the extension for OpenGL ES 3.1. V3: Added dependency to OES_shader_io_blocks and updated to correct Khronos extension number. >>> May I ask why you did this? OES_shader_io_blocks is a purely shader >>> compiler/linker feature, I expect it will be enabled whenever GLES >>> 3.1 is >>> enabled, no? Why would it be tied to geometry shaders? Sure, geometry >>> shaders require it to work, but just because you have >>> OES_shader_io_blocks >>> doesn't necessarily mean you also have geometry shaders... >>> >> My intension was to address the co-dependency between >> oes_geometry_shader and oes_shader_io_block. >> But as always, you are right Ilia. The dependency issue need to be >> fixed in the driver. >> >> So, please disregard this V3, I will push the V2 with the changes >> suggested by Ilia in the comments. >> >> FYI here are quotes from the oes_geometry_shader specification: >> " OES_shader_io_blocks or EXT_shader_io_blocks is required." > > IMO according to this it looks OES_shader_io_blocks is a valid > requirement as that functionality is not part of OpenGL ES 3.1. True. Any driver that enables OES_geometry_shader but does not also enable OES_shader_io_blocks has a bug. OES_shader_io_blocks is necessary but not sufficient. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH V3] glapi: add GL_OES_geometry_shader extension
From: Marta LofstedtAdd xml definitions for the GL_OES_geometry_shader extension and expose the extension for OpenGL ES 3.1. V3: Added dependency to OES_shader_io_blocks and updated to correct Khronos extension number. Signed-off-by: Marta Lofstedt --- src/mapi/glapi/gen/apiexec.py | 2 +- src/mapi/glapi/gen/es_EXT.xml | 43 + src/mesa/main/extensions_table.h| 1 + src/mesa/main/mtypes.h | 2 ++ src/mesa/main/tests/dispatch_sanity.cpp | 3 +++ 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/mapi/glapi/gen/apiexec.py b/src/mapi/glapi/gen/apiexec.py index 58ec08b..fa046fa 100644 --- a/src/mapi/glapi/gen/apiexec.py +++ b/src/mapi/glapi/gen/apiexec.py @@ -72,7 +72,7 @@ functions = { # OpenGL 3.2 / GL_ARB_geometry_shader4. Mesa does not support # GL_ARB_geometry_shader4, so OpenGL 3.2 is required. -"FramebufferTexture": exec_info(core=32), +"FramebufferTexture": exec_info(core=32, es2=31), # OpenGL 4.0 / GL_ARB_shader_subroutines. Mesa only exposes this # extension with core profile. diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml index 577d825..8ecce34 100644 --- a/src/mapi/glapi/gen/es_EXT.xml +++ b/src/mapi/glapi/gen/es_EXT.xml @@ -940,4 +940,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index aeccb01..11ca22e 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -309,6 +309,7 @@ EXT(OES_element_index_uint , dummy_true EXT(OES_fbo_render_mipmap , dummy_true , x , x , ES1, ES2, 2005) EXT(OES_fixed_point , dummy_true , x , x , ES1, x , 2002) EXT(OES_framebuffer_object , dummy_true , x , x , ES1, x , 2005) +EXT(OES_geometry_shader , OES_shader_io_blocks , x , x , x , 31, 2015) EXT(OES_get_program_binary , dummy_true , x , x , x , ES2, 2008) EXT(OES_mapbuffer , dummy_true , x , x , ES1, ES2, 2005) EXT(OES_packed_depth_stencil, dummy_true , x , x , ES1, ES2, 2007) diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 0992d4d..24208b0 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -3904,6 +3904,8 @@ struct gl_extensions GLboolean OES_texture_half_float; GLboolean OES_texture_half_float_linear; GLboolean OES_compressed_ETC1_RGB8_texture; + GLboolean OES_geometry_shader; + GLboolean OES_shader_io_blocks; GLboolean extension_sentinel; /** The extension string */ const GLubyte *String; diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index 7610bcb..f652da1 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -2524,5 +2524,8 @@ const struct function gles31_functions_possible[] = { /* GL_EXT_blend_func_extended */ { "glGetProgramResourceLocationIndexEXT", 31, -1 }, + /* GL_OES_geometry_shader */ + { "glFramebufferTextureOES", 31, -1}, + { NULL, 0, -1 }, }; -- 2.5.0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH V3] glapi: add GL_OES_geometry_shader extension
On 01/12/2016 10:09 AM, Ilia Mirkin wrote: > On Tue, Jan 12, 2016 at 9:13 AM, Marta Lofstedt >wrote: >> From: Marta Lofstedt >> >> Add xml definitions for the GL_OES_geometry_shader extension >> and expose the extension for OpenGL ES 3.1. >> >> V3: Added dependency to OES_shader_io_blocks and updated to >> correct Khronos extension number. > > May I ask why you did this? OES_shader_io_blocks is a purely shader > compiler/linker feature, I expect it will be enabled whenever GLES 3.1 > is enabled, no? Why would it be tied to geometry shaders? Sure, > geometry shaders require it to work, but just because you have > OES_shader_io_blocks doesn't necessarily mean you also have geometry > shaders... I was going to say the same thing. Since OES_shader_io_blocks is largely a software feature, I expect at some point it will be enabled by default in all drivers that support GLES 3.1. The same is unlikely to be true of geometry shaders. > In practical terms, there's a non-trivial chance that A4xx will get > tessellation before geometry shaders, which would also require > OES_shader_io_blocks to be exposed. > > -ilia ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH V3] glapi: add GL_OES_geometry_shader extension
On Tue, Jan 12, 2016 at 03:13:54PM +0100, Marta Lofstedt wrote: > From: Marta Lofstedt> > Add xml definitions for the GL_OES_geometry_shader extension > and expose the extension for OpenGL ES 3.1. > > V3: Added dependency to OES_shader_io_blocks and updated to > correct Khronos extension number. > > Signed-off-by: Marta Lofstedt > --- > src/mapi/glapi/gen/apiexec.py | 2 +- > src/mapi/glapi/gen/es_EXT.xml | 43 > + > src/mesa/main/extensions_table.h| 1 + > src/mesa/main/mtypes.h | 2 ++ > src/mesa/main/tests/dispatch_sanity.cpp | 3 +++ > 5 files changed, 50 insertions(+), 1 deletion(-) > > diff --git a/src/mapi/glapi/gen/apiexec.py b/src/mapi/glapi/gen/apiexec.py > index 58ec08b..fa046fa 100644 > --- a/src/mapi/glapi/gen/apiexec.py > +++ b/src/mapi/glapi/gen/apiexec.py > @@ -72,7 +72,7 @@ functions = { > > # OpenGL 3.2 / GL_ARB_geometry_shader4. Mesa does not support > # GL_ARB_geometry_shader4, so OpenGL 3.2 is required. > -"FramebufferTexture": exec_info(core=32), > +"FramebufferTexture": exec_info(core=32, es2=31), > > # OpenGL 4.0 / GL_ARB_shader_subroutines. Mesa only exposes this > # extension with core profile. > diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml > index 577d825..8ecce34 100644 > --- a/src/mapi/glapi/gen/es_EXT.xml > +++ b/src/mapi/glapi/gen/es_EXT.xml > @@ -940,4 +940,47 @@ > > > > + > + > + > + value="0x8DD9"/> > + value="0x0004"/> > + value="0x8916"/> > + value="0x8917"/> > + value="0x8918"/> > + value="0x887F"/> > + value="0x825E"/> > + value="0x8A2C"/> > + value="0x8A32"/> > + value="0x9123"/> > + value="0x9124"/> > + value="0x8DE0"/> > + value="0x8DE1"/> > + value="0x8E5A"/> > + value="0x8C29"/> > + value="0x92CF"/> > + value="0x92D5"/> > + value="0x90CD"/> > + value="0x90D7"/> > + value="0x8E4D"/> > + value="0x8E4E"/> > + value="0x8260"/> > + value="0x8C87"/> > + value="0xA"/> > + value="0xB"/> > + value="0xC"/> > + value="0xD"/> > + value="0x9312"/> > + value="0x9317"/> > + value="0x8DA8"/> > + value="0x8DA7"/> > + value="0x9309"/> > + > + es2="3.1"> > + > + > + > + > + > + > > diff --git a/src/mesa/main/extensions_table.h > b/src/mesa/main/extensions_table.h > index aeccb01..11ca22e 100644 > --- a/src/mesa/main/extensions_table.h > +++ b/src/mesa/main/extensions_table.h > @@ -309,6 +309,7 @@ EXT(OES_element_index_uint , dummy_true > EXT(OES_fbo_render_mipmap , dummy_true > , x , x , ES1, ES2, 2005) > EXT(OES_fixed_point , dummy_true > , x , x , ES1, x , 2002) > EXT(OES_framebuffer_object , dummy_true > , x , x , ES1, x , 2005) > +EXT(OES_geometry_shader , OES_shader_io_blocks > , x , x , x , 31, 2015) > EXT(OES_get_program_binary , dummy_true > , x , x , x , ES2, 2008) > EXT(OES_mapbuffer , dummy_true > , x , x , ES1, ES2, 2005) > EXT(OES_packed_depth_stencil, dummy_true > , x , x , ES1, ES2, 2007) > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h > index 0992d4d..24208b0 100644 > --- a/src/mesa/main/mtypes.h > +++ b/src/mesa/main/mtypes.h > @@ -3904,6 +3904,8 @@ struct gl_extensions > GLboolean OES_texture_half_float; > GLboolean OES_texture_half_float_linear; > GLboolean OES_compressed_ETC1_RGB8_texture; > + GLboolean OES_geometry_shader; Now that you're dependent on OES_shader_io_blocks, you shouldn't need to add the OES_geometry_shader boolean anymore. - Nanley > + GLboolean OES_shader_io_blocks; > GLboolean extension_sentinel; > /** The extension string */ > const GLubyte *String; > diff --git a/src/mesa/main/tests/dispatch_sanity.cpp > b/src/mesa/main/tests/dispatch_sanity.cpp > index 7610bcb..f652da1 100644 > --- a/src/mesa/main/tests/dispatch_sanity.cpp > +++ b/src/mesa/main/tests/dispatch_sanity.cpp > @@ -2524,5 +2524,8 @@ const struct function gles31_functions_possible[] = { > /* GL_EXT_blend_func_extended */ > { "glGetProgramResourceLocationIndexEXT", 31, -1 }, > > + /* GL_OES_geometry_shader */ > + { "glFramebufferTextureOES", 31, -1}, > + > { NULL, 0, -1 }, > }; > -- > 2.5.0 > > ___ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org
Re: [Mesa-dev] [PATCH V3] glapi: add GL_OES_geometry_shader extension
On Tue, Jan 12, 2016 at 9:13 AM, Marta Lofstedtwrote: > From: Marta Lofstedt > > Add xml definitions for the GL_OES_geometry_shader extension > and expose the extension for OpenGL ES 3.1. > > V3: Added dependency to OES_shader_io_blocks and updated to > correct Khronos extension number. May I ask why you did this? OES_shader_io_blocks is a purely shader compiler/linker feature, I expect it will be enabled whenever GLES 3.1 is enabled, no? Why would it be tied to geometry shaders? Sure, geometry shaders require it to work, but just because you have OES_shader_io_blocks doesn't necessarily mean you also have geometry shaders... In practical terms, there's a non-trivial chance that A4xx will get tessellation before geometry shaders, which would also require OES_shader_io_blocks to be exposed. -ilia ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev