diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-04-27 14:28:08 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-04-27 14:28:08 -0700 |
commit | 29166d62529613834f24ef478714af8e3348ff16 (patch) | |
tree | def9360ee230d5756577d57729fbdb656785a0f9 | |
parent | ce09542f7240014bff487d91921d1393b163a617 (diff) |
handle GL_INFO_LOG_LENGTH
-rw-r--r-- | src/library_gl.js | 14 | ||||
-rw-r--r-- | tests/gl_ps.c | 13 | ||||
-rwxr-xr-x | tests/runner.py | 2 |
3 files changed, 25 insertions, 4 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index d3011c69..0a4b4521 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -752,11 +752,19 @@ var LibraryGL = { }, glGetShaderiv : function(shader, pname, p) { - {{{ makeSetValue('p', '0', 'Module.ctx.getShaderParameter(GL.shaders[shader], pname)', 'i32') }}}; + if (pname == 0x8B84) { // GL_INFO_LOG_LENGTH + {{{ makeSetValue('p', '0', 'Module.ctx.getShaderInfoLog(GL.shaders[shader]).length + 1', 'i32') }}}; + } else { + {{{ makeSetValue('p', '0', 'Module.ctx.getShaderParameter(GL.shaders[shader], pname)', 'i32') }}}; + } }, glGetProgramiv : function(program, pname, p) { - {{{ makeSetValue('p', '0', 'Module.ctx.getProgramParameter(GL.programs[program], pname)', 'i32') }}}; + if (pname == 0x8B84) { // GL_INFO_LOG_LENGTH + {{{ makeSetValue('p', '0', 'Module.ctx.getProgramInfoLog(GL.programs[program]).length + 1', 'i32') }}}; + } else { + {{{ makeSetValue('p', '0', 'Module.ctx.getProgramParameter(GL.programs[program], pname)', 'i32') }}}; + } }, glIsShader: function(shader) { @@ -1008,10 +1016,10 @@ var LibraryGL = { #if GL_DEBUG console.log('Original source: ' + GL.shaderOriginalSources[shader]); console.log('Source: ' + GL.shaderSources[shader]); + throw 'Shader compilation halt'; #else console.log('Enable GL_DEBUG to see shader source'); #endif - throw 'Shader compilation halt'; } }; diff --git a/tests/gl_ps.c b/tests/gl_ps.c index c4ec7675..81579c1d 100644 --- a/tests/gl_ps.c +++ b/tests/gl_ps.c @@ -80,6 +80,19 @@ void shaders() { assert(ok); glUseProgram(program); + + { + // Also, check getting the error log + const char *fakeVertexShader = "atbute ve4 blarg; ### AAA\n"; + GLuint vs = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vs, 1, &fakeVertexShader, NULL); + glCompileShader(vs); + glGetShaderiv(vs, GL_COMPILE_STATUS, &ok); + assert(!ok); + GLint infoLen = 0; + glGetShaderiv(vs, GL_INFO_LOG_LENGTH, &infoLen); + assert(infoLen > 1); + } } int main(int argc, char *argv[]) diff --git a/tests/runner.py b/tests/runner.py index 1d4b827c..5f976500 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7227,7 +7227,7 @@ elif 'browser' in str(sys.argv): def test_gl_ps(self): # pointers and a shader shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) - self.btest('gl_ps.c', reference='gl_ps.png', args=['--preload-file', 'screenshot.png', '-s', 'GL_DEBUG=1']) + self.btest('gl_ps.c', reference='gl_ps.png', args=['--preload-file', 'screenshot.png']) def zzztest_cubegeom(self): self.btest('cubegeom.c', reference='sdlglshader.png', args=['-s', 'GL_DEBUG=1']) |