summaryrefslogtreecommitdiffstats
path: root/content/browser/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/gpu')
-rw-r--r--content/browser/gpu/browser_gpu_channel_host_factory.cc72
-rw-r--r--content/browser/gpu/browser_gpu_channel_host_factory.h3
-rw-r--r--content/browser/gpu/browser_gpu_memory_buffer_manager.cc9
3 files changed, 32 insertions, 52 deletions
diff --git a/content/browser/gpu/browser_gpu_channel_host_factory.cc b/content/browser/gpu/browser_gpu_channel_host_factory.cc
index 4019ccb..205542c 100644
--- a/content/browser/gpu/browser_gpu_channel_host_factory.cc
+++ b/content/browser/gpu/browser_gpu_channel_host_factory.cc
@@ -43,38 +43,8 @@ namespace {
base::LazyInstance<std::set<gfx::GpuMemoryBuffer::Usage>>
g_enabled_gpu_memory_buffer_usages;
-
-bool IsGpuMemoryBufferFactoryConfigurationSupported(
- gfx::GpuMemoryBuffer::Format format,
- gfx::GpuMemoryBuffer::Usage usage,
- gfx::GpuMemoryBufferType type) {
- switch (type) {
- case gfx::SHARED_MEMORY_BUFFER:
- // Shared memory buffers must be created in-process.
- return false;
-#if defined(OS_MACOSX)
- case gfx::IO_SURFACE_BUFFER:
- return GpuMemoryBufferFactoryIOSurface::
- IsGpuMemoryBufferConfigurationSupported(format, usage);
-#endif
-#if defined(OS_ANDROID)
- case gfx::SURFACE_TEXTURE_BUFFER:
- return GpuMemoryBufferFactorySurfaceTexture::
- IsGpuMemoryBufferConfigurationSupported(format, usage);
-#endif
-#if defined(USE_OZONE)
- case gfx::OZONE_NATIVE_BUFFER:
- return GpuMemoryBufferFactoryOzoneNativeBuffer::
- IsGpuMemoryBufferConfigurationSupported(format, usage);
-#endif
- default:
- NOTREACHED();
- return false;
- }
}
-} // namespace
-
BrowserGpuChannelHostFactory* BrowserGpuChannelHostFactory::instance_ = NULL;
struct BrowserGpuChannelHostFactory::CreateRequest {
@@ -284,23 +254,17 @@ bool BrowserGpuChannelHostFactory::IsGpuMemoryBufferFactoryUsageEnabled(
}
// static
-uint32 BrowserGpuChannelHostFactory::GetImageTextureTarget(
- gfx::GpuMemoryBuffer::Format format,
- gfx::GpuMemoryBuffer::Usage usage) {
- if (!IsGpuMemoryBufferFactoryUsageEnabled(usage))
+uint32 BrowserGpuChannelHostFactory::GetImageTextureTarget() {
+ if (!IsGpuMemoryBufferFactoryUsageEnabled(gfx::GpuMemoryBuffer::MAP))
return GL_TEXTURE_2D;
std::vector<gfx::GpuMemoryBufferType> supported_types;
GpuMemoryBufferFactory::GetSupportedTypes(&supported_types);
DCHECK(!supported_types.empty());
- // The GPU service will always use the preferred type, if the |format| and
- // |usage| allows.
+ // The GPU service will always use the preferred type.
gfx::GpuMemoryBufferType type = supported_types[0];
- if (!IsGpuMemoryBufferFactoryConfigurationSupported(format, usage, type))
- return GL_TEXTURE_2D;
-
switch (type) {
case gfx::SURFACE_TEXTURE_BUFFER:
case gfx::OZONE_NATIVE_BUFFER:
@@ -507,15 +471,33 @@ bool BrowserGpuChannelHostFactory::IsGpuMemoryBufferConfigurationSupported(
if (!IsGpuMemoryBufferFactoryUsageEnabled(usage))
return false;
+ // Preferred type is always used by factory.
std::vector<gfx::GpuMemoryBufferType> supported_types;
GpuMemoryBufferFactory::GetSupportedTypes(&supported_types);
DCHECK(!supported_types.empty());
-
- // The GPU service will always use the preferred type, if the |format| and
- // |usage| allows.
- gfx::GpuMemoryBufferType type = supported_types[0];
-
- return IsGpuMemoryBufferFactoryConfigurationSupported(format, usage, type);
+ switch (supported_types[0]) {
+ case gfx::SHARED_MEMORY_BUFFER:
+ // Shared memory buffers must be created in-process.
+ return false;
+#if defined(OS_MACOSX)
+ case gfx::IO_SURFACE_BUFFER:
+ return GpuMemoryBufferFactoryIOSurface::
+ IsGpuMemoryBufferConfigurationSupported(format, usage);
+#endif
+#if defined(OS_ANDROID)
+ case gfx::SURFACE_TEXTURE_BUFFER:
+ return GpuMemoryBufferFactorySurfaceTexture::
+ IsGpuMemoryBufferConfigurationSupported(format, usage);
+#endif
+#if defined(USE_OZONE)
+ case gfx::OZONE_NATIVE_BUFFER:
+ return GpuMemoryBufferFactoryOzoneNativeBuffer::
+ IsGpuMemoryBufferConfigurationSupported(format, usage);
+#endif
+ default:
+ NOTREACHED();
+ return false;
+ }
}
void BrowserGpuChannelHostFactory::CreateGpuMemoryBuffer(
diff --git a/content/browser/gpu/browser_gpu_channel_host_factory.h b/content/browser/gpu/browser_gpu_channel_host_factory.h
index aac6e69..b4df563 100644
--- a/content/browser/gpu/browser_gpu_channel_host_factory.h
+++ b/content/browser/gpu/browser_gpu_channel_host_factory.h
@@ -29,8 +29,7 @@ class CONTENT_EXPORT BrowserGpuChannelHostFactory
gfx::GpuMemoryBuffer::Usage usage);
static bool IsGpuMemoryBufferFactoryUsageEnabled(
gfx::GpuMemoryBuffer::Usage usage);
- static uint32 GetImageTextureTarget(gfx::GpuMemoryBuffer::Format format,
- gfx::GpuMemoryBuffer::Usage usage);
+ static uint32 GetImageTextureTarget();
// Overridden from GpuChannelHostFactory:
bool IsMainThread() override;
diff --git a/content/browser/gpu/browser_gpu_memory_buffer_manager.cc b/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
index 2db48f1..70184a0 100644
--- a/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
+++ b/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
@@ -99,9 +99,8 @@ BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferCommon(
// by factory.
if (!gpu_memory_buffer_factory_host_->IsGpuMemoryBufferConfigurationSupported(
format, usage)) {
- DCHECK(GpuMemoryBufferImplSharedMemory::IsFormatSupported(format))
- << format;
- DCHECK(GpuMemoryBufferImplSharedMemory::IsUsageSupported(usage)) << usage;
+ DCHECK(GpuMemoryBufferImplSharedMemory::IsFormatSupported(format));
+ DCHECK_EQ(usage, gfx::GpuMemoryBuffer::MAP);
return GpuMemoryBufferImplSharedMemory::Create(
g_next_gpu_memory_buffer_id.GetNext(), size, format);
}
@@ -143,8 +142,8 @@ void BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForChildProcess(
format, usage)) {
// Early out if we cannot fallback to shared memory buffer.
if (!GpuMemoryBufferImplSharedMemory::IsFormatSupported(format) ||
- !GpuMemoryBufferImplSharedMemory::IsUsageSupported(usage) ||
- !GpuMemoryBufferImplSharedMemory::IsSizeValidForFormat(size, format)) {
+ !GpuMemoryBufferImplSharedMemory::IsSizeValidForFormat(size, format) ||
+ usage != gfx::GpuMemoryBuffer::MAP) {
callback.Run(gfx::GpuMemoryBufferHandle());
return;
}