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

Unified Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 149123008: Implement GLHelperReadbackSupport for GLHelper usage. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unnecessary space. Created 6 years, 10 months 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/renderer_host/render_widget_host_view_android.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 4f1c64d810b30557b4b3434ce3de598a3915c4f4..354ab4a30ea8d8b439143ee84ed76086979b8d4c 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -633,11 +633,8 @@ void RenderWidgetHostViewAndroid::CopyFromCompositingSurface(
const gfx::Size& dst_size,
const base::Callback<void(bool, const SkBitmap&)>& callback,
const SkBitmap::Config bitmap_config) {
- // Only ARGB888 and RGB565 supported as of now.
- bool format_support = ((bitmap_config == SkBitmap::kRGB_565_Config) ||
- (bitmap_config == SkBitmap::kARGB_8888_Config));
- if (!format_support) {
- DCHECK(format_support);
+
+ if (!IsReadBackConfigSupported(bitmap_config)) {
callback.Run(false, SkBitmap());
return;
}
@@ -646,18 +643,6 @@ void RenderWidgetHostViewAndroid::CopyFromCompositingSurface(
callback.Run(false, SkBitmap());
return;
}
- ImageTransportFactoryAndroid* factory =
- ImageTransportFactoryAndroid::GetInstance();
- GLHelper* gl_helper = factory->GetGLHelper();
- if (!gl_helper)
- return;
- bool check_rgb565_support = gl_helper->CanUseRgb565Readback();
- if ((bitmap_config == SkBitmap::kRGB_565_Config) &&
- !check_rgb565_support) {
- LOG(ERROR) << "Readbackformat rgb565 not supported";
- callback.Run(false, SkBitmap());
- return;
- }
const gfx::Display& display =
gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
float device_scale_factor = display.device_scale_factor();
@@ -1407,22 +1392,29 @@ void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
base::ScopedClosureRunner scoped_callback_runner(
base::Bind(callback, false, SkBitmap()));
- if (!result->HasTexture() || result->IsEmpty() || result->size().IsEmpty())
+ if (!result->HasTexture() || result->IsEmpty() || result->size().IsEmpty()) {
+ callback.Run(false, SkBitmap());
no sievers 2014/02/18 19:35:44 You don't need to change all of these. That's what
sivag 2014/02/19 15:49:04 Done.
return;
+ }
scoped_ptr<SkBitmap> bitmap(new SkBitmap);
bitmap->setConfig(bitmap_config,
dst_size_in_pixel.width(),
dst_size_in_pixel.height(),
0, kOpaque_SkAlphaType);
- if (!bitmap->allocPixels())
+ if (!bitmap->allocPixels()) {
+ callback.Run(false, SkBitmap());
return;
+ }
ImageTransportFactoryAndroid* factory =
ImageTransportFactoryAndroid::GetInstance();
GLHelper* gl_helper = factory->GetGLHelper();
- if (!gl_helper)
+
+ if (!gl_helper) {
+ callback.Run(false, SkBitmap());
return;
+ }
scoped_ptr<SkAutoLockPixels> bitmap_pixels_lock(
new SkAutoLockPixels(*bitmap));
@@ -1432,8 +1424,10 @@ void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
scoped_ptr<cc::SingleReleaseCallback> release_callback;
result->TakeTexture(&texture_mailbox, &release_callback);
DCHECK(texture_mailbox.IsTexture());
- if (!texture_mailbox.IsTexture())
+ if (!texture_mailbox.IsTexture()) {
+ callback.Run(false, SkBitmap());
return;
+ }
ignore_result(scoped_callback_runner.Release());
@@ -1487,6 +1481,16 @@ void RenderWidgetHostViewAndroid::PrepareBitmapCopyOutputResult(
callback.Run(true, *source);
}
+bool RenderWidgetHostViewAndroid::IsReadBackConfigSupported(
+ const SkBitmap::Config& bitmap_config) {
+ ImageTransportFactoryAndroid* factory =
+ ImageTransportFactoryAndroid::GetInstance();
+ GLHelper* gl_helper = factory->GetGLHelper();
+ if (!gl_helper)
+ return false;
+ return gl_helper->IsReadBackConfigSupported(bitmap_config);
+}
+
// static
void RenderWidgetHostViewPort::GetDefaultScreenInfo(
blink::WebScreenInfo* results) {

Powered by Google App Engine
This is Rietveld 408576698