aboutsummaryrefslogtreecommitdiff
path: root/src/library_gl.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-06-26 18:12:02 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-06-26 18:12:02 -0700
commit1f91ac1e073caaee66eaf7e16f1d6c47de93e385 (patch)
treeccee2a7aa6256a4ab3dac1edb1f13f1e96f37016 /src/library_gl.js
parentd4c98c64c352a513caf415038530eb77e8b1fa4d (diff)
refactor gl compression ext handling
Diffstat (limited to 'src/library_gl.js')
-rw-r--r--src/library_gl.js21
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_);
};