summaryrefslogtreecommitdiffstats
path: root/cc
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 /cc
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 'cc')
-rw-r--r--cc/DEPS1
-rw-r--r--cc/output/context_provider.cc20
-rw-r--r--cc/output/context_provider.h5
3 files changed, 26 insertions, 0 deletions
diff --git a/cc/DEPS b/cc/DEPS
index 4e1cc74..9bd1a46 100644
--- a/cc/DEPS
+++ b/cc/DEPS
@@ -2,6 +2,7 @@ include_rules = [
"+gpu/GLES2",
"+gpu/command_buffer/client/context_support.h",
"+gpu/command_buffer/common/gpu_memory_allocation.h",
+ "+gpu/command_buffer/common/capabilities.h",
"+gpu/command_buffer/common/mailbox.h",
"+media",
"+skia/ext",
diff --git a/cc/output/context_provider.cc b/cc/output/context_provider.cc
index 853a519..e8e5c9d 100644
--- a/cc/output/context_provider.cc
+++ b/cc/output/context_provider.cc
@@ -27,4 +27,24 @@ ContextProvider::Capabilities::Capabilities()
discard_framebuffer(false),
max_transfer_buffer_usage_bytes(std::numeric_limits<size_t>::max()) {}
+ContextProvider::Capabilities::Capabilities(
+ const gpu::Capabilities& gpu_capabilities)
+ : discard_backbuffer(false),
+ egl_image_external(gpu_capabilities.egl_image_external),
+ fast_npot_mo8_textures(gpu_capabilities.fast_npot_mo8_textures),
+ iosurface(gpu_capabilities.iosurface),
+ map_image(gpu_capabilities.map_image),
+ map_sub(false),
+ post_sub_buffer(gpu_capabilities.post_sub_buffer),
+ set_visibility(false),
+ shallow_flush(false),
+ swapbuffers_complete_callback(false),
+ texture_format_bgra8888(gpu_capabilities.texture_format_bgra8888),
+ texture_format_etc1(gpu_capabilities.texture_format_etc1),
+ texture_rectangle(gpu_capabilities.texture_rectangle),
+ texture_storage(gpu_capabilities.texture_storage),
+ texture_usage(gpu_capabilities.texture_usage),
+ discard_framebuffer(gpu_capabilities.discard_framebuffer),
+ max_transfer_buffer_usage_bytes(std::numeric_limits<size_t>::max()) {}
+
} // namespace cc
diff --git a/cc/output/context_provider.h b/cc/output/context_provider.h
index a79fbfc..72a627cb 100644
--- a/cc/output/context_provider.h
+++ b/cc/output/context_provider.h
@@ -8,6 +8,7 @@
#include "base/callback.h"
#include "base/memory/ref_counted.h"
#include "cc/base/cc_export.h"
+#include "gpu/command_buffer/common/capabilities.h"
class GrContext;
namespace blink { class WebGraphicsContext3D; }
@@ -48,6 +49,10 @@ class ContextProvider : public base::RefCountedThreadSafe<ContextProvider> {
size_t max_transfer_buffer_usage_bytes;
CC_EXPORT Capabilities();
+
+ // TODO(boliu): Compose a gpu::Capabilities instead and remove this
+ // constructor.
+ explicit CC_EXPORT Capabilities(const gpu::Capabilities& gpu_capabilities);
};
// Returns the capabilities of the currently bound 3d context.
virtual Capabilities ContextCapabilities() = 0;