mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 07:15:46 +00:00
Bug 1233046
- Fix OES_texture_float on Mac and add tests for extensions. - r=jrmuizel
This commit is contained in:
parent
7a195bd71f
commit
ea04ebebca
@ -1304,8 +1304,7 @@ WebGLContext::ClearScreen()
|
||||
|
||||
const bool changeDrawBuffers = (mDefaultFB_DrawBuffer0 != LOCAL_GL_BACK);
|
||||
if (changeDrawBuffers) {
|
||||
const GLenum back = LOCAL_GL_BACK;
|
||||
gl->fDrawBuffers(1, &back);
|
||||
gl->Screen()->SetDrawBuffer(LOCAL_GL_BACK);
|
||||
}
|
||||
|
||||
GLbitfield bufferBits = LOCAL_GL_COLOR_BUFFER_BIT;
|
||||
@ -1317,7 +1316,7 @@ WebGLContext::ClearScreen()
|
||||
ForceClearFramebufferWithDefaultValues(bufferBits, mNeedsFakeNoAlpha);
|
||||
|
||||
if (changeDrawBuffers) {
|
||||
gl->fDrawBuffers(1, &mDefaultFB_DrawBuffer0);
|
||||
gl->Screen()->SetDrawBuffer(mDefaultFB_DrawBuffer0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -827,7 +827,8 @@ protected:
|
||||
public:
|
||||
void Disable(GLenum cap);
|
||||
void Enable(GLenum cap);
|
||||
bool GetStencilBits(GLint* out_stencilBits);
|
||||
bool GetStencilBits(GLint* const out_stencilBits);
|
||||
bool GetChannelBits(const char* funcName, GLenum pname, GLint* const out_val);
|
||||
virtual JS::Value GetParameter(JSContext* cx, GLenum pname, ErrorResult& rv);
|
||||
|
||||
void GetParameter(JSContext* cx, GLenum pname,
|
||||
|
@ -994,6 +994,10 @@ WebGLContext::Hint(GLenum target, GLenum mode)
|
||||
|
||||
switch (target) {
|
||||
case LOCAL_GL_GENERATE_MIPMAP_HINT:
|
||||
// Deprecated and removed in desktop GL Core profiles.
|
||||
if (gl->IsCoreProfile())
|
||||
return;
|
||||
|
||||
isValid = true;
|
||||
break;
|
||||
|
||||
|
@ -73,7 +73,7 @@ StringValue(JSContext* cx, const nsAString& str, ErrorResult& rv)
|
||||
}
|
||||
|
||||
bool
|
||||
WebGLContext::GetStencilBits(GLint* out_stencilBits)
|
||||
WebGLContext::GetStencilBits(GLint* const out_stencilBits)
|
||||
{
|
||||
*out_stencilBits = 0;
|
||||
if (mBoundDrawFramebuffer) {
|
||||
@ -97,9 +97,107 @@ WebGLContext::GetStencilBits(GLint* out_stencilBits)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
WebGLContext::GetChannelBits(const char* funcName, GLenum pname, GLint* const out_val)
|
||||
{
|
||||
if (mBoundDrawFramebuffer) {
|
||||
if (!mBoundDrawFramebuffer->ValidateAndInitAttachments(funcName))
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!mBoundDrawFramebuffer) {
|
||||
switch (pname) {
|
||||
case LOCAL_GL_RED_BITS:
|
||||
case LOCAL_GL_GREEN_BITS:
|
||||
case LOCAL_GL_BLUE_BITS:
|
||||
*out_val = 8;
|
||||
break;
|
||||
|
||||
case LOCAL_GL_ALPHA_BITS:
|
||||
*out_val = (mOptions.alpha ? 8 : 0);
|
||||
break;
|
||||
|
||||
case LOCAL_GL_DEPTH_BITS:
|
||||
if (mOptions.depth) {
|
||||
const auto& glFormats = gl->GetGLFormats();
|
||||
|
||||
GLenum depthFormat = glFormats.depth;
|
||||
if (mOptions.stencil && glFormats.depthStencil) {
|
||||
depthFormat = glFormats.depthStencil;
|
||||
}
|
||||
|
||||
if (depthFormat == LOCAL_GL_DEPTH_COMPONENT16) {
|
||||
*out_val = 16;
|
||||
} else {
|
||||
*out_val = 24;
|
||||
}
|
||||
} else {
|
||||
*out_val = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case LOCAL_GL_STENCIL_BITS:
|
||||
*out_val = (mOptions.stencil ? 8 : 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
MOZ_CRASH("bad pname");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!gl->IsCoreProfile()) {
|
||||
gl->fGetIntegerv(pname, out_val);
|
||||
return true;
|
||||
}
|
||||
|
||||
GLenum fbAttachment = 0;
|
||||
GLenum fbPName = 0;
|
||||
switch (pname) {
|
||||
case LOCAL_GL_RED_BITS:
|
||||
fbAttachment = LOCAL_GL_COLOR_ATTACHMENT0;
|
||||
fbPName = LOCAL_GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE;
|
||||
break;
|
||||
|
||||
case LOCAL_GL_GREEN_BITS:
|
||||
fbAttachment = LOCAL_GL_COLOR_ATTACHMENT0;
|
||||
fbPName = LOCAL_GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE;
|
||||
break;
|
||||
|
||||
case LOCAL_GL_BLUE_BITS:
|
||||
fbAttachment = LOCAL_GL_COLOR_ATTACHMENT0;
|
||||
fbPName = LOCAL_GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE;
|
||||
break;
|
||||
|
||||
case LOCAL_GL_ALPHA_BITS:
|
||||
fbAttachment = LOCAL_GL_COLOR_ATTACHMENT0;
|
||||
fbPName = LOCAL_GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE;
|
||||
break;
|
||||
|
||||
case LOCAL_GL_DEPTH_BITS:
|
||||
fbAttachment = LOCAL_GL_DEPTH_ATTACHMENT;
|
||||
fbPName = LOCAL_GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE;
|
||||
break;
|
||||
|
||||
case LOCAL_GL_STENCIL_BITS:
|
||||
fbAttachment = LOCAL_GL_STENCIL_ATTACHMENT;
|
||||
fbPName = LOCAL_GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE;
|
||||
break;
|
||||
|
||||
default:
|
||||
MOZ_CRASH("bad pname");
|
||||
}
|
||||
|
||||
gl->fGetFramebufferAttachmentParameteriv(LOCAL_GL_DRAW_FRAMEBUFFER, fbAttachment,
|
||||
fbPName, out_val);
|
||||
return true;
|
||||
}
|
||||
|
||||
JS::Value
|
||||
WebGLContext::GetParameter(JSContext* cx, GLenum pname, ErrorResult& rv)
|
||||
{
|
||||
const char funcName[] = "getParameter";
|
||||
|
||||
if (IsContextLost())
|
||||
return JS::NullValue();
|
||||
|
||||
@ -356,11 +454,7 @@ WebGLContext::GetParameter(JSContext* cx, GLenum pname, ErrorResult& rv)
|
||||
|
||||
return JS::Int32Value(refValue & stencilMask);
|
||||
}
|
||||
case LOCAL_GL_STENCIL_BITS: {
|
||||
GLint stencilBits = 0;
|
||||
GetStencilBits(&stencilBits);
|
||||
return JS::Int32Value(stencilBits);
|
||||
}
|
||||
|
||||
case LOCAL_GL_STENCIL_CLEAR_VALUE:
|
||||
case LOCAL_GL_UNPACK_ALIGNMENT:
|
||||
case LOCAL_GL_PACK_ALIGNMENT:
|
||||
@ -370,28 +464,26 @@ WebGLContext::GetParameter(JSContext* cx, GLenum pname, ErrorResult& rv)
|
||||
case LOCAL_GL_MAX_VERTEX_ATTRIBS:
|
||||
case LOCAL_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
|
||||
case LOCAL_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
|
||||
case LOCAL_GL_MAX_TEXTURE_IMAGE_UNITS:
|
||||
case LOCAL_GL_RED_BITS:
|
||||
case LOCAL_GL_GREEN_BITS:
|
||||
case LOCAL_GL_BLUE_BITS: {
|
||||
case LOCAL_GL_MAX_TEXTURE_IMAGE_UNITS: {
|
||||
GLint i = 0;
|
||||
gl->fGetIntegerv(pname, &i);
|
||||
return JS::Int32Value(i);
|
||||
}
|
||||
case LOCAL_GL_DEPTH_BITS: {
|
||||
GLint i = 0;
|
||||
if (!mNeedsFakeNoDepth) {
|
||||
gl->fGetIntegerv(pname, &i);
|
||||
}
|
||||
return JS::Int32Value(i);
|
||||
}
|
||||
case LOCAL_GL_ALPHA_BITS: {
|
||||
GLint i = 0;
|
||||
if (!mNeedsFakeNoAlpha) {
|
||||
gl->fGetIntegerv(pname, &i);
|
||||
}
|
||||
return JS::Int32Value(i);
|
||||
|
||||
case LOCAL_GL_RED_BITS:
|
||||
case LOCAL_GL_GREEN_BITS:
|
||||
case LOCAL_GL_BLUE_BITS:
|
||||
case LOCAL_GL_ALPHA_BITS:
|
||||
case LOCAL_GL_DEPTH_BITS:
|
||||
case LOCAL_GL_STENCIL_BITS: {
|
||||
// Deprecated and removed in GL Core profiles, so special handling required.
|
||||
GLint val;
|
||||
if (!GetChannelBits(funcName, pname, &val))
|
||||
return JS::NullValue();
|
||||
|
||||
return JS::Int32Value(val);
|
||||
}
|
||||
|
||||
case LOCAL_GL_MAX_TEXTURE_SIZE:
|
||||
return JS::Int32Value(mImplMaxTextureSize);
|
||||
|
||||
|
@ -32,15 +32,17 @@ WebGLExtensionTextureFloat::WebGLExtensionTextureFloat(WebGLContext* webgl)
|
||||
fua->AllowUnsizedTexFormat(pi, usage);
|
||||
};
|
||||
|
||||
const bool needSizedInternal = !gl->IsGLES();
|
||||
MOZ_ASSERT_IF(needSizedInternal, gl->IsSupported(gl::GLFeature::texture_swizzle));
|
||||
const bool needsSwizzle = gl->IsCoreProfile();
|
||||
MOZ_ASSERT_IF(needsSwizzle, gl->IsSupported(gl::GLFeature::texture_swizzle));
|
||||
|
||||
const bool needsSizedFormat = !gl->IsGLES();
|
||||
|
||||
////////////////
|
||||
|
||||
pi = {LOCAL_GL_RGBA, LOCAL_GL_FLOAT};
|
||||
dui = {pi.format, pi.format, pi.type};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_RGBA32F;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::RGBA32F);
|
||||
@ -50,7 +52,7 @@ WebGLExtensionTextureFloat::WebGLExtensionTextureFloat(WebGLContext* webgl)
|
||||
pi = {LOCAL_GL_RGB, LOCAL_GL_FLOAT};
|
||||
dui = {pi.format, pi.format, pi.type};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_RGB32F;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::RGB32F);
|
||||
@ -60,9 +62,11 @@ WebGLExtensionTextureFloat::WebGLExtensionTextureFloat(WebGLContext* webgl)
|
||||
pi = {LOCAL_GL_LUMINANCE, LOCAL_GL_FLOAT};
|
||||
dui = {pi.format, pi.format, pi.type};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSwizzle) {
|
||||
dui = {LOCAL_GL_R32F, LOCAL_GL_RED, LOCAL_GL_FLOAT};
|
||||
swizzle = webgl::FormatUsageInfo::kLuminanceSwizzleRGBA;
|
||||
} else if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_LUMINANCE32F_ARB;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::Luminance32F);
|
||||
|
||||
@ -71,9 +75,11 @@ WebGLExtensionTextureFloat::WebGLExtensionTextureFloat(WebGLContext* webgl)
|
||||
pi = {LOCAL_GL_ALPHA, LOCAL_GL_FLOAT};
|
||||
dui = {pi.format, pi.format, pi.type};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSwizzle) {
|
||||
dui = {LOCAL_GL_R32F, LOCAL_GL_RED, LOCAL_GL_FLOAT};
|
||||
swizzle = webgl::FormatUsageInfo::kAlphaSwizzleRGBA;
|
||||
} else if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_ALPHA32F_ARB;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::Alpha32F);
|
||||
|
||||
@ -82,9 +88,11 @@ WebGLExtensionTextureFloat::WebGLExtensionTextureFloat(WebGLContext* webgl)
|
||||
pi = {LOCAL_GL_LUMINANCE_ALPHA, LOCAL_GL_FLOAT};
|
||||
dui = {pi.format, pi.format, pi.type};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSwizzle) {
|
||||
dui = {LOCAL_GL_RG32F, LOCAL_GL_RG, LOCAL_GL_FLOAT};
|
||||
swizzle = webgl::FormatUsageInfo::kLumAlphaSwizzleRGBA;
|
||||
} else if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_LUMINANCE_ALPHA32F_ARB;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::Luminance32FAlpha32F);
|
||||
}
|
||||
@ -101,10 +109,9 @@ WebGLExtensionTextureFloat::IsSupported(const WebGLContext* webgl)
|
||||
if (!gl->IsSupported(gl::GLFeature::texture_float))
|
||||
return false;
|
||||
|
||||
const bool needSizedInternal = !gl->IsGLES();
|
||||
const bool needsSwizzle = gl->IsCoreProfile();
|
||||
const bool hasSwizzle = gl->IsSupported(gl::GLFeature::texture_swizzle);
|
||||
|
||||
if (needSizedInternal && !hasSwizzle)
|
||||
if (needsSwizzle && !hasSwizzle)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
@ -30,8 +30,10 @@ WebGLExtensionTextureHalfFloat::WebGLExtensionTextureHalfFloat(WebGLContext* web
|
||||
fua->AllowUnsizedTexFormat(pi, usage);
|
||||
};
|
||||
|
||||
const bool needSizedInternal = !gl->IsGLES();
|
||||
MOZ_ASSERT_IF(needSizedInternal, gl->IsSupported(gl::GLFeature::texture_swizzle));
|
||||
const bool needsSwizzle = gl->IsCoreProfile();
|
||||
MOZ_ASSERT_IF(needsSwizzle, gl->IsSupported(gl::GLFeature::texture_swizzle));
|
||||
|
||||
const bool needsSizedFormat = !gl->IsGLES();
|
||||
|
||||
GLenum driverUnpackType = LOCAL_GL_HALF_FLOAT;
|
||||
if (!gl->IsSupported(gl::GLFeature::texture_half_float)) {
|
||||
@ -44,7 +46,7 @@ WebGLExtensionTextureHalfFloat::WebGLExtensionTextureHalfFloat(WebGLContext* web
|
||||
pi = {LOCAL_GL_RGBA, LOCAL_GL_HALF_FLOAT_OES};
|
||||
dui = {pi.format, pi.format, driverUnpackType};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_RGBA16F;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::RGBA16F);
|
||||
@ -54,7 +56,7 @@ WebGLExtensionTextureHalfFloat::WebGLExtensionTextureHalfFloat(WebGLContext* web
|
||||
pi = {LOCAL_GL_RGB, LOCAL_GL_HALF_FLOAT_OES};
|
||||
dui = {pi.format, pi.format, driverUnpackType};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_RGB16F;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::RGB16F);
|
||||
@ -64,9 +66,11 @@ WebGLExtensionTextureHalfFloat::WebGLExtensionTextureHalfFloat(WebGLContext* web
|
||||
pi = {LOCAL_GL_LUMINANCE, LOCAL_GL_HALF_FLOAT_OES};
|
||||
dui = {pi.format, pi.format, driverUnpackType};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSwizzle) {
|
||||
dui = {LOCAL_GL_R16F, LOCAL_GL_RED, driverUnpackType};
|
||||
swizzle = webgl::FormatUsageInfo::kLuminanceSwizzleRGBA;
|
||||
} else if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_LUMINANCE16F_ARB;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::Luminance16F);
|
||||
|
||||
@ -75,9 +79,11 @@ WebGLExtensionTextureHalfFloat::WebGLExtensionTextureHalfFloat(WebGLContext* web
|
||||
pi = {LOCAL_GL_ALPHA, LOCAL_GL_HALF_FLOAT_OES};
|
||||
dui = {pi.format, pi.format, driverUnpackType};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSwizzle) {
|
||||
dui = {LOCAL_GL_R16F, LOCAL_GL_RED, driverUnpackType};
|
||||
swizzle = webgl::FormatUsageInfo::kAlphaSwizzleRGBA;
|
||||
} else if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_ALPHA16F_ARB;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::Alpha16F);
|
||||
|
||||
@ -86,9 +92,11 @@ WebGLExtensionTextureHalfFloat::WebGLExtensionTextureHalfFloat(WebGLContext* web
|
||||
pi = {LOCAL_GL_LUMINANCE_ALPHA, LOCAL_GL_HALF_FLOAT_OES};
|
||||
dui = {pi.format, pi.format, driverUnpackType};
|
||||
swizzle = nullptr;
|
||||
if (needSizedInternal) {
|
||||
if (needsSwizzle) {
|
||||
dui = {LOCAL_GL_RG16F, LOCAL_GL_RG, driverUnpackType};
|
||||
swizzle = webgl::FormatUsageInfo::kLumAlphaSwizzleRGBA;
|
||||
} else if (needsSizedFormat) {
|
||||
dui.internalFormat = LOCAL_GL_LUMINANCE_ALPHA16F_ARB;
|
||||
}
|
||||
fnAdd(webgl::EffectiveFormat::Luminance16FAlpha16F);
|
||||
}
|
||||
@ -108,10 +116,9 @@ WebGLExtensionTextureHalfFloat::IsSupported(const WebGLContext* webgl)
|
||||
return false;
|
||||
}
|
||||
|
||||
const bool needSizedInternal = !gl->IsGLES();
|
||||
const bool needsSwizzle = gl->IsCoreProfile();
|
||||
const bool hasSwizzle = gl->IsSupported(gl::GLFeature::texture_swizzle);
|
||||
|
||||
if (needSizedInternal && !hasSwizzle)
|
||||
if (needsSwizzle && !hasSwizzle)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
@ -7,7 +7,7 @@
|
||||
TEST_DIRS += ['compiledtest']
|
||||
|
||||
# Number changes to this file to avoid bug 1081323 (clobber after changing a manifest):
|
||||
# 3
|
||||
# 4
|
||||
|
||||
MOCHITEST_MANIFESTS += [
|
||||
'test/crossorigin/mochitest.ini',
|
||||
|
@ -3,10 +3,51 @@ subsuite = webgl
|
||||
skip-if = ((os == 'linux') && (buildapp == 'b2g'))
|
||||
|
||||
support-files =
|
||||
webgl-mochitest/ensure-exts/ensure-ext.js
|
||||
webgl-mochitest/driver-info.js
|
||||
webgl-mochitest/es3-data.js
|
||||
webgl-mochitest/webgl-util.js
|
||||
|
||||
[webgl-mochitest/ensure-exts/test_ANGLE_instanced_arrays.html]
|
||||
fail-if = (os == 'android') || (os == 'mac')
|
||||
[webgl-mochitest/ensure-exts/test_EXT_blend_minmax.html]
|
||||
fail-if = (os == 'android')
|
||||
[webgl-mochitest/ensure-exts/test_EXT_color_buffer_half_float.html]
|
||||
fail-if = (os == 'android')
|
||||
[webgl-mochitest/ensure-exts/test_EXT_disjoint_timer_query.html]
|
||||
fail-if = (os == 'android') || (os == 'linux') || (os == 'mac') || (os == 'win')
|
||||
[webgl-mochitest/ensure-exts/test_EXT_frag_depth.html]
|
||||
fail-if = (os == 'android')
|
||||
[webgl-mochitest/ensure-exts/test_EXT_sRGB.html]
|
||||
fail-if = (os == 'android') || (os == 'linux') || (os == 'mac') || (os == 'win')
|
||||
[webgl-mochitest/ensure-exts/test_EXT_shader_texture_lod.html]
|
||||
fail-if = (os == 'android') || (os == 'linux') || (os == 'mac')
|
||||
[webgl-mochitest/ensure-exts/test_EXT_texture_filter_anisotropic.html]
|
||||
fail-if = (os == 'android') || (os == 'linux')
|
||||
[webgl-mochitest/ensure-exts/test_OES_standard_derivatives.html]
|
||||
fail-if = (os == 'android')
|
||||
[webgl-mochitest/ensure-exts/test_WEBGL_color_buffer_float.html]
|
||||
fail-if = (os == 'android')
|
||||
[webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_atc.html]
|
||||
fail-if = (os == 'android') || (os == 'linux') || (os == 'mac') || (os == 'win')
|
||||
[webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_es3.html]
|
||||
fail-if = (os == 'android') || (os == 'linux') || (os == 'mac') || (os == 'win')
|
||||
[webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_etc1.html]
|
||||
# Win7 is 6.1
|
||||
fail-if = (os == 'linux') || (os == 'mac') || (os == 'win' && os_version == '6.1')
|
||||
[webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_pvrtc.html]
|
||||
fail-if = (os == 'android') || (os == 'linux') || (os == 'mac') || (os == 'win')
|
||||
[webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_s3tc.html]
|
||||
fail-if = (os == 'android') || (os == 'linux')
|
||||
[webgl-mochitest/ensure-exts/test_WEBGL_depth_texture.html]
|
||||
fail-if = (os == 'mac')
|
||||
[webgl-mochitest/ensure-exts/test_WEBGL_draw_buffers.html]
|
||||
# Win7 is 6.1
|
||||
fail-if = (os == 'android') || (os == 'win' && os_version == '6.1')
|
||||
|
||||
[webgl-mochitest/ensure-exts/test_common.html]
|
||||
|
||||
|
||||
[webgl-mochitest/test_backbuffer_channels.html]
|
||||
fail-if = (os == 'b2g')
|
||||
[webgl-mochitest/test_depth_readpixels.html]
|
||||
|
32
dom/canvas/test/webgl-mochitest/ensure-exts/ensure-ext.js
Normal file
32
dom/canvas/test/webgl-mochitest/ensure-exts/ensure-ext.js
Normal file
@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
|
||||
function EnsureExt(name, shouldBe = true) {
|
||||
var c = document.createElement('canvas');
|
||||
var gl = c.getContext('experimental-webgl');
|
||||
|
||||
if (shouldBe) {
|
||||
ok(gl.getExtension(name), 'Should have extension ' + name + '.');
|
||||
} else {
|
||||
ok(!gl.getExtension(name), 'Should not have extension ' + name + '.');
|
||||
}
|
||||
}
|
||||
|
||||
function EnsureDraftExt(name, shouldBe = true) {
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
var fnEnsure = function() {
|
||||
EnsureExt(name, shouldBe);
|
||||
SimpleTest.finish();
|
||||
};
|
||||
|
||||
if ('SpecialPowers' in window) {
|
||||
var prefStateList = [
|
||||
['webgl.enable-draft-extensions', true],
|
||||
];
|
||||
var prefEnv = {'set': prefStateList};
|
||||
SpecialPowers.pushPrefEnv(prefEnv, fnEnsure);
|
||||
} else {
|
||||
console.log('Couldn\'t use SpecialPowers to enable draft extensions.');
|
||||
fnEnsure();
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('ANGLE_instanced_arrays');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('EXT_blend_minmax');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('EXT_color_buffer_half_float');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureDraftExt('EXT_disjoint_timer_query');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('EXT_frag_depth');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('EXT_sRGB');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('EXT_shader_texture_lod');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('EXT_texture_filter_anisotropic');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('OES_standard_derivatives');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('WEBGL_color_buffer_float');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('WEBGL_compressed_texture_atc');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureDraftExt('WEBGL_compressed_texture_es3');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('WEBGL_compressed_texture_etc1');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('WEBGL_compressed_texture_pvrtc');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('WEBGL_compressed_texture_s3tc');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('WEBGL_depth_texture');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
<script src='ensure-ext.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
EnsureExt('WEBGL_draw_buffers');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
75
dom/canvas/test/webgl-mochitest/ensure-exts/test_common.html
Normal file
75
dom/canvas/test/webgl-mochitest/ensure-exts/test_common.html
Normal file
@ -0,0 +1,75 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
||||
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
'use strict';
|
||||
|
||||
var c = document.createElement('canvas');
|
||||
var gl = c.getContext('experimental-webgl');
|
||||
|
||||
function ensureExt(name) {
|
||||
ok(gl.getExtension(name), 'Should have extension ' + name + '.');
|
||||
}
|
||||
|
||||
function ensureNoExt(name) {
|
||||
ok(!gl.getExtension(name), 'Should not have extension ' + name + '.');
|
||||
}
|
||||
|
||||
do {
|
||||
if (!gl)
|
||||
break;
|
||||
|
||||
// These aren't all guaranteed, but they're common to all our test slaves.
|
||||
// If you're adding a slave config that is missing one of these, comment the line out
|
||||
// and split it into its own test.
|
||||
|
||||
// Implemented. (commented out if not test-slave-universal)
|
||||
//ensureExt('ANGLE_instanced_arrays');
|
||||
//ensureExt('EXT_blend_minmax');
|
||||
//ensureExt('EXT_color_buffer_half_float');
|
||||
//ensureExt('EXT_frag_depth');
|
||||
//ensureExt('EXT_shader_texture_lod');
|
||||
//ensureExt('EXT_sRGB');
|
||||
//ensureExt('EXT_texture_filter_anisotropic');
|
||||
ensureExt('OES_element_index_uint');
|
||||
//ensureExt('OES_standard_derivatives');
|
||||
ensureExt('OES_texture_float');
|
||||
ensureExt('OES_texture_float_linear');
|
||||
ensureExt('OES_texture_half_float');
|
||||
ensureExt('OES_texture_half_float_linear');
|
||||
ensureExt('OES_vertex_array_object');
|
||||
//ensureExt('WEBGL_color_buffer_float');
|
||||
//ensureExt('WEBGL_compressed_texture_atc');
|
||||
//ensureExt('WEBGL_compressed_texture_es3');
|
||||
//ensureExt('WEBGL_compressed_texture_etc1');
|
||||
//ensureExt('WEBGL_compressed_texture_pvrtc');
|
||||
//ensureExt('WEBGL_compressed_texture_s3tc');
|
||||
//ensureExt('WEBGL_depth_texture');
|
||||
//ensureExt('WEBGL_draw_buffers');
|
||||
ensureExt('WEBGL_lose_context');
|
||||
|
||||
// Draft extensions, which should not be exposed by default.
|
||||
ensureNoExt('EXT_disjoint_timer_query');
|
||||
ensureNoExt('WEBGL_compressed_texture_es3');
|
||||
|
||||
// Not implemented.
|
||||
ensureNoExt('EXT_color_buffer_float');
|
||||
ensureNoExt('OES_fbo_render_mipmap');
|
||||
ensureNoExt('WEBGL_compressed_texture_astc');
|
||||
ensureNoExt('WEBGL_security_sensitive_resources');
|
||||
ensureNoExt('WEBGL_shared_resources');
|
||||
|
||||
// Privileged
|
||||
//ensureExt('WEBGL_debug_renderer_info');
|
||||
//ensureExt('WEBGL_debug_shaders');
|
||||
} while (false);
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -28,7 +28,8 @@ def ReadLocalFile(include):
|
||||
|
||||
return data
|
||||
|
||||
kSimpleTestReplacement = '''\n
|
||||
kSimpleTestReplacement = '''
|
||||
|
||||
<script>
|
||||
// SimpleTest.js replacement
|
||||
|
||||
@ -52,10 +53,12 @@ function todo(val, text) {
|
||||
SimpleTest = {
|
||||
waitForExplicitFinish: function() {},
|
||||
finish: function() {},
|
||||
requestFlakyTimeout: function() {},
|
||||
};
|
||||
</script>
|
||||
<div id='mochi-to-testcase-output'></div>
|
||||
\n'''
|
||||
|
||||
'''
|
||||
|
||||
fin = open(mochiPath, 'rb')
|
||||
fout = open(testPath, 'wb')
|
||||
|
Loading…
Reference in New Issue
Block a user