diff options
author | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-04 21:37:12 +0000 |
---|---|---|
committer | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-04 21:37:12 +0000 |
commit | 6d66889e60c2ed2f6da8affb7399bba857c6dc30 (patch) | |
tree | c83f6c8166446d1307c49d8e4811d5063e313839 /webkit | |
parent | f32c2fdc3019a766f9fa8a79ba11528e036cef97 (diff) | |
download | chromium_src-6d66889e60c2ed2f6da8affb7399bba857c6dc30.zip chromium_src-6d66889e60c2ed2f6da8affb7399bba857c6dc30.tar.gz chromium_src-6d66889e60c2ed2f6da8affb7399bba857c6dc30.tar.bz2 |
Introduce gpu::Capabilities
gpu::Capabilities is a subset of FeatureInfo that is exposed
to the command buffer client.
It is populated in GlES2Implementation::Initialize,
piggy-backing on the synchronous init ipc.
Make ContextProviderInProcess use gpu::Capabilities as well
instead of hardcoding them.
Merged GpuControl::SupportsGpuMemoryBuffer into capabilities.
BUG=285390
Review URL: https://codereview.chromium.org/73263003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238779 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
3 files changed, 22 insertions, 16 deletions
diff --git a/webkit/common/gpu/context_provider_in_process.cc b/webkit/common/gpu/context_provider_in_process.cc index f37bf90..d38b3a0 100644 --- a/webkit/common/gpu/context_provider_in_process.cc +++ b/webkit/common/gpu/context_provider_in_process.cc @@ -110,6 +110,8 @@ bool ContextProviderInProcess::BindToCurrentThread() { if (!context3d_->makeContextCurrent()) return false; + InitializeCapabilities(); + std::string unique_context_name = base::StringPrintf("%s-%p", debug_name_.c_str(), context3d_.get()); context3d_->pushGroupMarkerEXT(unique_context_name.c_str()); @@ -120,28 +122,24 @@ bool ContextProviderInProcess::BindToCurrentThread() { return true; } -cc::ContextProvider::Capabilities -ContextProviderInProcess::ContextCapabilities() { +void ContextProviderInProcess::InitializeCapabilities() { + Capabilities caps(context3d_->GetImplementation()->capabilities()); + // We always use a WebGraphicsContext3DInProcessCommandBufferImpl which // provides the following capabilities: - Capabilities caps; caps.discard_backbuffer = true; - caps.map_image = true; caps.map_sub = true; caps.set_visibility = true; caps.shallow_flush = true; - caps.texture_format_bgra8888 = true; - caps.texture_rectangle = true; - - blink::WebString extensions = - context3d_->getString(0x1F03 /* GL_EXTENSIONS */); - std::vector<std::string> extension_list; - base::SplitString(extensions.utf8(), ' ', &extension_list); - std::set<std::string> extension_set(extension_list.begin(), - extension_list.end()); - - caps.post_sub_buffer = extension_set.count("GL_CHROMIUM_post_sub_buffer") > 0; - return caps; + + capabilities_ = caps; +} + +cc::ContextProvider::Capabilities +ContextProviderInProcess::ContextCapabilities() { + DCHECK(lost_context_callback_proxy_); // Is bound to thread. + DCHECK(context_thread_checker_.CalledOnValidThread()); + return capabilities_; } blink::WebGraphicsContext3D* ContextProviderInProcess::Context3d() { diff --git a/webkit/common/gpu/context_provider_in_process.h b/webkit/common/gpu/context_provider_in_process.h index c700614..2dbb7a6 100644 --- a/webkit/common/gpu/context_provider_in_process.h +++ b/webkit/common/gpu/context_provider_in_process.h @@ -57,6 +57,8 @@ class WEBKIT_GPU_EXPORT ContextProviderInProcess void OnSwapBuffersComplete(); private: + void InitializeCapabilities(); + base::ThreadChecker main_thread_checker_; base::ThreadChecker context_thread_checker_; @@ -78,6 +80,8 @@ class WEBKIT_GPU_EXPORT ContextProviderInProcess scoped_ptr<SwapBuffersCompleteCallbackProxy> swap_buffers_complete_callback_proxy_; + cc::ContextProvider::Capabilities capabilities_; + DISALLOW_COPY_AND_ASSIGN(ContextProviderInProcess); }; diff --git a/webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h b/webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h index 7ebc5e8..76d1715 100644 --- a/webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h +++ b/webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h @@ -555,6 +555,10 @@ class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl ::gpu::ContextSupport* GetContextSupport(); + ::gpu::gles2::GLES2Implementation* GetImplementation() { + return gl_; + } + private: WebGraphicsContext3DInProcessCommandBufferImpl( scoped_ptr< ::gpu::GLInProcessContext> context, |