Gak! Sorry for the multiple sends. My mailer kept telling me that delivery failed, and asked if I wanted to resend. Apparently it was full of crap. :(

On 12/04/2012 05:43 PM, Ian Romanick wrote:
On 12/03/2012 09:59 PM, Chad Versace wrote:
Since piglit-dispatch does not yet support GLES, in order to build
shader_runner.c against GLES3 we need some workarounds.

1. Add file shader_runner_gles_workarounds.h.

2. Let shader_runner.c include it.

3. For each GLenum used by shader_runner.c that is not found in
    <GLES3/gl3.h>, redefine it in shader_runner_gles_workarounds.h to
have
    the same values as in <GL/gl*.h>.

4. For each function used by shader_runner.c that is not found in
    <GLES3/gl3.h>, define a macro that prints an error message and skips
    the test, just as piglit-dispatch does for unsupported functions.

Signed-off-by: Chad Versace <[email protected]>
---
  tests/shaders/shader_runner.c                  |   2 +
  tests/shaders/shader_runner_gles_workarounds.h | 145
+++++++++++++++++++++++++
  2 files changed, 147 insertions(+)
  create mode 100644 tests/shaders/shader_runner_gles_workarounds.h

diff --git a/tests/shaders/shader_runner.c
b/tests/shaders/shader_runner.c
index 11753f0..255d88d 100644
--- a/tests/shaders/shader_runner.c
+++ b/tests/shaders/shader_runner.c
@@ -36,6 +36,8 @@
  #include "piglit-util-gl-common.h"
  #include "piglit-vbo.h"

+#include "shader_runner_gles_workarounds.h"
+
  static void
  get_required_versions(const char *script_name,
                struct piglit_gl_test_config *config);
diff --git a/tests/shaders/shader_runner_gles_workarounds.h
b/tests/shaders/shader_runner_gles_workarounds.h
new file mode 100644
index 0000000..bde115e
--- /dev/null
+++ b/tests/shaders/shader_runner_gles_workarounds.h
@@ -0,0 +1,145 @@
+/*
+ * Copyright © 2012 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person
obtaining a
+ * copy of this software and associated documentation files (the
"Software"),
+ * to deal in the Software without restriction, including without
limitation
+ * the rights to use, copy, modify, merge, publish, distribute,
sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including
the next
+ * paragraph) shall be included in all copies or substantial portions
of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/**
+ * \file
+ * \brief Workarounds for building with GLES.
+ *
+ * When building shader_runner against GLES3 and libpiglitutil_gles3,
there
+ * are many macros and symbols that are not defined. This header
defines such
+ * macros to have the same value found in <GL/gl*.h>, and defines such
+ * functions to print an error message and then report PIGLIT_SKIP,
just as
+ * piglit-dispatch does for unsupported extension functions.
+ */
+
+#include <stdio.h>
+#include "piglit-util.h"
+
+#define GL_CLIP_PLANE0 0x3000
+#define GL_CLIP_PLANE1 0x3001
+#define GL_CLIP_PLANE2 0x3002
+#define GL_CLIP_PLANE3 0x3003
+#define GL_CLIP_PLANE4 0x3004
+#define GL_CLIP_PLANE5 0x3005
+#define GL_COMPARE_R_TO_TEXTURE 0x884E
+#define GL_DEPTH_TEXTURE_MODE 0x884B
+#define GL_FLAT 0x1D00
+#define GL_FRAGMENT_PROGRAM_ARB 0x8804
+#define GL_GEOMETRY_SHADER 0x8DD9
+#define GL_INTENSITY 0x8049
+#define GL_MAX_CLIP_PLANES 0x0D32
+#define GL_POLYGON 0x0009
+#define GL_POLYGON_OFFSET_EXT 0x8037
+#define GL_QUADS 0x0007
+#define GL_QUAD_STRIP 0x0008
+#define GL_SMOOTH 0x1D01
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_1D_ARRAY 0x8C18
+#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
+#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
+#define GL_TEXTURE_RECTANGLE 0x84F5
+#define GL_VERTEX_ARRAY 0x8074
+#define GL_VERTEX_PROGRAM_ARB 0x8620
+#define GL_VERTEX_PROGRAM_ARB 0x8620
+#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
+#define GL_WRITE_ONLY 0x88B9
+
+static void __attribute__((unused))
+unsupported_function(const char *name)
+{
+    printf("Function \"%s\" not supported on this implementation\n",
name);
+    piglit_report_result(PIGLIT_SKIP);
+}
+
+/**
+ * This macro should be sufficient for most functions. If one of the
actual
+ * function's parameters causes an unused-variable warning, you must
+ * special-case the function. See glBindProgramARB for example.
+ *
+ * GLES doesn't exist on Windows. So we're free to use the GCC/Clang
extension
+ * for statement expressions.
+ */
+#define UNSUPPORTED_FUNCTION(name, return_value) \
+    ({ \
+         unsupported_function(#name); \
+         return_value; \
+     })
+
+#ifndef glBindProgramARB
+#define glBindProgramARB(a, b) \
+    ({ \
+         (void) a; \
+         (void) b; \
+        unsupported_function("glBindProgramARB"); \
+     })
+#endif
+
+#ifndef glMapBuffer
+#define glMapBuffer(...) UNSUPPORTED_FUNCTION(glMapBuffer, NULL)
+#endif

ES2 has glMapBufferOES, and ES3 has glMapBufferRange.  Perhaps we could
work around this one differently?  I don't recall how it's used in
shader_runner...

+
+#ifndef glVertexPointer
+#define glVertexPointer(a, b, c, d) \
+    ({ \
+         (void) a; \
+         (void) b; \
+         (void) c; \
+         (void) d; \
+        unsupported_function("glVertexPointer"); \
+     })
+#endif
+
+#ifndef glEnableClientState
+#define glEnableClientState(...)
UNSUPPORTED_FUNCTION(glEnableClientState, 0)
+#endif
+
+#ifndef glDisableClientState
+#define glDisableClientState(...)
UNSUPPORTED_FUNCTION(glDisableClientState, 0)
+#endif
+
+#ifndef glClipPlane
+#define glClipPlane(...) UNSUPPORTED_FUNCTION(glClipPlane, 0)
+#endif
+
+#ifndef glShadeModel
+#define glShadeModel(...) UNSUPPORTED_FUNCTION(glShadeModel, 0)
+#endif
+
+#ifndef glProgramEnvParameter4fvARB
+#define glProgramEnvParameter4fvARB(...)
UNSUPPORTED_FUNCTION(glProgramEnvParameter4fvARB, 0)
+#endif
+
+#ifndef glProgramLocalParameter4fvARB
+#define glProgramLocalParameter4fvARB(...)
UNSUPPORTED_FUNCTION(glProgramLocalParameter4fvARB, 0)
+#endif
+
+#ifndef PIGLIT_USE_OPENGL
+
+    #define piglit_frustum_projection(...)
UNSUPPORTED_FUNCTION(piglit_frustum_projection, 0)
+    #define piglit_gen_ortho_projection(...)
UNSUPPORTED_FUNCTION(piglit_gen_ortho_projection, 0)
+    #define piglit_miptree_texture(...)
UNSUPPORTED_FUNCTION(piglit_miptree_texture, 0)
+    #define piglit_depth_texture(...)
UNSUPPORTED_FUNCTION(piglit_depth_texture, 0)
+    #define piglit_ortho_projection(...)
UNSUPPORTED_FUNCTION(piglit_ortho_projection, 0)
+    #define piglit_compile_program(...)
UNSUPPORTED_FUNCTION(piglit_compile_program, 0)
+
+#endif /*PIGLIT_USE_OPENGL*/


_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit


_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to