168 lines
3.7 KiB
HTML
168 lines
3.7 KiB
HTML
<!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>
|
|
|
|
function RunWithPrefs(prefPairList, func) {
|
|
var prefEnv = {'set': prefPairList};
|
|
try {
|
|
SpecialPowers.pushPrefEnv(prefEnv, func);
|
|
} catch (e) {
|
|
console.log('Warning: Failed to set prefs: ' + JSON.stringify(prefPairList));
|
|
func();
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////
|
|
|
|
var ANGLE_IS_SINGLETON = true;
|
|
|
|
var expectD3DType;
|
|
try {
|
|
// code borrowed from browser/modules/test/browser_taskbar_preview.js
|
|
var version = SpecialPowers.Services.sysinfo.getProperty('version');
|
|
version = parseFloat(version);
|
|
|
|
// Version 6.0 is Vista, 6.1 is 7.
|
|
if (version <= 6.0)
|
|
expectD3DType = 'd3d9';
|
|
else
|
|
expectD3DType = 'd3d11';
|
|
} catch (e) {
|
|
expectD3DType = 'd3d11';
|
|
}
|
|
|
|
function GetRenderer() {
|
|
var c = document.createElement('canvas');
|
|
var gl = c.getContext('experimental-webgl');
|
|
if (!gl)
|
|
return undefined;
|
|
|
|
var ext = gl.getExtension('WEBGL_debug_renderer_info');
|
|
if (!ext)
|
|
throw new Error('Requires WEBGL_debug_renderer_info.');
|
|
|
|
var renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);
|
|
return renderer;
|
|
}
|
|
|
|
function GetRendererType() {
|
|
var renderer = GetRenderer();
|
|
if (renderer === undefined)
|
|
return 'none';
|
|
|
|
if (renderer.includes('ANGLE')) {
|
|
if (renderer.includes('Microsoft Basic Render Driver')) // Also includes 'Direct3D11'.
|
|
return 'warp';
|
|
if (renderer.includes('Direct3D11'))
|
|
return 'd3d11';
|
|
if (renderer.includes('Direct3D9'))
|
|
return 'd3d9';
|
|
|
|
} else {
|
|
return 'gl';
|
|
}
|
|
|
|
throw new Error('Unrecognized renderer type for: ' + renderer);
|
|
}
|
|
|
|
function TestActualType(testName, expectedType) {
|
|
var actualType = GetRendererType();
|
|
ok(actualType == expectedType,
|
|
'[' + testName + '] Expected ' + expectedType + ', was ' + actualType);
|
|
}
|
|
|
|
////////////////////////////////////////
|
|
|
|
function TestDefault() {
|
|
var expectedType = 'gl';
|
|
var isWindows = (navigator.platform.indexOf('Win') == 0);
|
|
if (isWindows) {
|
|
expectedType = expectD3DType;
|
|
}
|
|
TestActualType('TestDefault', expectedType);
|
|
|
|
if (isWindows && !ANGLE_IS_SINGLETON) {
|
|
var prefPairList = [
|
|
['webgl.angle.force-warp', true],
|
|
];
|
|
RunWithPrefs(prefPairList, TestWARP);
|
|
return;
|
|
}
|
|
|
|
var prefPairList = [
|
|
['webgl.disabled', true],
|
|
];
|
|
RunWithPrefs(prefPairList, TestDisabled);
|
|
}
|
|
|
|
|
|
function TestWARP() {
|
|
var expectedType = (expectD3DType == 'd3d11') ? 'warp' : 'none';
|
|
TestActualType('TestWARP', expectedType);
|
|
|
|
var prefPairList = [
|
|
['webgl.angle.force-warp', false],
|
|
['webgl.angle.force-d3d11', true],
|
|
];
|
|
RunWithPrefs(prefPairList, TestD3D11);
|
|
}
|
|
|
|
|
|
function TestD3D11() {
|
|
var expectedType = (expectD3DType == 'd3d11') ? 'd3d11' : 'none';
|
|
TestActualType('TestD3D11', expectedType);
|
|
|
|
var prefPairList = [
|
|
['webgl.angle.force-d3d11', false],
|
|
['webgl.angle.try-d3d11', false],
|
|
];
|
|
RunWithPrefs(prefPairList, TestD3D9);
|
|
}
|
|
|
|
|
|
function TestD3D9() {
|
|
TestActualType('TestD3D9', 'd3d9');
|
|
|
|
var prefPairList = [
|
|
['webgl.angle.try-d3d11', true],
|
|
['webgl.disable-angle', true],
|
|
];
|
|
RunWithPrefs(prefPairList, TestWinGL);
|
|
}
|
|
|
|
|
|
function TestWinGL() {
|
|
TestActualType('TestWinGL', 'gl');
|
|
|
|
var prefPairList = [
|
|
['webgl.disabled', true],
|
|
];
|
|
RunWithPrefs(prefPairList, TestDisabled);
|
|
}
|
|
|
|
|
|
function TestDisabled() {
|
|
TestActualType('TestDisabled', 'none');
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
////////////////////////////////////////
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
var prefPairList = [
|
|
['webgl.force-enabled', true],
|
|
['webgl.enable-debug-renderer-info', true],
|
|
];
|
|
RunWithPrefs(prefPairList, TestDefault);
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|