summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service/feature_info.cc
diff options
context:
space:
mode:
authorbajones@chromium.org <bajones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 16:25:57 +0000
committerbajones@chromium.org <bajones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 16:25:57 +0000
commitab4fd728dca3d8d59564dd5fb552eea244929363 (patch)
treee46ae4f2fefcb282c0212f96ec6d254739c66319 /gpu/command_buffer/service/feature_info.cc
parente9ec622093449d24d4f5182eb6c60f0266308eb3 (diff)
downloadchromium_src-ab4fd728dca3d8d59564dd5fb552eea244929363.zip
chromium_src-ab4fd728dca3d8d59564dd5fb552eea244929363.tar.gz
chromium_src-ab4fd728dca3d8d59564dd5fb552eea244929363.tar.bz2
Added emulation of the OES_vertex_array_object WebGL extension for devices that
do not support it natively, such as those using ANGLE. TEST=Visit https://www.khronos.org/registry/webgl/sdk/tests/conformance/extensions/oes-vertex-array-object.html on an ANGLE device. All tests should pass. Review URL: https://chromiumcodereview.appspot.com/10983072 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161589 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/service/feature_info.cc')
-rw-r--r--gpu/command_buffer/service/feature_info.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
index 7f15dbf..606db90 100644
--- a/gpu/command_buffer/service/feature_info.cc
+++ b/gpu/command_buffer/service/feature_info.cc
@@ -84,7 +84,8 @@ FeatureInfo::FeatureFlags::FeatureFlags()
disable_workarounds(false),
is_intel(false),
is_nvidia(false),
- is_amd(false) {
+ is_amd(false),
+ is_mesa(false) {
}
FeatureInfo::FeatureInfo() {
@@ -207,6 +208,7 @@ void FeatureInfo::AddFeatures(const char* desired_features) {
feature_flags_.is_nvidia |= string_set.Contains("nvidia");
feature_flags_.is_amd |=
string_set.Contains("amd") || string_set.Contains("ati");
+ feature_flags_.is_mesa |= string_set.Contains("mesa");
}
}
@@ -344,11 +346,15 @@ void FeatureInfo::AddFeatures(const char* desired_features) {
validators_.render_buffer_format.AddValue(GL_DEPTH24_STENCIL8);
}
- if (ext.Desire("GL_OES_vertex_array_object") &&
- (ext.Have("GL_OES_vertex_array_object") ||
- ext.Have("GL_ARB_vertex_array_object") ||
- ext.Have("GL_APPLE_vertex_array_object"))) {
- feature_flags_.native_vertex_array_object_ = true;
+ if (ext.Desire("GL_OES_vertex_array_object")) {
+ if (ext.Have("GL_OES_vertex_array_object") ||
+ ext.Have("GL_ARB_vertex_array_object") ||
+ ext.Have("GL_APPLE_vertex_array_object")) {
+ feature_flags_.native_vertex_array_object_ = true;
+ }
+
+ // OES_vertex_array_object is emulated if not present natively,
+ // so the extension string is always exposed.
AddExtensionString("GL_OES_vertex_array_object");
}