Bumping manifests a=b2g-bump
[gecko.git] / widget / xpwidgets / GfxInfoWebGL.cpp
blob46f8d113046c5412e4c8b6053e70b54dbfa8f992
1 /* vim: se cin sw=2 ts=2 et : */
2 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
8 #include "GfxInfoWebGL.h"
10 #include "nsServiceManagerUtils.h"
12 #include "GLDefs.h"
13 #include "nsIDOMWebGLRenderingContext.h"
14 #include "nsICanvasRenderingContextInternal.h"
16 using namespace mozilla::widget;
18 nsresult
19 GfxInfoWebGL::GetWebGLParameter(const nsAString& aParam, nsAString& aResult)
21 GLenum param;
23 if (aParam.EqualsLiteral("vendor")) param = LOCAL_GL_VENDOR;
24 else if (aParam.EqualsLiteral("renderer")) param = LOCAL_GL_RENDERER;
25 else if (aParam.EqualsLiteral("version")) param = LOCAL_GL_VERSION;
26 else if (aParam.EqualsLiteral("shading_language_version")) param = LOCAL_GL_SHADING_LANGUAGE_VERSION;
27 else if (aParam.EqualsLiteral("extensions")) param = LOCAL_GL_EXTENSIONS;
28 else if (aParam.EqualsLiteral("full-renderer")) param = 0;
29 else return NS_ERROR_INVALID_ARG;
31 nsCOMPtr<nsIDOMWebGLRenderingContext> webgl =
32 do_CreateInstance("@mozilla.org/content/canvas-rendering-context;1?id=experimental-webgl");
33 if (!webgl)
34 return NS_ERROR_NOT_AVAILABLE;
36 nsCOMPtr<nsICanvasRenderingContextInternal> webglInternal =
37 do_QueryInterface(webgl);
38 if (!webglInternal)
39 return NS_ERROR_NOT_AVAILABLE;
41 nsresult rv = webglInternal->SetDimensions(16, 16);
42 NS_ENSURE_SUCCESS(rv, rv);
44 if (param)
45 return webgl->MozGetUnderlyingParamString(param, aResult);
47 // this is the "full renderer" string, which is vendor + renderer + version
49 nsAutoString str;
51 rv = webgl->MozGetUnderlyingParamString(LOCAL_GL_VENDOR, str);
52 NS_ENSURE_SUCCESS(rv, rv);
54 aResult.Append(str);
55 aResult.AppendLiteral(" -- ");
57 rv = webgl->MozGetUnderlyingParamString(LOCAL_GL_RENDERER, str);
58 NS_ENSURE_SUCCESS(rv, rv);
60 aResult.Append(str);
61 aResult.AppendLiteral(" -- ");
63 rv = webgl->MozGetUnderlyingParamString(LOCAL_GL_VERSION, str);
64 NS_ENSURE_SUCCESS(rv, rv);
66 aResult.Append(str);
68 return NS_OK;