Discussion:
[Mesa-dev] [PATCH v2] glapi: fixup EXT_multisampled_render_to_texture dispatch
Emil Velikov
2018-12-10 18:14:34 UTC
Permalink
From: "Kristian H. Kristensen" <***@gmail.com>

There's a few missing and convoluted bits:

- FramebufferTexture2DMultisampleEXT
Missing sanity check, should be desktop="false"

- RenderbufferStorageMultisampleEXT
Missing sanity check, is aliased to RenderbufferStorageMultisample.
Thus it's set only when desktop GL or GLES2 v3.0+, while the extension
is GLES2 2.0+.

If we flip the aliasing we'll break indirect GLX, so loosen the version
to 2.0. Not perfect, yet this is the most sane thing I could think of.

v2: [Emil] Fixup RenderbufferStorageMultisampleEXT, commmit message

Cc: Kristian H. Kristensen <***@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108974
Fixes: 1b331ae505e ("mesa: Add core support for EXT_multisampled_render_to_texture{,2}")
Reviewed-by: Emil Velikov <***@collabora.com>
Signed-off-by: Emil Velikov <***@collabora.com>
---
src/mapi/glapi/gen/ARB_framebuffer_object.xml | 10 +++++++++-
.../glapi/gen/EXT_multisampled_render_to_texture.xml | 2 +-
src/mapi/glapi/gen/es_EXT.xml | 2 ++
src/mapi/glapi/gen/gl_API.xml | 2 --
src/mesa/main/tests/dispatch_sanity.cpp | 6 +++++-
5 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/mapi/glapi/gen/ARB_framebuffer_object.xml b/src/mapi/glapi/gen/ARB_framebuffer_object.xml
index bd0793c8ece..295175c8816 100644
--- a/src/mapi/glapi/gen/ARB_framebuffer_object.xml
+++ b/src/mapi/glapi/gen/ARB_framebuffer_object.xml
@@ -172,7 +172,15 @@
<glx rop="4318"/>
</function>

- <function name="RenderbufferStorageMultisample" es2="3.0">
+<!--
+ The EXT aliasee, as part of EXT_multisampled_render_to_texture can
+ work on GLES 2.0. While the entry point below is only set when
+ gl || (gles && version > 3.0)
+
+ As such, the entrypoint will be noop, and calling it will do nothing.
+ Workaround that by loosening the version to 2.0.
+ -->
+ <function name="RenderbufferStorageMultisample" es2="2.0">
<param name="target" type="GLenum"/>
<param name="samples" type="GLsizei"/>
<param name="internalformat" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml b/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
index 555b008bd33..d76ecd47d0e 100644
--- a/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
+++ b/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
@@ -20,7 +20,7 @@
</function>
-->

- <function name="FramebufferTexture2DMultisampleEXT" es2="2.0">
+ <function name="FramebufferTexture2DMultisampleEXT" es2="2.0" desktop="false">
<param name="target" type="GLenum"/>
<param name="attachment" type="GLenum"/>
<param name="textarget" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
index bbc4a1a1118..917fed62f98 100644
--- a/src/mapi/glapi/gen/es_EXT.xml
+++ b/src/mapi/glapi/gen/es_EXT.xml
@@ -810,6 +810,8 @@
<enum name="RG8_EXT" value="0x822B"/>
</category>

+<xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
<!-- 111. GL_ANGLE_texture_compression_dxt -->
<category name="GL_ANGLE_texture_compression_dxt" number="111">
<enum name="COMPRESSED_RGBA_S3TC_DXT3_ANGLE" value="0x83F2"/>
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index f1def8090de..f4d0808f13b 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8175,8 +8175,6 @@

<xi:include href="ARB_robustness.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>

-<xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
<xi:include href="ARB_base_instance.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>

<category name="GL_ARB_transform_feedback_instanced" number="109">
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index fb2acfbdeea..307639a4a4e 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -2236,6 +2236,10 @@ const struct function gles2_functions_possible[] = {
/* GL_NV_conservative_raster_pre_snap_triangles */
{ "glConservativeRasterParameteriNV", 20, -1 },

+ /* GL_EXT_multisampled_render_to_texture */
+ { "glRenderbufferStorageMultisampleEXT", 20, -1 },
+ { "glFramebufferTexture2DMultisampleEXT", 20, -1 },
+
{ NULL, 0, -1 }
};

@@ -2330,7 +2334,7 @@ const struct function gles3_functions_possible[] = {
// glProgramParameteri aliases glProgramParameteriEXT in GLES 2
// We check for the aliased -NV version in GLES 2
// { "glReadBuffer", 30, -1 },
- { "glRenderbufferStorageMultisample", 30, -1 },
+ // glRenderbufferStorageMultisample aliases glRenderbufferStorageMultisampleEXT in GLES 2
{ "glResumeTransformFeedback", 30, -1 },
{ "glSamplerParameterf", 30, -1 },
{ "glSamplerParameterfv", 30, -1 },
--
2.19.2
Kristian Høgsberg
2018-12-10 19:01:39 UTC
Permalink
Post by Emil Velikov
- FramebufferTexture2DMultisampleEXT
Missing sanity check, should be desktop="false"
- RenderbufferStorageMultisampleEXT
Missing sanity check, is aliased to RenderbufferStorageMultisample.
Thus it's set only when desktop GL or GLES2 v3.0+, while the extension
is GLES2 2.0+.
If we flip the aliasing we'll break indirect GLX, so loosen the version
to 2.0. Not perfect, yet this is the most sane thing I could think of.
v2: [Emil] Fixup RenderbufferStorageMultisampleEXT, commmit message
Ok, that looks good, thanks Emil.
Post by Emil Velikov
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108974
Fixes: 1b331ae505e ("mesa: Add core support for EXT_multisampled_render_to_texture{,2}")
---
src/mapi/glapi/gen/ARB_framebuffer_object.xml | 10 +++++++++-
.../glapi/gen/EXT_multisampled_render_to_texture.xml | 2 +-
src/mapi/glapi/gen/es_EXT.xml | 2 ++
src/mapi/glapi/gen/gl_API.xml | 2 --
src/mesa/main/tests/dispatch_sanity.cpp | 6 +++++-
5 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/src/mapi/glapi/gen/ARB_framebuffer_object.xml b/src/mapi/glapi/gen/ARB_framebuffer_object.xml
index bd0793c8ece..295175c8816 100644
--- a/src/mapi/glapi/gen/ARB_framebuffer_object.xml
+++ b/src/mapi/glapi/gen/ARB_framebuffer_object.xml
@@ -172,7 +172,15 @@
<glx rop="4318"/>
</function>
- <function name="RenderbufferStorageMultisample" es2="3.0">
+<!--
+ The EXT aliasee, as part of EXT_multisampled_render_to_texture can
+ work on GLES 2.0. While the entry point below is only set when
+ gl || (gles && version > 3.0)
+
+ As such, the entrypoint will be noop, and calling it will do nothing.
+ Workaround that by loosening the version to 2.0.
+ -->
+ <function name="RenderbufferStorageMultisample" es2="2.0">
<param name="target" type="GLenum"/>
<param name="samples" type="GLsizei"/>
<param name="internalformat" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml b/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
index 555b008bd33..d76ecd47d0e 100644
--- a/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
+++ b/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
@@ -20,7 +20,7 @@
</function>
-->
- <function name="FramebufferTexture2DMultisampleEXT" es2="2.0">
+ <function name="FramebufferTexture2DMultisampleEXT" es2="2.0" desktop="false">
<param name="target" type="GLenum"/>
<param name="attachment" type="GLenum"/>
<param name="textarget" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
index bbc4a1a1118..917fed62f98 100644
--- a/src/mapi/glapi/gen/es_EXT.xml
+++ b/src/mapi/glapi/gen/es_EXT.xml
@@ -810,6 +810,8 @@
<enum name="RG8_EXT" value="0x822B"/>
</category>
+<xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
<!-- 111. GL_ANGLE_texture_compression_dxt -->
<category name="GL_ANGLE_texture_compression_dxt" number="111">
<enum name="COMPRESSED_RGBA_S3TC_DXT3_ANGLE" value="0x83F2"/>
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index f1def8090de..f4d0808f13b 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8175,8 +8175,6 @@
<xi:include href="ARB_robustness.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-<xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
<xi:include href="ARB_base_instance.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<category name="GL_ARB_transform_feedback_instanced" number="109">
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index fb2acfbdeea..307639a4a4e 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -2236,6 +2236,10 @@ const struct function gles2_functions_possible[] = {
/* GL_NV_conservative_raster_pre_snap_triangles */
{ "glConservativeRasterParameteriNV", 20, -1 },
+ /* GL_EXT_multisampled_render_to_texture */
+ { "glRenderbufferStorageMultisampleEXT", 20, -1 },
+ { "glFramebufferTexture2DMultisampleEXT", 20, -1 },
+
{ NULL, 0, -1 }
};
@@ -2330,7 +2334,7 @@ const struct function gles3_functions_possible[] = {
// glProgramParameteri aliases glProgramParameteriEXT in GLES 2
// We check for the aliased -NV version in GLES 2
// { "glReadBuffer", 30, -1 },
- { "glRenderbufferStorageMultisample", 30, -1 },
+ // glRenderbufferStorageMultisample aliases glRenderbufferStorageMultisampleEXT in GLES 2
{ "glResumeTransformFeedback", 30, -1 },
{ "glSamplerParameterf", 30, -1 },
{ "glSamplerParameterfv", 30, -1 },
--
2.19.2
Ian Romanick
2018-12-10 22:11:54 UTC
Permalink
Post by Emil Velikov
- FramebufferTexture2DMultisampleEXT
Missing sanity check, should be desktop="false"
- RenderbufferStorageMultisampleEXT
Missing sanity check, is aliased to RenderbufferStorageMultisample.
Thus it's set only when desktop GL or GLES2 v3.0+, while the extension
is GLES2 2.0+.
If we flip the aliasing we'll break indirect GLX, so loosen the version
to 2.0. Not perfect, yet this is the most sane thing I could think of.
v2: [Emil] Fixup RenderbufferStorageMultisampleEXT, commmit message
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108974
Fixes: 1b331ae505e ("mesa: Add core support for EXT_multisampled_render_to_texture{,2}")
---
src/mapi/glapi/gen/ARB_framebuffer_object.xml | 10 +++++++++-
.../glapi/gen/EXT_multisampled_render_to_texture.xml | 2 +-
src/mapi/glapi/gen/es_EXT.xml | 2 ++
src/mapi/glapi/gen/gl_API.xml | 2 --
src/mesa/main/tests/dispatch_sanity.cpp | 6 +++++-
5 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/src/mapi/glapi/gen/ARB_framebuffer_object.xml b/src/mapi/glapi/gen/ARB_framebuffer_object.xml
index bd0793c8ece..295175c8816 100644
--- a/src/mapi/glapi/gen/ARB_framebuffer_object.xml
+++ b/src/mapi/glapi/gen/ARB_framebuffer_object.xml
@@ -172,7 +172,15 @@
<glx rop="4318"/>
</function>
- <function name="RenderbufferStorageMultisample" es2="3.0">
+<!--
+ The EXT aliasee, as part of EXT_multisampled_render_to_texture can
+ work on GLES 2.0. While the entry point below is only set when
+ gl || (gles && version > 3.0)
+
+ As such, the entrypoint will be noop, and calling it will do nothing.
+ Workaround that by loosening the version to 2.0.
+ -->
+ <function name="RenderbufferStorageMultisample" es2="2.0">
<param name="target" type="GLenum"/>
<param name="samples" type="GLsizei"/>
<param name="internalformat" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml b/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
index 555b008bd33..d76ecd47d0e 100644
--- a/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
+++ b/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
@@ -20,7 +20,7 @@
</function>
-->
- <function name="FramebufferTexture2DMultisampleEXT" es2="2.0">
+ <function name="FramebufferTexture2DMultisampleEXT" es2="2.0" desktop="false">
<param name="target" type="GLenum"/>
<param name="attachment" type="GLenum"/>
<param name="textarget" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
index bbc4a1a1118..917fed62f98 100644
--- a/src/mapi/glapi/gen/es_EXT.xml
+++ b/src/mapi/glapi/gen/es_EXT.xml
@@ -810,6 +810,8 @@
<enum name="RG8_EXT" value="0x822B"/>
</category>
+<xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
<!-- 111. GL_ANGLE_texture_compression_dxt -->
<category name="GL_ANGLE_texture_compression_dxt" number="111">
<enum name="COMPRESSED_RGBA_S3TC_DXT3_ANGLE" value="0x83F2"/>
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index f1def8090de..f4d0808f13b 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8175,8 +8175,6 @@
<xi:include href="ARB_robustness.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-<xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
<xi:include href="ARB_base_instance.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<category name="GL_ARB_transform_feedback_instanced" number="109">
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index fb2acfbdeea..307639a4a4e 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -2236,6 +2236,10 @@ const struct function gles2_functions_possible[] = {
/* GL_NV_conservative_raster_pre_snap_triangles */
{ "glConservativeRasterParameteriNV", 20, -1 },
+ /* GL_EXT_multisampled_render_to_texture */
+ { "glRenderbufferStorageMultisampleEXT", 20, -1 },
+ { "glFramebufferTexture2DMultisampleEXT", 20, -1 },
+
{ NULL, 0, -1 }
};
@@ -2330,7 +2334,7 @@ const struct function gles3_functions_possible[] = {
// glProgramParameteri aliases glProgramParameteriEXT in GLES 2
// We check for the aliased -NV version in GLES 2
// { "glReadBuffer", 30, -1 },
- { "glRenderbufferStorageMultisample", 30, -1 },
+ // glRenderbufferStorageMultisample aliases glRenderbufferStorageMultisampleEXT in GLES 2
{ "glResumeTransformFeedback", 30, -1 },
{ "glSamplerParameterf", 30, -1 },
{ "glSamplerParameterfv", 30, -1 },
Kristian Høgsberg
2018-12-10 23:10:40 UTC
Permalink
Thanks Ian. I went ahead and pushed this to appease the CI bots.

Kristian
Post by Emil Velikov
- FramebufferTexture2DMultisampleEXT
Missing sanity check, should be desktop="false"
- RenderbufferStorageMultisampleEXT
Missing sanity check, is aliased to RenderbufferStorageMultisample.
Thus it's set only when desktop GL or GLES2 v3.0+, while the extension
is GLES2 2.0+.
If we flip the aliasing we'll break indirect GLX, so loosen the version
to 2.0. Not perfect, yet this is the most sane thing I could think of.
v2: [Emil] Fixup RenderbufferStorageMultisampleEXT, commmit message
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108974
Fixes: 1b331ae505e ("mesa: Add core support for EXT_multisampled_render_to_texture{,2}")
---
src/mapi/glapi/gen/ARB_framebuffer_object.xml | 10 +++++++++-
.../glapi/gen/EXT_multisampled_render_to_texture.xml | 2 +-
src/mapi/glapi/gen/es_EXT.xml | 2 ++
src/mapi/glapi/gen/gl_API.xml | 2 --
src/mesa/main/tests/dispatch_sanity.cpp | 6 +++++-
5 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/src/mapi/glapi/gen/ARB_framebuffer_object.xml b/src/mapi/glapi/gen/ARB_framebuffer_object.xml
index bd0793c8ece..295175c8816 100644
--- a/src/mapi/glapi/gen/ARB_framebuffer_object.xml
+++ b/src/mapi/glapi/gen/ARB_framebuffer_object.xml
@@ -172,7 +172,15 @@
<glx rop="4318"/>
</function>
- <function name="RenderbufferStorageMultisample" es2="3.0">
+<!--
+ The EXT aliasee, as part of EXT_multisampled_render_to_texture can
+ work on GLES 2.0. While the entry point below is only set when
+ gl || (gles && version > 3.0)
+
+ As such, the entrypoint will be noop, and calling it will do nothing.
+ Workaround that by loosening the version to 2.0.
+ -->
+ <function name="RenderbufferStorageMultisample" es2="2.0">
<param name="target" type="GLenum"/>
<param name="samples" type="GLsizei"/>
<param name="internalformat" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml b/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
index 555b008bd33..d76ecd47d0e 100644
--- a/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
+++ b/src/mapi/glapi/gen/EXT_multisampled_render_to_texture.xml
@@ -20,7 +20,7 @@
</function>
-->
- <function name="FramebufferTexture2DMultisampleEXT" es2="2.0">
+ <function name="FramebufferTexture2DMultisampleEXT" es2="2.0" desktop="false">
<param name="target" type="GLenum"/>
<param name="attachment" type="GLenum"/>
<param name="textarget" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
index bbc4a1a1118..917fed62f98 100644
--- a/src/mapi/glapi/gen/es_EXT.xml
+++ b/src/mapi/glapi/gen/es_EXT.xml
@@ -810,6 +810,8 @@
<enum name="RG8_EXT" value="0x822B"/>
</category>
+<xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
<!-- 111. GL_ANGLE_texture_compression_dxt -->
<category name="GL_ANGLE_texture_compression_dxt" number="111">
<enum name="COMPRESSED_RGBA_S3TC_DXT3_ANGLE" value="0x83F2"/>
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index f1def8090de..f4d0808f13b 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8175,8 +8175,6 @@
<xi:include href="ARB_robustness.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-<xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
<xi:include href="ARB_base_instance.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<category name="GL_ARB_transform_feedback_instanced" number="109">
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index fb2acfbdeea..307639a4a4e 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -2236,6 +2236,10 @@ const struct function gles2_functions_possible[] = {
/* GL_NV_conservative_raster_pre_snap_triangles */
{ "glConservativeRasterParameteriNV", 20, -1 },
+ /* GL_EXT_multisampled_render_to_texture */
+ { "glRenderbufferStorageMultisampleEXT", 20, -1 },
+ { "glFramebufferTexture2DMultisampleEXT", 20, -1 },
+
{ NULL, 0, -1 }
};
@@ -2330,7 +2334,7 @@ const struct function gles3_functions_possible[] = {
// glProgramParameteri aliases glProgramParameteriEXT in GLES 2
// We check for the aliased -NV version in GLES 2
// { "glReadBuffer", 30, -1 },
- { "glRenderbufferStorageMultisample", 30, -1 },
+ // glRenderbufferStorageMultisample aliases glRenderbufferStorageMultisampleEXT in GLES 2
{ "glResumeTransformFeedback", 30, -1 },
{ "glSamplerParameterf", 30, -1 },
{ "glSamplerParameterfv", 30, -1 },
Loading...