diff options
author | backer@chromium.org <backer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-26 21:02:45 +0000 |
---|---|---|
committer | backer@chromium.org <backer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-26 21:02:45 +0000 |
commit | 6f5fac9d1b4c8bfc924ed555f46c3e67a8a8f962 (patch) | |
tree | 867db68f1f7fa9c5e0f41910240e406286754e40 /gpu/command_buffer | |
parent | c9b218291fd46c0ceb4b1a3100b182ad26cbb1b8 (diff) | |
download | chromium_src-6f5fac9d1b4c8bfc924ed555f46c3e67a8a8f962.zip chromium_src-6f5fac9d1b4c8bfc924ed555f46c3e67a8a8f962.tar.gz chromium_src-6f5fac9d1b4c8bfc924ed555f46c3e67a8a8f962.tar.bz2 |
Aura: Fix partial swaps in the UI
Extensions were being cached per context group. Recently we started creating an offscreen context before any onscreen contexts, which meant that our onscreen specific extensions were never being reported. This CL keeps the cacheing for the context specific extensions and adds in the surface specific extensions.
TEST=use chrome://tracing to verify that HandlePostSubBuffer is being called in the GPU process on a CrOS device
BUG=none
Review URL: https://chromiumcodereview.appspot.com/10673002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@144271 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer')
-rw-r--r-- | gpu/command_buffer/service/feature_info.cc | 21 | ||||
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder.cc | 9 |
2 files changed, 10 insertions, 20 deletions
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc index 85d044d..77baf1b 100644 --- a/gpu/command_buffer/service/feature_info.cc +++ b/gpu/command_buffer/service/feature_info.cc @@ -9,7 +9,6 @@ #include "base/string_number_conversions.h" #include "base/string_util.h" #include "gpu/command_buffer/service/gl_utils.h" -#include "ui/gl/gl_context.h" #include "ui/gl/gl_implementation.h" #if defined(OS_MACOSX) #include "ui/surface/io_surface_support_mac.h" @@ -21,9 +20,9 @@ namespace gles2 { namespace { struct FormatInfo { - GLenum format; - const GLenum* types; - size_t count; + GLenum format; + const GLenum* types; + size_t count; }; } // anonymous namespace. @@ -143,11 +142,7 @@ bool FeatureInfo::Initialize(const DisallowedFeatures& disallowed_features, void FeatureInfo::AddFeatures(const char* desired_features) { // Figure out what extensions to turn on. ExtensionHelper ext( - // Some unittests execute without a context made current - // so fall back to glGetString - gfx::GLContext::GetCurrent() ? - gfx::GLContext::GetCurrent()->GetExtensions().c_str() : - reinterpret_cast<const char*>(glGetString(GL_EXTENSIONS)), + reinterpret_cast<const char*>(glGetString(GL_EXTENSIONS)), desired_features); // NOTE: We need to check both GL_VENDOR and GL_RENDERER because for example @@ -491,14 +486,6 @@ void FeatureInfo::AddFeatures(const char* desired_features) { enable_texture_half_float_linear; feature_flags_.npot_ok |= npot_ok; - if (ext.HaveAndDesire("GL_CHROMIUM_post_sub_buffer")) { - AddExtensionString("GL_CHROMIUM_post_sub_buffer"); - } - - if (ext.HaveAndDesire("GL_CHROMIUM_front_buffer_cached")) { - AddExtensionString("GL_CHROMIUM_front_buffer_cached"); - } - if (ext.Desire("GL_ANGLE_pack_reverse_row_order") && ext.Have("GL_ANGLE_pack_reverse_row_order")) { AddExtensionString("GL_ANGLE_pack_reverse_row_order"); diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 35941ea..61fa0b8 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -6535,7 +6535,7 @@ error::Error GLES2DecoderImpl::HandlePixelStorei( error::Error GLES2DecoderImpl::HandlePostSubBufferCHROMIUM( uint32 immediate_data_size, const gles2::PostSubBufferCHROMIUM& c) { TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandlePostSubBufferCHROMIUM"); - if (!context_->HasExtension("GL_CHROMIUM_post_sub_buffer")) { + if (!surface_->HasExtension("GL_CHROMIUM_post_sub_buffer")) { SetGLError(GL_INVALID_OPERATION, "glPostSubBufferCHROMIUM", "command not supported by surface"); return error::kNoError; @@ -6726,10 +6726,13 @@ error::Error GLES2DecoderImpl::HandleGetString( offset + arraysize(kOESDerivativeExtension), std::string()); } - str = extensions.c_str(); } else { - str = feature_info_->extensions().c_str(); + extensions = feature_info_->extensions().c_str(); } + std::string surface_extensions = surface_->GetExtensions(); + if (!surface_extensions.empty()) + extensions += " " + surface_extensions; + str = extensions.c_str(); } break; default: |