Bug 1285661 - Add WebGL2 to about:support. - r=jrmuizel

This commit is contained in:
Jeff Gilbert 2016-07-08 14:27:57 -07:00
Родитель be3857f963
Коммит ff25018f0a
4 изменённых файлов: 55 добавлений и 34 удалений

Просмотреть файл

@ -366,6 +366,7 @@ var snapshotFormatters = {
? apzInfo.join("; ")
: localizedMsg(["apzNone"]));
addRowFromKey("features", "webglRenderer");
addRowFromKey("features", "webgl2Renderer");
addRowFromKey("features", "supportsHardwareH264", "hardwareH264");
addRowFromKey("features", "direct2DEnabled", "#Direct2D");

Просмотреть файл

@ -50,8 +50,8 @@ blockedOSVersion = Blocked for your operating system version.
# LOCALIZATION NOTE The verb "blocked" here refers to a graphics feature such as "Direct2D" or "OpenGL layers".
blockedMismatchedVersion = Blocked for your graphics driver version mismatch between registry and DLL.
# LOCALIZATION NOTE In the following strings, "Direct2D", "DirectWrite" and "ClearType"
# are proper nouns and should not be translated. Feel free to leave english strings if
# LOCALIZATION NOTE In the following strings, "Direct2D", "DirectWrite" and "ClearType"
# are proper nouns and should not be translated. Feel free to leave english strings if
# there are no good translations, these are only used in about:support
clearTypeParameters = ClearType Parameters
@ -71,6 +71,7 @@ gpuDriverVersion = Driver Version
gpuDriverDate = Driver Date
gpuActive = Active
webglRenderer = WebGL Renderer
webgl2Renderer = WebGL2 Renderer
GPU1 = GPU #1
GPU2 = GPU #2
blocklistedBug = Blocklisted due to known issues

Просмотреть файл

@ -420,44 +420,63 @@ var dataProviders = {
data.direct2DEnabledMessage =
statusMsgForFeature(Ci.nsIGfxInfo.FEATURE_DIRECT2D);
//////
let doc =
Cc["@mozilla.org/xmlextras/domparser;1"]
.createInstance(Ci.nsIDOMParser)
.parseFromString("<html/>", "text/html");
let canvas = doc.createElement("canvas");
canvas.width = 1;
canvas.height = 1;
function GetWebGLInfo(contextType) {
let canvas = doc.createElement("canvas");
canvas.width = 1;
canvas.height = 1;
let gl;
try {
gl = canvas.getContext("experimental-webgl");
} catch(e) {}
///////
if (gl) {
let ext = gl.getExtension("WEBGL_debug_renderer_info");
// this extension is unconditionally available to chrome. No need to check.
data.webglRenderer = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL)
+ " -- "
+ gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);
} else {
let feature;
if (AppConstants.platform == "win") {
// If ANGLE is not available but OpenGL is, we want to report on the
// OpenGL feature, because that's what's going to get used. In all
// other cases we want to report on the ANGLE feature.
let angle = gfxInfo.getFeatureStatus(gfxInfo.FEATURE_WEBGL_ANGLE) ==
gfxInfo.FEATURE_STATUS_OK;
let opengl = gfxInfo.getFeatureStatus(gfxInfo.FEATURE_WEBGL_OPENGL) ==
gfxInfo.FEATURE_STATUS_OK;
feature = !angle && opengl ? gfxInfo.FEATURE_WEBGL_OPENGL :
gfxInfo.FEATURE_WEBGL_ANGLE;
} else {
feature = gfxInfo.FEATURE_WEBGL_OPENGL;
}
data.webglRendererMessage = statusMsgForFeature(feature);
let creationError = "(no info)";
canvas.addEventListener(
"webglcontextcreationerror",
function(e) {
creationError = e.statusMessage;
},
false
);
let gl = canvas.getContext(contextType);
if (!gl)
return creationError;
///////
let infoExt = gl.getExtension("WEBGL_debug_renderer_info");
// This extension is unconditionally available to chrome. No need to check.
let vendor = gl.getParameter(infoExt.UNMASKED_VENDOR_WEBGL);
let renderer = gl.getParameter(infoExt.UNMASKED_RENDERER_WEBGL);
let contextInfo = vendor + " -- " + renderer;
///////
// Eagerly free resources.
let loseExt = gl.getExtension("WEBGL_lose_context");
loseExt.loseContext();
///////
return contextInfo;
}
//////
data.webglRenderer = GetWebGLInfo("webgl");
data.webgl2Renderer = GetWebGLInfo("webgl2");
//////
let infoInfo = gfxInfo.getInfo();
if (infoInfo)
data.info = infoInfo;

Просмотреть файл

@ -297,6 +297,9 @@ const SNAPSHOT_SCHEMA = {
webglRenderer: {
type: "string",
},
webgl2Renderer: {
type: "string",
},
info: {
type: "object",
},
@ -315,9 +318,6 @@ const SNAPSHOT_SCHEMA = {
direct2DEnabledMessage: {
type: "array",
},
webglRendererMessage: {
type: "array",
},
},
},
javaScript: {