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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 88033002: Add RGB565 Texture readback support in gl_helper (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Corrected indentation. Created 6 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 1038 matching lines...) Expand 10 before | Expand all | Expand 10 after
1049 } 1049 }
1050 1050
1051 BackingStore* RenderWidgetHostViewAura::AllocBackingStore( 1051 BackingStore* RenderWidgetHostViewAura::AllocBackingStore(
1052 const gfx::Size& size) { 1052 const gfx::Size& size) {
1053 return new BackingStoreAura(host_, size); 1053 return new BackingStoreAura(host_, size);
1054 } 1054 }
1055 1055
1056 void RenderWidgetHostViewAura::CopyFromCompositingSurface( 1056 void RenderWidgetHostViewAura::CopyFromCompositingSurface(
1057 const gfx::Rect& src_subrect, 1057 const gfx::Rect& src_subrect,
1058 const gfx::Size& dst_size, 1058 const gfx::Size& dst_size,
1059 const base::Callback<void(bool, const SkBitmap&)>& callback) { 1059 const base::Callback<void(bool, const SkBitmap&)>& callback,
1060 bool readback_config_rgb565) {
1060 if (!CanCopyToBitmap()) { 1061 if (!CanCopyToBitmap()) {
1061 callback.Run(false, SkBitmap()); 1062 callback.Run(false, SkBitmap());
1062 return; 1063 return;
1063 } 1064 }
1064 1065
1065 const gfx::Size& dst_size_in_pixel = ConvertViewSizeToPixel(this, dst_size); 1066 const gfx::Size& dst_size_in_pixel = ConvertViewSizeToPixel(this, dst_size);
1066 scoped_ptr<cc::CopyOutputRequest> request = 1067 scoped_ptr<cc::CopyOutputRequest> request =
1067 cc::CopyOutputRequest::CreateRequest(base::Bind( 1068 cc::CopyOutputRequest::CreateRequest(base::Bind(
1068 &RenderWidgetHostViewAura::CopyFromCompositingSurfaceHasResult, 1069 &RenderWidgetHostViewAura::CopyFromCompositingSurfaceHasResult,
1069 dst_size_in_pixel, 1070 dst_size_in_pixel,
1071 readback_config_rgb565,
1070 callback)); 1072 callback));
1071 gfx::Rect src_subrect_in_pixel = 1073 gfx::Rect src_subrect_in_pixel =
1072 ConvertRectToPixel(current_device_scale_factor_, src_subrect); 1074 ConvertRectToPixel(current_device_scale_factor_, src_subrect);
1073 request->set_area(src_subrect_in_pixel); 1075 request->set_area(src_subrect_in_pixel);
1074 RequestCopyOfOutput(request.Pass()); 1076 RequestCopyOfOutput(request.Pass());
1075 } 1077 }
1076 1078
1077 void RenderWidgetHostViewAura::CopyFromCompositingSurfaceToVideoFrame( 1079 void RenderWidgetHostViewAura::CopyFromCompositingSurfaceToVideoFrame(
1078 const gfx::Rect& src_subrect, 1080 const gfx::Rect& src_subrect,
1079 const scoped_refptr<media::VideoFrame>& target, 1081 const scoped_refptr<media::VideoFrame>& target,
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after
1802 return false; 1804 return false;
1803 } 1805 }
1804 1806
1805 void RenderWidgetHostViewAura::SetSurfaceNotInUseByCompositor( 1807 void RenderWidgetHostViewAura::SetSurfaceNotInUseByCompositor(
1806 scoped_refptr<ui::Texture>) { 1808 scoped_refptr<ui::Texture>) {
1807 } 1809 }
1808 1810
1809 // static 1811 // static
1810 void RenderWidgetHostViewAura::CopyFromCompositingSurfaceHasResult( 1812 void RenderWidgetHostViewAura::CopyFromCompositingSurfaceHasResult(
1811 const gfx::Size& dst_size_in_pixel, 1813 const gfx::Size& dst_size_in_pixel,
1814 bool readback_config_rgb565,
1812 const base::Callback<void(bool, const SkBitmap&)>& callback, 1815 const base::Callback<void(bool, const SkBitmap&)>& callback,
1813 scoped_ptr<cc::CopyOutputResult> result) { 1816 scoped_ptr<cc::CopyOutputResult> result) {
1814 if (result->IsEmpty() || result->size().IsEmpty()) { 1817 if (result->IsEmpty() || result->size().IsEmpty()) {
1815 callback.Run(false, SkBitmap()); 1818 callback.Run(false, SkBitmap());
1816 return; 1819 return;
1817 } 1820 }
1818 1821
1819 if (result->HasTexture()) { 1822 if (result->HasTexture()) {
1820 PrepareTextureCopyOutputResult(dst_size_in_pixel, callback, result.Pass()); 1823 PrepareTextureCopyOutputResult(dst_size_in_pixel, readback_config_rgb565,
1824 callback,
1825 result.Pass());
1821 return; 1826 return;
1822 } 1827 }
1823 1828
1824 DCHECK(result->HasBitmap()); 1829 DCHECK(result->HasBitmap());
1825 PrepareBitmapCopyOutputResult(dst_size_in_pixel, callback, result.Pass()); 1830 PrepareBitmapCopyOutputResult(dst_size_in_pixel, callback, result.Pass());
1826 } 1831 }
1827 1832
1828 static void CopyFromCompositingSurfaceFinished( 1833 static void CopyFromCompositingSurfaceFinished(
1829 const base::Callback<void(bool, const SkBitmap&)>& callback, 1834 const base::Callback<void(bool, const SkBitmap&)>& callback,
1830 scoped_ptr<cc::SingleReleaseCallback> release_callback, 1835 scoped_ptr<cc::SingleReleaseCallback> release_callback,
1831 scoped_ptr<SkBitmap> bitmap, 1836 scoped_ptr<SkBitmap> bitmap,
1832 scoped_ptr<SkAutoLockPixels> bitmap_pixels_lock, 1837 scoped_ptr<SkAutoLockPixels> bitmap_pixels_lock,
1833 bool result) { 1838 bool result) {
1834 bitmap_pixels_lock.reset(); 1839 bitmap_pixels_lock.reset();
1835 release_callback->Run(0, false); 1840 release_callback->Run(0, false);
1836 callback.Run(result, *bitmap); 1841 callback.Run(result, *bitmap);
1837 } 1842 }
1838 1843
1839 // static 1844 // static
1840 void RenderWidgetHostViewAura::PrepareTextureCopyOutputResult( 1845 void RenderWidgetHostViewAura::PrepareTextureCopyOutputResult(
1841 const gfx::Size& dst_size_in_pixel, 1846 const gfx::Size& dst_size_in_pixel,
1847 bool readback_config_rgb565,
1842 const base::Callback<void(bool, const SkBitmap&)>& callback, 1848 const base::Callback<void(bool, const SkBitmap&)>& callback,
1843 scoped_ptr<cc::CopyOutputResult> result) { 1849 scoped_ptr<cc::CopyOutputResult> result) {
1844 base::ScopedClosureRunner scoped_callback_runner( 1850 base::ScopedClosureRunner scoped_callback_runner(
1845 base::Bind(callback, false, SkBitmap())); 1851 base::Bind(callback, false, SkBitmap()));
1846 1852
1847 DCHECK(result->HasTexture()); 1853 DCHECK(result->HasTexture());
1848 if (!result->HasTexture()) 1854 if (!result->HasTexture())
1849 return; 1855 return;
1850 1856
1851 scoped_ptr<SkBitmap> bitmap(new SkBitmap); 1857 scoped_ptr<SkBitmap> bitmap(new SkBitmap);
(...skipping 20 matching lines...) Expand all
1872 return; 1878 return;
1873 1879
1874 ignore_result(scoped_callback_runner.Release()); 1880 ignore_result(scoped_callback_runner.Release());
1875 1881
1876 gl_helper->CropScaleReadbackAndCleanMailbox( 1882 gl_helper->CropScaleReadbackAndCleanMailbox(
1877 texture_mailbox.name(), 1883 texture_mailbox.name(),
1878 texture_mailbox.sync_point(), 1884 texture_mailbox.sync_point(),
1879 result->size(), 1885 result->size(),
1880 gfx::Rect(result->size()), 1886 gfx::Rect(result->size()),
1881 dst_size_in_pixel, 1887 dst_size_in_pixel,
1888 readback_config_rgb565,
1882 pixels, 1889 pixels,
1883 base::Bind(&CopyFromCompositingSurfaceFinished, 1890 base::Bind(&CopyFromCompositingSurfaceFinished,
1884 callback, 1891 callback,
1885 base::Passed(&release_callback), 1892 base::Passed(&release_callback),
1886 base::Passed(&bitmap), 1893 base::Passed(&bitmap),
1887 base::Passed(&bitmap_pixels_lock))); 1894 base::Passed(&bitmap_pixels_lock)));
1888 } 1895 }
1889 1896
1890 // static 1897 // static
1891 void RenderWidgetHostViewAura::PrepareBitmapCopyOutputResult( 1898 void RenderWidgetHostViewAura::PrepareBitmapCopyOutputResult(
(...skipping 1651 matching lines...) Expand 10 before | Expand all | Expand 10 after
3543 RenderWidgetHost* widget) { 3550 RenderWidgetHost* widget) {
3544 return new RenderWidgetHostViewAura(widget); 3551 return new RenderWidgetHostViewAura(widget);
3545 } 3552 }
3546 3553
3547 // static 3554 // static
3548 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { 3555 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) {
3549 GetScreenInfoForWindow(results, NULL); 3556 GetScreenInfoForWindow(results, NULL);
3550 } 3557 }
3551 3558
3552 } // namespace content 3559 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698