diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-06-02 12:41:50 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-06-02 12:41:50 -0700 |
commit | 0ce0d91f992aec0076f88ae02a79ebbadebb36b3 (patch) | |
tree | cce915a04b460d36ec788a15f1f284a7da63b6e8 | |
parent | 25ececc61907bc8a80be095a3be1c204c2390c1d (diff) |
return correct values for GL_SHADER_COMPILER and GL_NUM_SHADER_BINARY_FORMATS
-rw-r--r-- | src/library_gl.js | 8 | ||||
-rw-r--r-- | tests/glshaderinfo.cpp | 52 | ||||
-rwxr-xr-x | tests/runner.py | 3 |
3 files changed, 63 insertions, 0 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 77f50a34..7c80b420 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -128,6 +128,14 @@ var LibraryGL = { }, glGetIntegerv: function(name_, p) { + switch(name_) { // Handle a few trivial GLES values + case 0x8DFA: // GL_SHADER_COMPILER + {{{ makeSetValue('p', '0', '1', 'i32') }}}; + return; + case 0x8DF9: // GL_NUM_SHADER_BINARY_FORMATS + {{{ makeSetValue('p', '0', '0', 'i32') }}}; + return; + } var result = Module.ctx.getParameter(name_); switch (typeof(result)) { case "number": diff --git a/tests/glshaderinfo.cpp b/tests/glshaderinfo.cpp new file mode 100644 index 00000000..8ec393a8 --- /dev/null +++ b/tests/glshaderinfo.cpp @@ -0,0 +1,52 @@ +#define GL_GLEXT_PROTOTYPES +#define EGL_EGLEXT_PROTOTYPES + +#define _GNU_SOURCE + +#include <math.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/time.h> +#include <unistd.h> +#ifdef __APPLE__ +#include <OpenGL/gl.h> +#include <Glut/glut.h> +#else +#include <GL/gl.h> +#include <GL/glut.h> +#endif + +#include <assert.h> +#include <emscripten.h> + +int main(int argc, char *argv[]) +{ + /* Initialize the window */ + glutInit(&argc, argv); + glutInitWindowSize(300, 300); + glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); + + glutCreateWindow("es2gears"); + + GLint shaderCompiler; + glGetIntegerv(GL_SHADER_COMPILER, &shaderCompiler); + + GLint numShaderBinaryFormats; + glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &numShaderBinaryFormats); + + printf("%d,%d\n", shaderCompiler, numShaderBinaryFormats); + + if (!shaderCompiler && numShaderBinaryFormats == 0) { + printf("In current environment, the GLES2 implementation IS NOT standard conforming! " + "GL_SHADER_COMPILER == GL_FALSE and GL_NUM_SHADER_BINARY_FORMATS == 0! " + "In GLES2 spec, either compiling shaders or binary shaders must be supported! (Section 2.10 - Vertex Shaders)\n"); + int result = 0; + REPORT_RESULT(); + } else { + assert(numShaderBinaryFormats == 0); + int result = 1; + REPORT_RESULT(); + } + return 0; +} diff --git a/tests/runner.py b/tests/runner.py index 0a07a0cb..0b2e8f35 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7642,6 +7642,9 @@ elif 'browser' in str(sys.argv): def test_gc(self): self.btest('browser_gc.cpp', '1') + def test_glshaderinfo(self): + self.btest('glshaderinfo.cpp', '1') + def test_sdlglshader(self): self.btest('sdlglshader.c', reference='sdlglshader.png', args=['--closure', '1']) |