Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Unified Diff: content/browser/gpu/browser_gpu_memory_buffer_manager.cc

Issue 1419623008: ui: Use single buffer SurfaceTexture mode for native GpuMemoryBuffers on Android. Base URL: https://chromium.googlesource.com/chromium/src.git@1419733005
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/gpu/browser_gpu_memory_buffer_manager.cc
diff --git a/content/browser/gpu/browser_gpu_memory_buffer_manager.cc b/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
index 189f0c5e57d08092a06d0cdbb9e705a285012e94..639e1cd23a94dbfb94be0b1d5de757744d9f678d 100644
--- a/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
+++ b/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
@@ -29,6 +29,7 @@
#if defined(OS_ANDROID)
#include "content/common/gpu/gpu_memory_buffer_factory_surface_texture.h"
+#include "ui/gl/android/surface_texture.h"
#endif
#if defined(USE_OZONE)
@@ -124,6 +125,13 @@ GpuMemoryBufferConfigurationSet GetNativeGpuMemoryBufferConfigurations() {
force_native_gpu_read_write_formats = false;
}
+#if defined(OS_ANDROID)
+ // Single buffer SurfaceTexture mode is required for native buffers on
+ // Android.
+ if (!gfx::SurfaceTexture::IsSingleBufferModeSupported())
+ enable_native_gpu_memory_buffers = false;
+#endif
+
if (enable_native_gpu_memory_buffers) {
const gfx::BufferFormat kNativeFormats[] = {
gfx::BufferFormat::R_8, gfx::BufferFormat::RGBA_4444,
@@ -233,16 +241,17 @@ uint32 BrowserGpuMemoryBufferManager::GetImageTextureTarget(
}
switch (GpuMemoryBufferFactory::GetNativeType()) {
- case gfx::SURFACE_TEXTURE_BUFFER:
case gfx::OZONE_NATIVE_PIXMAP:
- // GPU memory buffers that are shared with the GL using EGLImages
+ // GPU memory buffers that are bound to GL textures using EGLImages
// require TEXTURE_EXTERNAL_OES.
return GL_TEXTURE_EXTERNAL_OES;
case gfx::IO_SURFACE_BUFFER:
// IOSurface backed images require GL_TEXTURE_RECTANGLE_ARB.
return GL_TEXTURE_RECTANGLE_ARB;
- case gfx::SHARED_MEMORY_BUFFER:
+ case gfx::SURFACE_TEXTURE_BUFFER:
+ // GPU memory buffers that require a copy expects GL_TEXTURE_2D as target.
return GL_TEXTURE_2D;
+ case gfx::SHARED_MEMORY_BUFFER:
case gfx::EMPTY_BUFFER:
NOTREACHED();
return GL_TEXTURE_2D;
« no previous file with comments | « no previous file | content/common/gpu/gpu_memory_buffer_factory_surface_texture.cc » ('j') | ui/gl/gl_image_surface_texture.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698