зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1285661 - Add WebGL2 to about:support. - r=jrmuizel
This commit is contained in:
Родитель
be3857f963
Коммит
ff25018f0a
|
@ -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: {
|
||||
|
|
Загрузка…
Ссылка в новой задаче