diff options
author | aelias@chromium.org <aelias@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-12 05:31:02 +0000 |
---|---|---|
committer | aelias@chromium.org <aelias@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-12 05:31:02 +0000 |
commit | 4bf88ce2b0e4b9e4fe667fbb2a1a1c35bc6e433f (patch) | |
tree | 87435155cb7d934e7012cb713535168cc1208fb7 /gpu | |
parent | a6e4fbfd6c6848be53e04bcd11b097df8399064d (diff) | |
download | chromium_src-4bf88ce2b0e4b9e4fe667fbb2a1a1c35bc6e433f.zip chromium_src-4bf88ce2b0e4b9e4fe667fbb2a1a1c35bc6e433f.tar.gz chromium_src-4bf88ce2b0e4b9e4fe667fbb2a1a1c35bc6e433f.tar.bz2 |
Enable virtual context on IMG devices only.
This adds booleans to feature_info for all the common Android vendors
and turns on virtual contexts for IMG only, as there are remaining bugs
with the other architectures (and IMG is the main reason we are working
on virtual contexts to begin with). Setting the command-line flag will
force-enable virtual contexts on any architecture.
BUG=160710,165531
Review URL: https://chromiumcodereview.appspot.com/11555010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172535 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/feature_info.cc | 23 | ||||
-rw-r--r-- | gpu/command_buffer/service/feature_info.h | 1 |
2 files changed, 19 insertions, 5 deletions
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc index 26bc4ea..0a207336 100644 --- a/gpu/command_buffer/service/feature_info.cc +++ b/gpu/command_buffer/service/feature_info.cc @@ -82,7 +82,8 @@ FeatureInfo::FeatureFlags::FeatureFlags() use_arb_occlusion_query_for_occlusion_query_boolean(false), native_vertex_array_object(false), disable_workarounds(false), - enable_shader_name_hashing(false) { + enable_shader_name_hashing(false), + enable_virtual_context(false) { } FeatureInfo::Workarounds::Workarounds() @@ -207,9 +208,13 @@ void FeatureInfo::AddFeatures(const char* desired_features) { GL_RENDERER, }; bool is_intel = false; - bool is_nvidia = false; + bool is_nvidia_desktop = false; bool is_amd = false; bool is_mesa = false; + bool is_nvidia_tegra = false; + bool is_img = false; + bool is_arm = false; + bool is_qualcomm = false; for (size_t ii = 0; ii < arraysize(string_ids); ++ii) { const char* str = reinterpret_cast<const char*>( glGetString(string_ids[ii])); @@ -217,9 +222,16 @@ void FeatureInfo::AddFeatures(const char* desired_features) { std::string lstr(StringToLowerASCII(std::string(str))); StringSet string_set(lstr); is_intel |= string_set.Contains("intel"); - is_nvidia |= string_set.Contains("nvidia"); + is_nvidia_desktop |= string_set.Contains("nvidia"); is_amd |= string_set.Contains("amd") || string_set.Contains("ati"); is_mesa |= string_set.Contains("mesa"); + + is_nvidia_tegra |= string_set.Contains("tegra"); + if (is_nvidia_tegra) + is_nvidia_desktop = false; + is_img |= string_set.Contains("imagination"); + is_arm |= string_set.Contains("arm"); + is_qualcomm |= string_set.Contains("qualcomm"); } } @@ -231,6 +243,7 @@ void FeatureInfo::AddFeatures(const char* desired_features) { CommandLine::ForCurrentProcess()->HasSwitch( switches::kEnableShaderNameHashing); + feature_flags_.enable_virtual_context = is_img; bool npot_ok = false; @@ -659,12 +672,12 @@ void FeatureInfo::AddFeatures(const char* desired_features) { workarounds_.set_texture_filter_before_generating_mipmap = true; workarounds_.clear_alpha_in_readpixels = true; - if (is_nvidia) { + if (is_nvidia_desktop) { workarounds_.use_current_program_after_successful_link = true; } #if defined(OS_MACOSX) - workarounds_.needs_offscreen_buffer_workaround = is_nvidia; + workarounds_.needs_offscreen_buffer_workaround = is_nvidia_desktop; workarounds_.needs_glsl_built_in_function_emulation = is_amd; if ((is_amd || is_intel) && diff --git a/gpu/command_buffer/service/feature_info.h b/gpu/command_buffer/service/feature_info.h index ec03789..a9fb832 100644 --- a/gpu/command_buffer/service/feature_info.h +++ b/gpu/command_buffer/service/feature_info.h @@ -42,6 +42,7 @@ class GPU_EXPORT FeatureInfo : public base::RefCounted<FeatureInfo> { bool native_vertex_array_object; bool disable_workarounds; bool enable_shader_name_hashing; + bool enable_virtual_context; }; struct Workarounds { |