summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authorboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-04 21:37:12 +0000
committerboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-04 21:37:12 +0000
commit6d66889e60c2ed2f6da8affb7399bba857c6dc30 (patch)
treec83f6c8166446d1307c49d8e4811d5063e313839 /webkit
parentf32c2fdc3019a766f9fa8a79ba11528e036cef97 (diff)
downloadchromium_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')
-rw-r--r--webkit/common/gpu/context_provider_in_process.cc30
-rw-r--r--webkit/common/gpu/context_provider_in_process.h4
-rw-r--r--webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h4
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,