Index: content/common/gpu/client/gpu_memory_buffer_impl.h |
diff --git a/content/common/gpu/client/gpu_memory_buffer_impl.h b/content/common/gpu/client/gpu_memory_buffer_impl.h |
index 52d5aef10953f055608afea1105682fa6c57e7aa..5409c545c48a073f1f73b083d3d402e10f96f6dd 100644 |
--- a/content/common/gpu/client/gpu_memory_buffer_impl.h |
+++ b/content/common/gpu/client/gpu_memory_buffer_impl.h |
@@ -5,15 +5,18 @@ |
#ifndef CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_ |
#define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_ |
+#include <vector> |
+ |
#include "base/callback.h" |
#include "base/memory/scoped_ptr.h" |
+#include "content/common/content_export.h" |
#include "ui/gfx/gpu_memory_buffer.h" |
#include "ui/gfx/size.h" |
namespace content { |
// Provides common implementation of a GPU memory buffer. |
-class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
+class CONTENT_EXPORT GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
public: |
typedef base::Callback<void(scoped_ptr<GpuMemoryBufferImpl> buffer)> |
CreationCallback; |
@@ -23,9 +26,28 @@ class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
~GpuMemoryBufferImpl() override; |
+ // Gets system supported GPU memory buffer types. Preferred type at the front |
+ // of vector. |
+ static void GetSupportedTypes(std::vector<gfx::GpuMemoryBufferType>* types); |
+ |
+ // Sets the preferred GPU memory buffer type. This overrides the default |
+ // preferred type. Can only be called once prior to GetPreferredType(). |
+ // Caller is responsible for correct ordering. |
+ static void SetPreferredType(gfx::GpuMemoryBufferType type); |
+ |
+ // Gets the preferred discardable memory type. |
+ static gfx::GpuMemoryBufferType GetPreferredType(); |
+ |
+ // Returns true if |format| and |usage| is a supported configuration for |
+ // |type|. |type| must be a supported GPU memory buffer type. |
+ static bool IsConfigurationSupported(gfx::GpuMemoryBufferType type, |
+ Format format, |
+ Usage usage); |
+ |
// Creates a GPU memory buffer instance with |size| and |format| for |usage| |
// by the current process and |client_id|. |
- static void Create(gfx::GpuMemoryBufferId id, |
+ static void Create(gfx::GpuMemoryBufferType type, |
+ gfx::GpuMemoryBufferId id, |
const gfx::Size& size, |
Format format, |
Usage usage, |
@@ -35,7 +57,8 @@ class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
// Allocates a GPU memory buffer with |size| and |internalformat| for |usage| |
// by |child_process| and |child_client_id|. The |handle| returned can be |
// used by the |child_process| to create an instance of this class. |
- static void AllocateForChildProcess(gfx::GpuMemoryBufferId id, |
+ static void AllocateForChildProcess(gfx::GpuMemoryBufferType type, |
+ gfx::GpuMemoryBufferId id, |
const gfx::Size& size, |
Format format, |
Usage usage, |
@@ -89,6 +112,7 @@ class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
bool mapped_; |
uint32 destruction_sync_point_; |
+ private: |
DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImpl); |
}; |