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

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

Issue 63253002: Rename WebKit namespace to blink (part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/common/gpu/client/gl_helper.h ('k') | content/common/gpu/client/gl_helper_benchmark.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"
11 #include "base/debug/trace_event.h" 11 #include "base/debug/trace_event.h"
12 #include "base/lazy_instance.h" 12 #include "base/lazy_instance.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/message_loop/message_loop.h" 15 #include "base/message_loop/message_loop.h"
16 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
17 #include "base/time/time.h" 17 #include "base/time/time.h"
18 #include "content/common/gpu/client/gl_helper_scaling.h" 18 #include "content/common/gpu/client/gl_helper_scaling.h"
19 #include "gpu/command_buffer/client/context_support.h" 19 #include "gpu/command_buffer/client/context_support.h"
20 #include "gpu/command_buffer/common/mailbox.h" 20 #include "gpu/command_buffer/common/mailbox.h"
21 #include "media/base/video_frame.h" 21 #include "media/base/video_frame.h"
22 #include "media/base/video_util.h" 22 #include "media/base/video_util.h"
23 #include "third_party/WebKit/public/platform/WebCString.h" 23 #include "third_party/WebKit/public/platform/WebCString.h"
24 #include "third_party/skia/include/core/SkRegion.h" 24 #include "third_party/skia/include/core/SkRegion.h"
25 #include "ui/gfx/rect.h" 25 #include "ui/gfx/rect.h"
26 #include "ui/gfx/size.h" 26 #include "ui/gfx/size.h"
27 #include "ui/gl/gl_bindings.h" 27 #include "ui/gl/gl_bindings.h"
28 28
29 using WebKit::WebGLId; 29 using blink::WebGLId;
30 using WebKit::WebGraphicsContext3D; 30 using blink::WebGraphicsContext3D;
31 31
32 namespace { 32 namespace {
33 33
34 // Helper class for allocating and holding an RGBA texture of a given 34 // Helper class for allocating and holding an RGBA texture of a given
35 // size and an associated framebuffer. 35 // size and an associated framebuffer.
36 class TextureFrameBufferPair { 36 class TextureFrameBufferPair {
37 public: 37 public:
38 TextureFrameBufferPair(WebGraphicsContext3D* context, 38 TextureFrameBufferPair(WebGraphicsContext3D* context,
39 gfx::Size size) 39 gfx::Size size)
40 : texture_(context, context->createTexture()), 40 : texture_(context, context->createTexture()),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 // scaler and an associated frame buffer. This is inteded to be used 77 // scaler and an associated frame buffer. This is inteded to be used
78 // when the output of a scaler is to be sent to a readback. 78 // when the output of a scaler is to be sent to a readback.
79 class ScalerHolder { 79 class ScalerHolder {
80 public: 80 public:
81 ScalerHolder(WebGraphicsContext3D* context, 81 ScalerHolder(WebGraphicsContext3D* context,
82 content::GLHelper::ScalerInterface *scaler) 82 content::GLHelper::ScalerInterface *scaler)
83 : texture_and_framebuffer_(context, scaler->DstSize()), 83 : texture_and_framebuffer_(context, scaler->DstSize()),
84 scaler_(scaler) { 84 scaler_(scaler) {
85 } 85 }
86 86
87 void Scale(WebKit::WebGLId src_texture) { 87 void Scale(blink::WebGLId src_texture) {
88 scaler_->Scale(src_texture, texture_and_framebuffer_.texture()); 88 scaler_->Scale(src_texture, texture_and_framebuffer_.texture());
89 } 89 }
90 90
91 content::GLHelper::ScalerInterface* scaler() const { return scaler_.get(); } 91 content::GLHelper::ScalerInterface* scaler() const { return scaler_.get(); }
92 TextureFrameBufferPair *texture_and_framebuffer() { 92 TextureFrameBufferPair *texture_and_framebuffer() {
93 return &texture_and_framebuffer_; 93 return &texture_and_framebuffer_;
94 } 94 }
95 WebGLId texture() const { return texture_and_framebuffer_.texture(); } 95 WebGLId texture() const { return texture_and_framebuffer_.texture(); }
96 96
97 private: 97 private:
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 unsigned char* out, 155 unsigned char* out,
156 const base::Callback<void(bool)>& callback); 156 const base::Callback<void(bool)>& callback);
157 157
158 void ReadbackPlane(TextureFrameBufferPair* source, 158 void ReadbackPlane(TextureFrameBufferPair* source,
159 const scoped_refptr<media::VideoFrame>& target, 159 const scoped_refptr<media::VideoFrame>& target,
160 int plane, 160 int plane,
161 int size_shift, 161 int size_shift,
162 const gfx::Rect& dst_subrect, 162 const gfx::Rect& dst_subrect,
163 const base::Callback<void(bool)>& callback); 163 const base::Callback<void(bool)>& callback);
164 164
165 WebKit::WebGLId CopyAndScaleTexture(WebGLId texture, 165 blink::WebGLId CopyAndScaleTexture(WebGLId texture,
166 const gfx::Size& src_size, 166 const gfx::Size& src_size,
167 const gfx::Size& dst_size, 167 const gfx::Size& dst_size,
168 bool vertically_flip_texture, 168 bool vertically_flip_texture,
169 GLHelper::ScalerQuality quality); 169 GLHelper::ScalerQuality quality);
170 170
171 ReadbackYUVInterface* CreateReadbackPipelineYUV( 171 ReadbackYUVInterface* CreateReadbackPipelineYUV(
172 GLHelper::ScalerQuality quality, 172 GLHelper::ScalerQuality quality,
173 const gfx::Size& src_size, 173 const gfx::Size& src_size,
174 const gfx::Rect& src_subrect, 174 const gfx::Rect& src_subrect,
175 const gfx::Size& dst_size, 175 const gfx::Size& dst_size,
176 const gfx::Rect& dst_subrect, 176 const gfx::Rect& dst_subrect,
177 bool flip_vertically, 177 bool flip_vertically,
178 bool use_mrt); 178 bool use_mrt);
179 179
180 // Returns the maximum number of draw buffers available, 180 // Returns the maximum number of draw buffers available,
181 // 0 if GL_EXT_draw_buffers is not available. 181 // 0 if GL_EXT_draw_buffers is not available.
182 WebKit::WGC3Dint MaxDrawBuffers() const { 182 blink::WGC3Dint MaxDrawBuffers() const {
183 return max_draw_buffers_; 183 return max_draw_buffers_;
184 } 184 }
185 185
186 private: 186 private:
187 // A single request to CropScaleReadbackAndCleanTexture. 187 // A single request to CropScaleReadbackAndCleanTexture.
188 // The main thread can cancel the request, before it's handled by the helper 188 // The main thread can cancel the request, before it's handled by the helper
189 // thread, by resetting the texture and pixels fields. Alternatively, the 189 // thread, by resetting the texture and pixels fields. Alternatively, the
190 // thread marks that it handles the request by resetting the pixels field 190 // thread marks that it handles the request by resetting the pixels field
191 // (meaning it guarantees that the callback with be called). 191 // (meaning it guarantees that the callback with be called).
192 // In either case, the callback must be called exactly once, and the texture 192 // In either case, the callback must be called exactly once, and the texture
(...skipping 14 matching lines...) Expand all
207 query(0) { 207 query(0) {
208 } 208 }
209 209
210 bool done; 210 bool done;
211 gfx::Size size; 211 gfx::Size size;
212 int bytes_per_row; 212 int bytes_per_row;
213 int row_stride_bytes; 213 int row_stride_bytes;
214 unsigned char* pixels; 214 unsigned char* pixels;
215 base::Callback<void(bool)> callback; 215 base::Callback<void(bool)> callback;
216 GLuint buffer; 216 GLuint buffer;
217 WebKit::WebGLId query; 217 blink::WebGLId query;
218 }; 218 };
219 219
220 // A readback pipeline that also converts the data to YUV before 220 // A readback pipeline that also converts the data to YUV before
221 // reading it back. 221 // reading it back.
222 class ReadbackYUVImpl : public ReadbackYUVInterface { 222 class ReadbackYUVImpl : public ReadbackYUVInterface {
223 public: 223 public:
224 ReadbackYUVImpl(WebGraphicsContext3D* context, 224 ReadbackYUVImpl(WebGraphicsContext3D* context,
225 CopyTextureToImpl* copy_impl, 225 CopyTextureToImpl* copy_impl,
226 GLHelperScaling* scaler_impl, 226 GLHelperScaling* scaler_impl,
227 GLHelper::ScalerQuality quality, 227 GLHelper::ScalerQuality quality,
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 318
319 WebGraphicsContext3D* context_; 319 WebGraphicsContext3D* context_;
320 gpu::ContextSupport* context_support_; 320 gpu::ContextSupport* context_support_;
321 GLHelper* helper_; 321 GLHelper* helper_;
322 322
323 // A scoped flush that will ensure all resource deletions are flushed when 323 // A scoped flush that will ensure all resource deletions are flushed when
324 // this object is destroyed. Must be declared before other Scoped* fields. 324 // this object is destroyed. Must be declared before other Scoped* fields.
325 ScopedFlush flush_; 325 ScopedFlush flush_;
326 326
327 std::queue<Request*> request_queue_; 327 std::queue<Request*> request_queue_;
328 WebKit::WGC3Dint max_draw_buffers_; 328 blink::WGC3Dint max_draw_buffers_;
329 }; 329 };
330 330
331 GLHelper::ScalerInterface* GLHelper::CreateScaler( 331 GLHelper::ScalerInterface* GLHelper::CreateScaler(
332 ScalerQuality quality, 332 ScalerQuality quality,
333 const gfx::Size& src_size, 333 const gfx::Size& src_size,
334 const gfx::Rect& src_subrect, 334 const gfx::Rect& src_subrect,
335 const gfx::Size& dst_size, 335 const gfx::Size& dst_size,
336 bool vertically_flip_texture, 336 bool vertically_flip_texture,
337 bool swizzle) { 337 bool swizzle) {
338 InitScalerImpl(); 338 InitScalerImpl();
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 0); 461 0);
462 context_->readPixels(src_rect.x(), 462 context_->readPixels(src_rect.x(),
463 src_rect.y(), 463 src_rect.y(),
464 src_rect.width(), 464 src_rect.width(),
465 src_rect.height(), 465 src_rect.height(),
466 GL_RGBA, 466 GL_RGBA,
467 GL_UNSIGNED_BYTE, 467 GL_UNSIGNED_BYTE,
468 out); 468 out);
469 } 469 }
470 470
471 WebKit::WebGLId GLHelper::CopyTextureToImpl::CopyAndScaleTexture( 471 blink::WebGLId GLHelper::CopyTextureToImpl::CopyAndScaleTexture(
472 WebGLId src_texture, 472 WebGLId src_texture,
473 const gfx::Size& src_size, 473 const gfx::Size& src_size,
474 const gfx::Size& dst_size, 474 const gfx::Size& dst_size,
475 bool vertically_flip_texture, 475 bool vertically_flip_texture,
476 GLHelper::ScalerQuality quality) { 476 GLHelper::ScalerQuality quality) {
477 return ScaleTexture(src_texture, 477 return ScaleTexture(src_texture,
478 src_size, 478 src_size,
479 gfx::Rect(src_size), 479 gfx::Rect(src_size),
480 dst_size, 480 dst_size,
481 vertically_flip_texture, 481 vertically_flip_texture,
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 delete request; 543 delete request;
544 } 544 }
545 545
546 void GLHelper::CopyTextureToImpl::CancelRequests() { 546 void GLHelper::CopyTextureToImpl::CancelRequests() {
547 while (!request_queue_.empty()) { 547 while (!request_queue_.empty()) {
548 Request* request = request_queue_.front(); 548 Request* request = request_queue_.front();
549 FinishRequest(request, false); 549 FinishRequest(request, false);
550 } 550 }
551 } 551 }
552 552
553 GLHelper::GLHelper(WebKit::WebGraphicsContext3D* context, 553 GLHelper::GLHelper(blink::WebGraphicsContext3D* context,
554 gpu::ContextSupport* context_support) 554 gpu::ContextSupport* context_support)
555 : context_(context), 555 : context_(context),
556 context_support_(context_support) { 556 context_support_(context_support) {
557 } 557 }
558 558
559 GLHelper::~GLHelper() { 559 GLHelper::~GLHelper() {
560 } 560 }
561 561
562 void GLHelper::CropScaleReadbackAndCleanTexture( 562 void GLHelper::CropScaleReadbackAndCleanTexture(
563 WebGLId src_texture, 563 WebGLId src_texture,
(...skipping 20 matching lines...) Expand all
584 const gfx::Rect& src_subrect, 584 const gfx::Rect& src_subrect,
585 const gfx::Size& dst_size, 585 const gfx::Size& dst_size,
586 unsigned char* out, 586 unsigned char* out,
587 const base::Callback<void(bool)>& callback) { 587 const base::Callback<void(bool)>& callback) {
588 WebGLId mailbox_texture = ConsumeMailboxToTexture(src_mailbox, sync_point); 588 WebGLId mailbox_texture = ConsumeMailboxToTexture(src_mailbox, sync_point);
589 CropScaleReadbackAndCleanTexture( 589 CropScaleReadbackAndCleanTexture(
590 mailbox_texture, src_size, src_subrect, dst_size, out, callback); 590 mailbox_texture, src_size, src_subrect, dst_size, out, callback);
591 context_->deleteTexture(mailbox_texture); 591 context_->deleteTexture(mailbox_texture);
592 } 592 }
593 593
594 void GLHelper::ReadbackTextureSync(WebKit::WebGLId texture, 594 void GLHelper::ReadbackTextureSync(blink::WebGLId texture,
595 const gfx::Rect& src_rect, 595 const gfx::Rect& src_rect,
596 unsigned char* out) { 596 unsigned char* out) {
597 InitCopyTextToImpl(); 597 InitCopyTextToImpl();
598 copy_texture_to_impl_->ReadbackTextureSync(texture, 598 copy_texture_to_impl_->ReadbackTextureSync(texture,
599 src_rect, 599 src_rect,
600 out); 600 out);
601 } 601 }
602 602
603 WebKit::WebGLId GLHelper::CopyTexture(WebKit::WebGLId texture, 603 blink::WebGLId GLHelper::CopyTexture(blink::WebGLId texture,
604 const gfx::Size& size) { 604 const gfx::Size& size) {
605 InitCopyTextToImpl(); 605 InitCopyTextToImpl();
606 return copy_texture_to_impl_->CopyAndScaleTexture( 606 return copy_texture_to_impl_->CopyAndScaleTexture(
607 texture, 607 texture,
608 size, 608 size,
609 size, 609 size,
610 false, 610 false,
611 GLHelper::SCALER_QUALITY_FAST); 611 GLHelper::SCALER_QUALITY_FAST);
612 } 612 }
613 613
614 WebKit::WebGLId GLHelper::CopyAndScaleTexture( 614 blink::WebGLId GLHelper::CopyAndScaleTexture(
615 WebKit::WebGLId texture, 615 blink::WebGLId texture,
616 const gfx::Size& src_size, 616 const gfx::Size& src_size,
617 const gfx::Size& dst_size, 617 const gfx::Size& dst_size,
618 bool vertically_flip_texture, 618 bool vertically_flip_texture,
619 ScalerQuality quality) { 619 ScalerQuality quality) {
620 InitCopyTextToImpl(); 620 InitCopyTextToImpl();
621 return copy_texture_to_impl_->CopyAndScaleTexture(texture, 621 return copy_texture_to_impl_->CopyAndScaleTexture(texture,
622 src_size, 622 src_size,
623 dst_size, 623 dst_size,
624 vertically_flip_texture, 624 vertically_flip_texture,
625 quality); 625 quality);
626 } 626 }
627 627
628 WebGLId GLHelper::CompileShaderFromSource( 628 WebGLId GLHelper::CompileShaderFromSource(
629 const WebKit::WGC3Dchar* source, 629 const blink::WGC3Dchar* source,
630 WebKit::WGC3Denum type) { 630 blink::WGC3Denum type) {
631 ScopedShader shader(context_, context_->createShader(type)); 631 ScopedShader shader(context_, context_->createShader(type));
632 context_->shaderSource(shader, source); 632 context_->shaderSource(shader, source);
633 context_->compileShader(shader); 633 context_->compileShader(shader);
634 WebKit::WGC3Dint compile_status = 0; 634 blink::WGC3Dint compile_status = 0;
635 context_->getShaderiv(shader, GL_COMPILE_STATUS, &compile_status); 635 context_->getShaderiv(shader, GL_COMPILE_STATUS, &compile_status);
636 if (!compile_status) { 636 if (!compile_status) {
637 LOG(ERROR) << std::string(context_->getShaderInfoLog(shader).utf8()); 637 LOG(ERROR) << std::string(context_->getShaderInfoLog(shader).utf8());
638 return 0; 638 return 0;
639 } 639 }
640 return shader.Detach(); 640 return shader.Detach();
641 } 641 }
642 642
643 void GLHelper::InitCopyTextToImpl() { 643 void GLHelper::InitCopyTextToImpl() {
644 // Lazily initialize |copy_texture_to_impl_| 644 // Lazily initialize |copy_texture_to_impl_|
645 if (!copy_texture_to_impl_) 645 if (!copy_texture_to_impl_)
646 copy_texture_to_impl_.reset( 646 copy_texture_to_impl_.reset(
647 new CopyTextureToImpl(context_, context_support_, this)); 647 new CopyTextureToImpl(context_, context_support_, this));
648 } 648 }
649 649
650 void GLHelper::InitScalerImpl() { 650 void GLHelper::InitScalerImpl() {
651 // Lazily initialize |scaler_impl_| 651 // Lazily initialize |scaler_impl_|
652 if (!scaler_impl_) 652 if (!scaler_impl_)
653 scaler_impl_.reset(new GLHelperScaling(context_, this)); 653 scaler_impl_.reset(new GLHelperScaling(context_, this));
654 } 654 }
655 655
656 WebKit::WGC3Dint GLHelper::MaxDrawBuffers() { 656 blink::WGC3Dint GLHelper::MaxDrawBuffers() {
657 InitCopyTextToImpl(); 657 InitCopyTextToImpl();
658 return copy_texture_to_impl_->MaxDrawBuffers(); 658 return copy_texture_to_impl_->MaxDrawBuffers();
659 } 659 }
660 660
661 void GLHelper::CopySubBufferDamage(WebKit::WebGLId texture, 661 void GLHelper::CopySubBufferDamage(blink::WebGLId texture,
662 WebKit::WebGLId previous_texture, 662 blink::WebGLId previous_texture,
663 const SkRegion& new_damage, 663 const SkRegion& new_damage,
664 const SkRegion& old_damage) { 664 const SkRegion& old_damage) {
665 SkRegion region(old_damage); 665 SkRegion region(old_damage);
666 if (region.op(new_damage, SkRegion::kDifference_Op)) { 666 if (region.op(new_damage, SkRegion::kDifference_Op)) {
667 ScopedFramebuffer dst_framebuffer(context_, 667 ScopedFramebuffer dst_framebuffer(context_,
668 context_->createFramebuffer()); 668 context_->createFramebuffer());
669 ScopedFramebufferBinder<GL_FRAMEBUFFER> framebuffer_binder(context_, 669 ScopedFramebufferBinder<GL_FRAMEBUFFER> framebuffer_binder(context_,
670 dst_framebuffer); 670 dst_framebuffer);
671 ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, texture); 671 ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, texture);
672 context_->framebufferTexture2D(GL_FRAMEBUFFER, 672 context_->framebufferTexture2D(GL_FRAMEBUFFER,
673 GL_COLOR_ATTACHMENT0, 673 GL_COLOR_ATTACHMENT0,
674 GL_TEXTURE_2D, 674 GL_TEXTURE_2D,
675 previous_texture, 675 previous_texture,
676 0); 676 0);
677 for (SkRegion::Iterator it(region); !it.done(); it.next()) { 677 for (SkRegion::Iterator it(region); !it.done(); it.next()) {
678 const SkIRect& rect = it.rect(); 678 const SkIRect& rect = it.rect();
679 context_->copyTexSubImage2D(GL_TEXTURE_2D, 0, 679 context_->copyTexSubImage2D(GL_TEXTURE_2D, 0,
680 rect.x(), rect.y(), 680 rect.x(), rect.y(),
681 rect.x(), rect.y(), 681 rect.x(), rect.y(),
682 rect.width(), rect.height()); 682 rect.width(), rect.height());
683 } 683 }
684 context_->flush(); 684 context_->flush();
685 } 685 }
686 } 686 }
687 687
688 WebKit::WebGLId GLHelper::CreateTexture() { 688 blink::WebGLId GLHelper::CreateTexture() {
689 WebKit::WebGLId texture = context_->createTexture(); 689 blink::WebGLId texture = context_->createTexture();
690 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, 690 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_,
691 texture); 691 texture);
692 context_->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 692 context_->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
693 context_->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 693 context_->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
694 context_->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 694 context_->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
695 context_->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 695 context_->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
696 return texture; 696 return texture;
697 } 697 }
698 698
699 WebKit::WebGLId GLHelper::ConsumeMailboxToTexture(const gpu::Mailbox& mailbox, 699 blink::WebGLId GLHelper::ConsumeMailboxToTexture(const gpu::Mailbox& mailbox,
700 uint32 sync_point) { 700 uint32 sync_point) {
701 if (mailbox.IsZero()) 701 if (mailbox.IsZero())
702 return 0; 702 return 0;
703 if (sync_point) 703 if (sync_point)
704 context_->waitSyncPoint(sync_point); 704 context_->waitSyncPoint(sync_point);
705 WebKit::WebGLId texture = CreateTexture(); 705 blink::WebGLId texture = CreateTexture();
706 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, 706 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_,
707 texture); 707 texture);
708 context_->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); 708 context_->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name);
709 return texture; 709 return texture;
710 } 710 }
711 711
712 void GLHelper::ResizeTexture(WebKit::WebGLId texture, const gfx::Size& size) { 712 void GLHelper::ResizeTexture(blink::WebGLId texture, const gfx::Size& size) {
713 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, texture); 713 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, texture);
714 context_->texImage2D(GL_TEXTURE_2D, 0, GL_RGB, 714 context_->texImage2D(GL_TEXTURE_2D, 0, GL_RGB,
715 size.width(), size.height(), 0, 715 size.width(), size.height(), 0,
716 GL_RGB, GL_UNSIGNED_BYTE, NULL); 716 GL_RGB, GL_UNSIGNED_BYTE, NULL);
717 } 717 }
718 718
719 void GLHelper::CopyTextureSubImage(WebKit::WebGLId texture, 719 void GLHelper::CopyTextureSubImage(blink::WebGLId texture,
720 const gfx::Rect& rect) { 720 const gfx::Rect& rect) {
721 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, texture); 721 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, texture);
722 context_->copyTexSubImage2D(GL_TEXTURE_2D, 0, 722 context_->copyTexSubImage2D(GL_TEXTURE_2D, 0,
723 rect.x(), rect.y(), 723 rect.x(), rect.y(),
724 rect.x(), rect.y(), rect.width(), rect.height()); 724 rect.x(), rect.y(), rect.width(), rect.height());
725 } 725 }
726 726
727 void GLHelper::CopyTextureFullImage(WebKit::WebGLId texture, 727 void GLHelper::CopyTextureFullImage(blink::WebGLId texture,
728 const gfx::Size& size) { 728 const gfx::Size& size) {
729 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, texture); 729 content::ScopedTextureBinder<GL_TEXTURE_2D> texture_binder(context_, texture);
730 context_->copyTexImage2D(GL_TEXTURE_2D, 0, 730 context_->copyTexImage2D(GL_TEXTURE_2D, 0,
731 GL_RGB, 731 GL_RGB,
732 0, 0, 732 0, 0,
733 size.width(), size.height(), 0); 733 size.width(), size.height(), 0);
734 } 734 }
735 735
736 void GLHelper::CopyTextureToImpl::ReadbackPlane( 736 void GLHelper::CopyTextureToImpl::ReadbackPlane(
737 TextureFrameBufferPair* source, 737 TextureFrameBufferPair* source,
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 // pass, which pass1_shader_ can do just as well, so let's skip 960 // pass, which pass1_shader_ can do just as well, so let's skip
961 // the actual scaling in that case. 961 // the actual scaling in that case.
962 texture = mailbox_texture; 962 texture = mailbox_texture;
963 } else { 963 } else {
964 // Scale texture to right size. 964 // Scale texture to right size.
965 scaler_.Scale(mailbox_texture); 965 scaler_.Scale(mailbox_texture);
966 texture = scaler_.texture(); 966 texture = scaler_.texture();
967 } 967 }
968 968
969 969
970 std::vector<WebKit::WebGLId> outputs(2); 970 std::vector<blink::WebGLId> outputs(2);
971 // Convert the scaled texture in to Y, U and V planes. 971 // Convert the scaled texture in to Y, U and V planes.
972 outputs[0] = y_.texture(); 972 outputs[0] = y_.texture();
973 outputs[1] = uv_; 973 outputs[1] = uv_;
974 pass1_shader_->Execute(texture, outputs); 974 pass1_shader_->Execute(texture, outputs);
975 975
976 context_->deleteTexture(mailbox_texture); 976 context_->deleteTexture(mailbox_texture);
977 977
978 outputs[0] = u_.texture(); 978 outputs[0] = u_.texture();
979 outputs[1] = v_.texture(); 979 outputs[1] = v_.texture();
980 pass2_shader_->Execute(uv_, outputs); 980 pass2_shader_->Execute(uv_, outputs);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1059 quality, 1059 quality,
1060 src_size, 1060 src_size,
1061 src_subrect, 1061 src_subrect,
1062 dst_size, 1062 dst_size,
1063 dst_subrect, 1063 dst_subrect,
1064 flip_vertically, 1064 flip_vertically,
1065 use_mrt); 1065 use_mrt);
1066 } 1066 }
1067 1067
1068 } // namespace content 1068 } // namespace content
OLDNEW
« no previous file with comments | « content/common/gpu/client/gl_helper.h ('k') | content/common/gpu/client/gl_helper_benchmark.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698