diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-06-26 18:12:02 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-06-26 18:12:02 -0700 |
commit | 1f91ac1e073caaee66eaf7e16f1d6c47de93e385 (patch) | |
tree | ccee2a7aa6256a4ab3dac1edb1f13f1e96f37016 /src/library_gl.js | |
parent | d4c98c64c352a513caf415038530eb77e8b1fa4d (diff) |
refactor gl compression ext handling
Diffstat (limited to 'src/library_gl.js')
-rw-r--r-- | src/library_gl.js | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 5cf8f8d3..593bc1d8 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -23,7 +23,7 @@ var LibraryGL = { unpackAlignment: 4, // default alignment is 4 bytes init: function() { - Browser.moduleContextCreatedCallbacks.push(GL.initCompression); + Browser.moduleContextCreatedCallbacks.push(GL.initExtensions); }, // Linear lookup in one of the tables (buffers, programs, etc.). TODO: consider using a weakmap to make this faster, if it matters @@ -107,14 +107,13 @@ var LibraryGL = { ((height - 1) * alignedRowSize + plainRowSize); }, - initCompression: function() { - if (GL.initCompression.done) return; - GL.initCompression.done = true; + initExtensions: function() { + if (GL.initExtensions.done) return; + GL.initExtensions.done = true; - var ext = Module.ctx.getExtension('WEBGL_compressed_texture_s3tc') || - Module.ctx.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || - Module.ctx.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc'); - if (!ext) Module.printErr('Failed to get texture compression WebGL extension, if compressed textures are used they will fail'); + GL.compressionExt = Module.ctx.getExtension('WEBGL_compressed_texture_s3tc') || + Module.ctx.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || + Module.ctx.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc'); } }, @@ -289,6 +288,7 @@ var LibraryGL = { }, glCompressedTexImage2D: function(target, level, internalformat, width, height, border, imageSize, data) { + assert(GL.compressionExt); if (data) { data = {{{ makeHEAPView('U8', 'data', 'data+imageSize') }}}; } else { @@ -298,6 +298,7 @@ var LibraryGL = { }, glCompressedTexSubImage2D: function(target, level, xoffset, yoffset, width, height, format, imageSize, data) { + assert(GL.compressionExt); if (data) { data = {{{ makeHEAPView('U8', 'data', 'data+imageSize') }}}; } else { @@ -991,7 +992,9 @@ var LibraryGL = { _glGetString = function(name_) { switch(name_) { case 0x1F03 /* GL_EXTENSIONS */: // Add various extensions that we can support - return allocate(intArrayFromString(Module.ctx.getSupportedExtensions().join(' ') + ' GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements GL_ARB_texture_compression GL_EXT_texture_compression_s3tc'), 'i8', ALLOC_NORMAL); + return allocate(intArrayFromString(Module.ctx.getSupportedExtensions().join(' ') + + ' GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements' + + (GL.compressionExt ? ' GL_ARB_texture_compression GL_EXT_texture_compression_s3tc' : '')), 'i8', ALLOC_NORMAL); } return glGetString(name_); }; |