aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-27 14:28:08 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-27 14:28:08 -0700
commit29166d62529613834f24ef478714af8e3348ff16 (patch)
treedef9360ee230d5756577d57729fbdb656785a0f9
parentce09542f7240014bff487d91921d1393b163a617 (diff)
handle GL_INFO_LOG_LENGTH
-rw-r--r--src/library_gl.js14
-rw-r--r--tests/gl_ps.c13
-rwxr-xr-xtests/runner.py2
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'])