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

Side by Side Diff: content/common/gpu/client/gl_helper.cc

Issue 133813003: Add Async API unittests to readback format. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Code changed as per reviw comments. 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
« no previous file with comments | « content/common/gpu/client/gl_helper.h ('k') | content/common/gpu/client/gl_helper_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/common/gpu/client/gl_helper.h" 5 #include "content/common/gpu/client/gl_helper.h"
6 6
7 #include <queue> 7 #include <queue>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 unsigned char* out, 129 unsigned char* out,
130 const SkBitmap::Config config, 130 const SkBitmap::Config config,
131 const base::Callback<void(bool)>& callback, 131 const base::Callback<void(bool)>& callback,
132 GLHelper::ScalerQuality quality); 132 GLHelper::ScalerQuality quality);
133 133
134 void ReadbackTextureSync(GLuint texture, 134 void ReadbackTextureSync(GLuint texture,
135 const gfx::Rect& src_rect, 135 const gfx::Rect& src_rect,
136 unsigned char* out, 136 unsigned char* out,
137 SkBitmap::Config format); 137 SkBitmap::Config format);
138 138
139 void ReadbackTextureAsync(GLuint texture,
140 const gfx::Size& dst_size,
141 unsigned char* out,
142 SkBitmap::Config config,
143 const base::Callback<void(bool)>& callback);
144
139 // Reads back bytes from the currently bound frame buffer. 145 // Reads back bytes from the currently bound frame buffer.
140 // Note that dst_size is specified in bytes, not pixels. 146 // Note that dst_size is specified in bytes, not pixels.
141 void ReadbackAsync(const gfx::Size& dst_size, 147 void ReadbackAsync(const gfx::Size& dst_size,
142 int32 bytes_per_row, // generally dst_size.width() * 4 148 int32 bytes_per_row, // generally dst_size.width() * 4
143 int32 row_stride_bytes, // generally dst_size.width() * 4 149 int32 row_stride_bytes, // generally dst_size.width() * 4
144 unsigned char* out, 150 unsigned char* out,
145 const SkBitmap::Config config, 151 const SkBitmap::Config config,
146 const base::Callback<void(bool)>& callback); 152 const base::Callback<void(bool)>& callback);
147 153
148 void ReadbackPlane(TextureFrameBufferPair* source, 154 void ReadbackPlane(TextureFrameBufferPair* source,
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 GL_UNSIGNED_BYTE; 528 GL_UNSIGNED_BYTE;
523 gl_->ReadPixels(src_rect.x(), 529 gl_->ReadPixels(src_rect.x(),
524 src_rect.y(), 530 src_rect.y(),
525 src_rect.width(), 531 src_rect.width(),
526 src_rect.height(), 532 src_rect.height(),
527 format, 533 format,
528 type, 534 type,
529 out); 535 out);
530 } 536 }
531 537
538 void GLHelper::CopyTextureToImpl::ReadbackTextureAsync(
539 GLuint texture,
540 const gfx::Size& dst_size,
541 unsigned char* out,
542 SkBitmap::Config config,
543 const base::Callback<void(bool)>& callback) {
544 // Only ARGB888 and RGB565 supported as of now.
545 bool format_support = ((config == SkBitmap::kRGB_565_Config) ||
546 (config == SkBitmap::kARGB_8888_Config));
547 if (!format_support) {
548 DCHECK(format_support);
549 return;
550 }
551 ScopedFramebuffer dst_framebuffer(gl_);
552 ScopedFramebufferBinder<GL_FRAMEBUFFER> framebuffer_binder(gl_,
553 dst_framebuffer);
554 ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(gl_, texture);
555 gl_->FramebufferTexture2D(GL_FRAMEBUFFER,
556 GL_COLOR_ATTACHMENT0,
557 GL_TEXTURE_2D,
558 texture,
559 0);
560 int readback_config_rgb565 = (config == SkBitmap::kRGB_565_Config);
561 int bytes_per_pixel = readback_config_rgb565 ? 2 : 4;
piman 2014/01/24 20:26:31 nit: you're not otherwise using readback_config_rg
sivag 2014/01/25 08:34:02 Done.
562 ReadbackAsync(dst_size,
563 dst_size.width() * bytes_per_pixel,
564 dst_size.width() * bytes_per_pixel,
565 out,
566 config,
567 callback);
568 }
569
532 GLuint GLHelper::CopyTextureToImpl::CopyAndScaleTexture( 570 GLuint GLHelper::CopyTextureToImpl::CopyAndScaleTexture(
533 GLuint src_texture, 571 GLuint src_texture,
534 const gfx::Size& src_size, 572 const gfx::Size& src_size,
535 const gfx::Size& dst_size, 573 const gfx::Size& dst_size,
536 bool vertically_flip_texture, 574 bool vertically_flip_texture,
537 GLHelper::ScalerQuality quality) { 575 GLHelper::ScalerQuality quality) {
538 return ScaleTexture(src_texture, 576 return ScaleTexture(src_texture,
539 src_size, 577 src_size,
540 gfx::Rect(src_size), 578 gfx::Rect(src_size),
541 dst_size, 579 dst_size,
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 } 694 }
657 695
658 void GLHelper::ReadbackTextureSync(GLuint texture, 696 void GLHelper::ReadbackTextureSync(GLuint texture,
659 const gfx::Rect& src_rect, 697 const gfx::Rect& src_rect,
660 unsigned char* out, 698 unsigned char* out,
661 SkBitmap::Config format) { 699 SkBitmap::Config format) {
662 InitCopyTextToImpl(); 700 InitCopyTextToImpl();
663 copy_texture_to_impl_->ReadbackTextureSync(texture, src_rect, out, format); 701 copy_texture_to_impl_->ReadbackTextureSync(texture, src_rect, out, format);
664 } 702 }
665 703
704 void GLHelper::ReadbackTextureAsync(
705 GLuint texture,
706 const gfx::Size& dst_size,
707 unsigned char* out,
708 SkBitmap::Config config,
709 const base::Callback<void(bool)>& callback) {
710 InitCopyTextToImpl();
711 copy_texture_to_impl_->ReadbackTextureAsync(texture,
712 dst_size,
713 out,
714 config,
715 callback);
716 }
717
666 GLuint GLHelper::CopyTexture(GLuint texture, const gfx::Size& size) { 718 GLuint GLHelper::CopyTexture(GLuint texture, const gfx::Size& size) {
667 InitCopyTextToImpl(); 719 InitCopyTextToImpl();
668 return copy_texture_to_impl_->CopyAndScaleTexture( 720 return copy_texture_to_impl_->CopyAndScaleTexture(
669 texture, size, size, false, GLHelper::SCALER_QUALITY_FAST); 721 texture, size, size, false, GLHelper::SCALER_QUALITY_FAST);
670 } 722 }
671 723
672 GLuint GLHelper::CopyAndScaleTexture(GLuint texture, 724 GLuint GLHelper::CopyAndScaleTexture(GLuint texture,
673 const gfx::Size& src_size, 725 const gfx::Size& src_size,
674 const gfx::Size& dst_size, 726 const gfx::Size& dst_size,
675 bool vertically_flip_texture, 727 bool vertically_flip_texture,
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 return copy_texture_to_impl_->CreateReadbackPipelineYUV(quality, 1238 return copy_texture_to_impl_->CreateReadbackPipelineYUV(quality,
1187 src_size, 1239 src_size,
1188 src_subrect, 1240 src_subrect,
1189 dst_size, 1241 dst_size,
1190 dst_subrect, 1242 dst_subrect,
1191 flip_vertically, 1243 flip_vertically,
1192 use_mrt); 1244 use_mrt);
1193 } 1245 }
1194 1246
1195 } // namespace content 1247 } // namespace content
OLDNEW
« no previous file with comments | « content/common/gpu/client/gl_helper.h ('k') | content/common/gpu/client/gl_helper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698