glcommon: ignore GL_EXT_texture_norm16 on WebGL

Works around a Chromium bug. See comment for details.

Related: #287
This commit is contained in:
Andrei Alexeyev 2021-05-07 00:23:28 +03:00
parent a977b9480f
commit 88bec7008f
No known key found for this signature in database
GPG key ID: 72D26128040B9690

View file

@ -316,7 +316,26 @@ static void glcommon_ext_texture_norm16(void) {
EXT_FLAG(texture_norm16);
CHECK_CORE(!glext.version.is_es);
CHECK_EXT(GL_EXT_texture_norm16);
/*
* Quote from the WEBGL_EXT_texture_norm16 spec
* (https://www.khronos.org/registry/webgl/extensions/EXT_texture_norm16/):
*
* This extension provides a set of new 16-bit signed normalized and unsigned normalized fixed
* point texture, renderbuffer and texture buffer formats. The 16-bit normalized fixed point
* types R16_EXT, RG16_EXT and RGBA16_EXT become available as color-renderable formats.
* Renderbuffers can be created in these formats. These and textures created with type =
* UNSIGNED_SHORT, which will have one of these internal formats, can be attached to
* framebuffer object color attachments for rendering.
*
* The wording suggests that both renderbuffers and textures can be attached to a framebuffer
* object. However, Chromium/ANGLE seems to violate the spec here and does not permit textures.
*
* Exclude WebGL to be safe.
*/
if(!glext.version.is_webgl) {
CHECK_EXT(GL_EXT_texture_norm16);
}
EXT_MISSING();
}