[Mesa-dev] [PATCH] Add support for OES_standard_derivatives in GLSL ES

Tomeu Vizoso tomeu at tomeuvizoso.net
Mon Jul 16 11:45:17 PDT 2012


Previously, we advertised the extension but the builtin functions
were enabled only for GLSL and not for ES.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52003

Signed-off-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
---
 .../profiles/OES_standard_derivatives.frag         |   20 ++++++++++++++++++++
 src/glsl/glsl_parser_extras.cpp                    |    1 +
 src/glsl/glsl_parser_extras.h                      |    2 ++
 3 files changed, 23 insertions(+)
 create mode 100644 src/glsl/builtins/profiles/OES_standard_derivatives.frag

diff --git a/src/glsl/builtins/profiles/OES_standard_derivatives.frag b/src/glsl/builtins/profiles/OES_standard_derivatives.frag
new file mode 100644
index 0000000..2c6ea07
--- /dev/null
+++ b/src/glsl/builtins/profiles/OES_standard_derivatives.frag
@@ -0,0 +1,20 @@
+#version 100
+#extension GL_OES_standard_derivatives : enable
+
+/*
+ * 8.8 - Fragment Processing Functions
+ */
+float dFdx(float p);
+vec2  dFdx(vec2  p);
+vec3  dFdx(vec3  p);
+vec4  dFdx(vec4  p);
+
+float dFdy(float p);
+vec2  dFdy(vec2  p);
+vec3  dFdy(vec3  p);
+vec4  dFdy(vec4  p);
+
+float fwidth(float p);
+vec2  fwidth(vec2  p);
+vec3  fwidth(vec3  p);
+vec4  fwidth(vec4  p);
diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp
index d9ee406..45e92d2 100644
--- a/src/glsl/glsl_parser_extras.cpp
+++ b/src/glsl/glsl_parser_extras.cpp
@@ -297,6 +297,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
    EXT(OES_EGL_image_external,         true,  false, true,  false, true,      OES_EGL_image_external),
    EXT(ARB_shader_bit_encoding,        true,  true,  true,  true,  false,     ARB_shader_bit_encoding),
    EXT(ARB_uniform_buffer_object,      true,  false, true,  true,  false,     ARB_uniform_buffer_object),
+   EXT(OES_standard_derivatives,       false, false, true,  false,  true,     OES_standard_derivatives),
 };
 
 #undef EXT
diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h
index d97217e..5e32289 100644
--- a/src/glsl/glsl_parser_extras.h
+++ b/src/glsl/glsl_parser_extras.h
@@ -209,6 +209,8 @@ struct _mesa_glsl_parse_state {
    bool ARB_shader_bit_encoding_warn;
    bool ARB_uniform_buffer_object_enable;
    bool ARB_uniform_buffer_object_warn;
+   bool OES_standard_derivatives_enable;
+   bool OES_standard_derivatives_warn;
    /*@}*/
 
    /** Extensions supported by the OpenGL implementation. */
-- 
1.7.10.4



More information about the mesa-dev mailing list