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

Side by Side Diff: cc/output/gl_renderer.cc

Issue 547763003: Revert of Revert of Use SkSurface and SkImage instead of SkGpuDevice and SkBitmap in cc. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 | « no previous file | cc/resources/resource_provider.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 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 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 "cc/output/gl_renderer.h" 5 #include "cc/output/gl_renderer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 18 matching lines...) Expand all
29 #include "cc/resources/layer_quad.h" 29 #include "cc/resources/layer_quad.h"
30 #include "cc/resources/scoped_resource.h" 30 #include "cc/resources/scoped_resource.h"
31 #include "cc/resources/texture_mailbox_deleter.h" 31 #include "cc/resources/texture_mailbox_deleter.h"
32 #include "gpu/GLES2/gl2extchromium.h" 32 #include "gpu/GLES2/gl2extchromium.h"
33 #include "gpu/command_buffer/client/context_support.h" 33 #include "gpu/command_buffer/client/context_support.h"
34 #include "gpu/command_buffer/client/gles2_interface.h" 34 #include "gpu/command_buffer/client/gles2_interface.h"
35 #include "gpu/command_buffer/common/gpu_memory_allocation.h" 35 #include "gpu/command_buffer/common/gpu_memory_allocation.h"
36 #include "third_party/skia/include/core/SkBitmap.h" 36 #include "third_party/skia/include/core/SkBitmap.h"
37 #include "third_party/skia/include/core/SkColor.h" 37 #include "third_party/skia/include/core/SkColor.h"
38 #include "third_party/skia/include/core/SkColorFilter.h" 38 #include "third_party/skia/include/core/SkColorFilter.h"
39 #include "third_party/skia/include/core/SkImage.h"
39 #include "third_party/skia/include/core/SkSurface.h" 40 #include "third_party/skia/include/core/SkSurface.h"
40 #include "third_party/skia/include/gpu/GrContext.h" 41 #include "third_party/skia/include/gpu/GrContext.h"
41 #include "third_party/skia/include/gpu/GrTexture.h" 42 #include "third_party/skia/include/gpu/GrTexture.h"
42 #include "third_party/skia/include/gpu/SkGpuDevice.h"
43 #include "third_party/skia/include/gpu/SkGrTexturePixelRef.h" 43 #include "third_party/skia/include/gpu/SkGrTexturePixelRef.h"
44 #include "third_party/skia/include/gpu/gl/GrGLInterface.h" 44 #include "third_party/skia/include/gpu/gl/GrGLInterface.h"
45 #include "ui/gfx/geometry/quad_f.h" 45 #include "ui/gfx/geometry/quad_f.h"
46 #include "ui/gfx/geometry/rect_conversions.h" 46 #include "ui/gfx/geometry/rect_conversions.h"
47 47
48 using gpu::gles2::GLES2Interface; 48 using gpu::gles2::GLES2Interface;
49 49
50 namespace cc { 50 namespace cc {
51 namespace { 51 namespace {
52 52
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 (SkColorGetB(color) * (1.0f / 255.0f)) * alpha, 603 (SkColorGetB(color) * (1.0f / 255.0f)) * alpha,
604 alpha)); 604 alpha));
605 605
606 GLC(gl_, gl_->LineWidth(quad->width)); 606 GLC(gl_, gl_->LineWidth(quad->width));
607 607
608 // The indices for the line are stored in the same array as the triangle 608 // The indices for the line are stored in the same array as the triangle
609 // indices. 609 // indices.
610 GLC(gl_, gl_->DrawElements(GL_LINE_LOOP, 4, GL_UNSIGNED_SHORT, 0)); 610 GLC(gl_, gl_->DrawElements(GL_LINE_LOOP, 4, GL_UNSIGNED_SHORT, 0));
611 } 611 }
612 612
613 static SkBitmap ApplyImageFilter( 613 static skia::RefPtr<SkImage> ApplyImageFilter(
614 scoped_ptr<GLRenderer::ScopedUseGrContext> use_gr_context, 614 scoped_ptr<GLRenderer::ScopedUseGrContext> use_gr_context,
615 ResourceProvider* resource_provider, 615 ResourceProvider* resource_provider,
616 const gfx::Point& origin, 616 const gfx::Point& origin,
617 const gfx::Vector2dF& scale, 617 const gfx::Vector2dF& scale,
618 SkImageFilter* filter, 618 SkImageFilter* filter,
619 ScopedResource* source_texture_resource) { 619 ScopedResource* source_texture_resource) {
620 if (!filter) 620 if (!filter)
621 return SkBitmap(); 621 return skia::RefPtr<SkImage>();
622 622
623 if (!use_gr_context) 623 if (!use_gr_context)
624 return SkBitmap(); 624 return skia::RefPtr<SkImage>();
625 625
626 ResourceProvider::ScopedReadLockGL lock(resource_provider, 626 ResourceProvider::ScopedReadLockGL lock(resource_provider,
627 source_texture_resource->id()); 627 source_texture_resource->id());
628 628
629 // Wrap the source texture in a Ganesh platform texture. 629 // Wrap the source texture in a Ganesh platform texture.
630 GrBackendTextureDesc backend_texture_description; 630 GrBackendTextureDesc backend_texture_description;
631 backend_texture_description.fWidth = source_texture_resource->size().width(); 631 backend_texture_description.fWidth = source_texture_resource->size().width();
632 backend_texture_description.fHeight = 632 backend_texture_description.fHeight =
633 source_texture_resource->size().height(); 633 source_texture_resource->size().height();
634 backend_texture_description.fConfig = kSkia8888_GrPixelConfig; 634 backend_texture_description.fConfig = kSkia8888_GrPixelConfig;
(...skipping 22 matching lines...) Expand all
657 desc.fConfig = kSkia8888_GrPixelConfig; 657 desc.fConfig = kSkia8888_GrPixelConfig;
658 desc.fOrigin = kBottomLeft_GrSurfaceOrigin; 658 desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
659 GrAutoScratchTexture scratch_texture( 659 GrAutoScratchTexture scratch_texture(
660 use_gr_context->context(), desc, GrContext::kExact_ScratchTexMatch); 660 use_gr_context->context(), desc, GrContext::kExact_ScratchTexMatch);
661 skia::RefPtr<GrTexture> backing_store = 661 skia::RefPtr<GrTexture> backing_store =
662 skia::AdoptRef(scratch_texture.detach()); 662 skia::AdoptRef(scratch_texture.detach());
663 if (backing_store.get() == NULL) { 663 if (backing_store.get() == NULL) {
664 TRACE_EVENT_INSTANT0("cc", 664 TRACE_EVENT_INSTANT0("cc",
665 "ApplyImageFilter scratch texture allocation failed", 665 "ApplyImageFilter scratch texture allocation failed",
666 TRACE_EVENT_SCOPE_THREAD); 666 TRACE_EVENT_SCOPE_THREAD);
667 return SkBitmap(); 667 return skia::RefPtr<SkImage>();
668 } 668 }
669 669
670 // Create a device and canvas using that backing store. 670 // Create surface to draw into.
671 skia::RefPtr<SkGpuDevice> device = 671 skia::RefPtr<SkSurface> surface = skia::AdoptRef(
672 skia::AdoptRef(SkGpuDevice::Create(backing_store->asRenderTarget())); 672 SkSurface::NewRenderTargetDirect(backing_store->asRenderTarget()));
673 DCHECK(device.get()); 673 skia::RefPtr<SkCanvas> canvas = skia::SharePtr(surface->getCanvas());
674 SkCanvas canvas(device.get());
675 674
676 // Draw the source bitmap through the filter to the canvas. 675 // Draw the source bitmap through the filter to the canvas.
677 SkPaint paint; 676 SkPaint paint;
678 paint.setImageFilter(filter); 677 paint.setImageFilter(filter);
679 canvas.clear(SK_ColorTRANSPARENT); 678 canvas->clear(SK_ColorTRANSPARENT);
680 679
681 canvas.translate(SkIntToScalar(-origin.x()), SkIntToScalar(-origin.y())); 680 canvas->translate(SkIntToScalar(-origin.x()), SkIntToScalar(-origin.y()));
682 canvas.scale(scale.x(), scale.y()); 681 canvas->scale(scale.x(), scale.y());
683 canvas.drawSprite(source, 0, 0, &paint); 682 canvas->drawSprite(source, 0, 0, &paint);
683
684 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot());
685 if (!image || !image->getTexture()) {
686 return skia::RefPtr<SkImage>();
687 }
684 688
685 // Flush the GrContext to ensure all buffered GL calls are drawn to the 689 // Flush the GrContext to ensure all buffered GL calls are drawn to the
686 // backing store before we access and return it, and have cc begin using the 690 // backing store before we access and return it, and have cc begin using the
687 // GL context again. 691 // GL context again.
688 use_gr_context->context()->flush(); 692 canvas->flush();
689 693
690 return device->accessBitmap(false); 694 return image;
691 } 695 }
692 696
693 static SkBitmap ApplyBlendModeWithBackdrop( 697 static skia::RefPtr<SkImage> ApplyBlendModeWithBackdrop(
694 scoped_ptr<GLRenderer::ScopedUseGrContext> use_gr_context, 698 scoped_ptr<GLRenderer::ScopedUseGrContext> use_gr_context,
695 ResourceProvider* resource_provider, 699 ResourceProvider* resource_provider,
696 SkBitmap source_bitmap_with_filters, 700 skia::RefPtr<SkImage> source_bitmap_with_filters,
697 ScopedResource* source_texture_resource, 701 ScopedResource* source_texture_resource,
698 ScopedResource* background_texture_resource, 702 ScopedResource* background_texture_resource,
699 SkXfermode::Mode blend_mode) { 703 SkXfermode::Mode blend_mode) {
700 if (!use_gr_context) 704 if (!use_gr_context)
701 return source_bitmap_with_filters; 705 return source_bitmap_with_filters;
702 706
703 DCHECK(background_texture_resource); 707 DCHECK(background_texture_resource);
704 DCHECK(source_texture_resource); 708 DCHECK(source_texture_resource);
705 709
706 gfx::Size source_size = source_texture_resource->size(); 710 gfx::Size source_size = source_texture_resource->size();
707 gfx::Size background_size = background_texture_resource->size(); 711 gfx::Size background_size = background_texture_resource->size();
708 712
709 DCHECK_LE(background_size.width(), source_size.width()); 713 DCHECK_LE(background_size.width(), source_size.width());
710 DCHECK_LE(background_size.height(), source_size.height()); 714 DCHECK_LE(background_size.height(), source_size.height());
711 715
712 int source_texture_with_filters_id; 716 int source_texture_with_filters_id;
713 scoped_ptr<ResourceProvider::ScopedReadLockGL> lock; 717 scoped_ptr<ResourceProvider::ScopedReadLockGL> lock;
714 if (source_bitmap_with_filters.getTexture()) { 718 if (source_bitmap_with_filters) {
715 DCHECK_EQ(source_size.width(), source_bitmap_with_filters.width()); 719 DCHECK_EQ(source_size.width(), source_bitmap_with_filters->width());
716 DCHECK_EQ(source_size.height(), source_bitmap_with_filters.height()); 720 DCHECK_EQ(source_size.height(), source_bitmap_with_filters->height());
717 GrTexture* texture = 721 GrTexture* texture =
718 reinterpret_cast<GrTexture*>(source_bitmap_with_filters.getTexture()); 722 reinterpret_cast<GrTexture*>(source_bitmap_with_filters->getTexture());
719 source_texture_with_filters_id = texture->getTextureHandle(); 723 source_texture_with_filters_id = texture->getTextureHandle();
720 } else { 724 } else {
721 lock.reset(new ResourceProvider::ScopedReadLockGL( 725 lock.reset(new ResourceProvider::ScopedReadLockGL(
722 resource_provider, source_texture_resource->id())); 726 resource_provider, source_texture_resource->id()));
723 source_texture_with_filters_id = lock->texture_id(); 727 source_texture_with_filters_id = lock->texture_id();
724 } 728 }
725 729
726 ResourceProvider::ScopedReadLockGL lock_background( 730 ResourceProvider::ScopedReadLockGL lock_background(
727 resource_provider, background_texture_resource->id()); 731 resource_provider, background_texture_resource->id());
728 732
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 skia::AdoptRef(scratch_texture.detach()); 782 skia::AdoptRef(scratch_texture.detach());
779 if (backing_store.get() == NULL) { 783 if (backing_store.get() == NULL) {
780 TRACE_EVENT_INSTANT0( 784 TRACE_EVENT_INSTANT0(
781 "cc", 785 "cc",
782 "ApplyBlendModeWithBackdrop scratch texture allocation failed", 786 "ApplyBlendModeWithBackdrop scratch texture allocation failed",
783 TRACE_EVENT_SCOPE_THREAD); 787 TRACE_EVENT_SCOPE_THREAD);
784 return source_bitmap_with_filters; 788 return source_bitmap_with_filters;
785 } 789 }
786 790
787 // Create a device and canvas using that backing store. 791 // Create a device and canvas using that backing store.
788 skia::RefPtr<SkGpuDevice> device = 792 skia::RefPtr<SkSurface> surface = skia::AdoptRef(
789 skia::AdoptRef(SkGpuDevice::Create(backing_store->asRenderTarget())); 793 SkSurface::NewRenderTargetDirect(backing_store->asRenderTarget()));
790 DCHECK(device.get()); 794 if (!surface)
791 SkCanvas canvas(device.get()); 795 return skia::RefPtr<SkImage>();
796 skia::RefPtr<SkCanvas> canvas = skia::SharePtr(surface->getCanvas());
792 797
793 // Draw the source bitmap through the filter to the canvas. 798 // Draw the source bitmap through the filter to the canvas.
794 canvas.clear(SK_ColorTRANSPARENT); 799 canvas->clear(SK_ColorTRANSPARENT);
795 canvas.drawSprite(background, 0, 0); 800 canvas->drawSprite(background, 0, 0);
796 SkPaint paint; 801 SkPaint paint;
797 paint.setXfermodeMode(blend_mode); 802 paint.setXfermodeMode(blend_mode);
798 canvas.drawSprite(source, 0, 0, &paint); 803 canvas->drawSprite(source, 0, 0, &paint);
804
805 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot());
806 if (!image || !image->getTexture()) {
807 return skia::RefPtr<SkImage>();
808 }
799 809
800 // Flush the GrContext to ensure all buffered GL calls are drawn to the 810 // Flush the GrContext to ensure all buffered GL calls are drawn to the
801 // backing store before we access and return it, and have cc begin using the 811 // backing store before we access and return it, and have cc begin using the
802 // GL context again. 812 // GL context again.
803 use_gr_context->context()->flush(); 813 canvas->flush();
804 814
805 return device->accessBitmap(false); 815 return image;
806 } 816 }
807 817
808 scoped_ptr<ScopedResource> GLRenderer::GetBackgroundWithFilters( 818 scoped_ptr<ScopedResource> GLRenderer::GetBackgroundWithFilters(
809 DrawingFrame* frame, 819 DrawingFrame* frame,
810 const RenderPassDrawQuad* quad, 820 const RenderPassDrawQuad* quad,
811 const gfx::Transform& contents_device_transform, 821 const gfx::Transform& contents_device_transform,
812 const gfx::Transform& contents_device_transform_inverse, 822 const gfx::Transform& contents_device_transform_inverse,
813 bool* background_changed) { 823 bool* background_changed) {
814 // This method draws a background filter, which applies a filter to any pixels 824 // This method draws a background filter, which applies a filter to any pixels
815 // behind the quad and seen through its background. The algorithm works as 825 // behind the quad and seen through its background. The algorithm works as
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 { 876 {
867 ResourceProvider::ScopedWriteLockGL lock(resource_provider_, 877 ResourceProvider::ScopedWriteLockGL lock(resource_provider_,
868 device_background_texture->id()); 878 device_background_texture->id());
869 GetFramebufferTexture( 879 GetFramebufferTexture(
870 lock.texture_id(), device_background_texture->format(), window_rect); 880 lock.texture_id(), device_background_texture->format(), window_rect);
871 } 881 }
872 882
873 skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter( 883 skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter(
874 quad->background_filters, device_background_texture->size()); 884 quad->background_filters, device_background_texture->size());
875 885
876 SkBitmap filtered_device_background; 886 skia::RefPtr<SkImage> filtered_device_background;
877 if (apply_background_filters) { 887 if (apply_background_filters) {
878 filtered_device_background = 888 filtered_device_background =
879 ApplyImageFilter(ScopedUseGrContext::Create(this, frame), 889 ApplyImageFilter(ScopedUseGrContext::Create(this, frame),
880 resource_provider_, 890 resource_provider_,
881 quad->rect.origin(), 891 quad->rect.origin(),
882 quad->filters_scale, 892 quad->filters_scale,
883 filter.get(), 893 filter.get(),
884 device_background_texture.get()); 894 device_background_texture.get());
885 } 895 }
886 *background_changed = (filtered_device_background.getTexture() != NULL); 896 *background_changed = (filtered_device_background != NULL);
887 897
888 int filtered_device_background_texture_id = 0; 898 int filtered_device_background_texture_id = 0;
889 scoped_ptr<ResourceProvider::ScopedReadLockGL> lock; 899 scoped_ptr<ResourceProvider::ScopedReadLockGL> lock;
890 if (filtered_device_background.getTexture()) { 900 if (filtered_device_background) {
891 GrTexture* texture = 901 GrTexture* texture = filtered_device_background->getTexture();
892 reinterpret_cast<GrTexture*>(filtered_device_background.getTexture());
893 filtered_device_background_texture_id = texture->getTextureHandle(); 902 filtered_device_background_texture_id = texture->getTextureHandle();
894 } else { 903 } else {
895 lock.reset(new ResourceProvider::ScopedReadLockGL( 904 lock.reset(new ResourceProvider::ScopedReadLockGL(
896 resource_provider_, device_background_texture->id())); 905 resource_provider_, device_background_texture->id()));
897 filtered_device_background_texture_id = lock->texture_id(); 906 filtered_device_background_texture_id = lock->texture_id();
898 } 907 }
899 908
900 scoped_ptr<ScopedResource> background_texture = 909 scoped_ptr<ScopedResource> background_texture =
901 ScopedResource::Create(resource_provider_); 910 ScopedResource::Create(resource_provider_);
902 background_texture->Allocate( 911 background_texture->Allocate(
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 contents_device_transform, 990 contents_device_transform,
982 contents_device_transform_inverse, 991 contents_device_transform_inverse,
983 &background_changed); 992 &background_changed);
984 993
985 if (disable_blending) 994 if (disable_blending)
986 SetBlendEnabled(true); 995 SetBlendEnabled(true);
987 } 996 }
988 997
989 // TODO(senorblanco): Cache this value so that we don't have to do it for both 998 // TODO(senorblanco): Cache this value so that we don't have to do it for both
990 // the surface and its replica. Apply filters to the contents texture. 999 // the surface and its replica. Apply filters to the contents texture.
991 SkBitmap filter_bitmap; 1000 skia::RefPtr<SkImage> filter_bitmap;
992 SkScalar color_matrix[20]; 1001 SkScalar color_matrix[20];
993 bool use_color_matrix = false; 1002 bool use_color_matrix = false;
994 if (!quad->filters.IsEmpty()) { 1003 if (!quad->filters.IsEmpty()) {
995 skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter( 1004 skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter(
996 quad->filters, contents_texture->size()); 1005 quad->filters, contents_texture->size());
997 if (filter) { 1006 if (filter) {
998 skia::RefPtr<SkColorFilter> cf; 1007 skia::RefPtr<SkColorFilter> cf;
999 1008
1000 { 1009 {
1001 SkColorFilter* colorfilter_rawptr = NULL; 1010 SkColorFilter* colorfilter_rawptr = NULL;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 if (quad->mask_resource_id) { 1078 if (quad->mask_resource_id) {
1070 mask_resource_lock.reset(new ResourceProvider::ScopedReadLockGL( 1079 mask_resource_lock.reset(new ResourceProvider::ScopedReadLockGL(
1071 resource_provider_, quad->mask_resource_id)); 1080 resource_provider_, quad->mask_resource_id));
1072 mask_texture_id = mask_resource_lock->texture_id(); 1081 mask_texture_id = mask_resource_lock->texture_id();
1073 } 1082 }
1074 1083
1075 // TODO(danakj): use the background_texture and blend the background in with 1084 // TODO(danakj): use the background_texture and blend the background in with
1076 // this draw instead of having a separate copy of the background texture. 1085 // this draw instead of having a separate copy of the background texture.
1077 1086
1078 scoped_ptr<ResourceProvider::ScopedSamplerGL> contents_resource_lock; 1087 scoped_ptr<ResourceProvider::ScopedSamplerGL> contents_resource_lock;
1079 if (filter_bitmap.getTexture()) { 1088 if (filter_bitmap) {
1080 GrTexture* texture = 1089 GrTexture* texture = filter_bitmap->getTexture();
1081 reinterpret_cast<GrTexture*>(filter_bitmap.getTexture());
1082 DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_)); 1090 DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_));
1083 gl_->BindTexture(GL_TEXTURE_2D, texture->getTextureHandle()); 1091 gl_->BindTexture(GL_TEXTURE_2D, texture->getTextureHandle());
1084 } else { 1092 } else {
1085 contents_resource_lock = 1093 contents_resource_lock =
1086 make_scoped_ptr(new ResourceProvider::ScopedSamplerGL( 1094 make_scoped_ptr(new ResourceProvider::ScopedSamplerGL(
1087 resource_provider_, contents_texture->id(), GL_LINEAR)); 1095 resource_provider_, contents_texture->id(), GL_LINEAR));
1088 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), 1096 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D),
1089 contents_resource_lock->target()); 1097 contents_resource_lock->target());
1090 } 1098 }
1091 1099
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1326 device_layer_edges.ToQuadF(), 1334 device_layer_edges.ToQuadF(),
1327 &clipped); 1335 &clipped);
1328 1336
1329 SetShaderOpacity(quad->opacity(), shader_alpha_location); 1337 SetShaderOpacity(quad->opacity(), shader_alpha_location);
1330 SetShaderQuadF(surface_quad, shader_quad_location); 1338 SetShaderQuadF(surface_quad, shader_quad_location);
1331 DrawQuadGeometry( 1339 DrawQuadGeometry(
1332 frame, quad->quadTransform(), quad->rect, shader_matrix_location); 1340 frame, quad->quadTransform(), quad->rect, shader_matrix_location);
1333 1341
1334 // Flush the compositor context before the filter bitmap goes out of 1342 // Flush the compositor context before the filter bitmap goes out of
1335 // scope, so the draw gets processed before the filter texture gets deleted. 1343 // scope, so the draw gets processed before the filter texture gets deleted.
1336 if (filter_bitmap.getTexture()) 1344 if (filter_bitmap)
1337 GLC(gl_, gl_->Flush()); 1345 GLC(gl_, gl_->Flush());
1338 } 1346 }
1339 1347
1340 struct SolidColorProgramUniforms { 1348 struct SolidColorProgramUniforms {
1341 unsigned program; 1349 unsigned program;
1342 unsigned matrix_location; 1350 unsigned matrix_location;
1343 unsigned viewport_location; 1351 unsigned viewport_location;
1344 unsigned quad_location; 1352 unsigned quad_location;
1345 unsigned edge_location; 1353 unsigned edge_location;
1346 unsigned color_location; 1354 unsigned color_location;
(...skipping 1827 matching lines...) Expand 10 before | Expand all | Expand 10 after
3174 context_support_->ScheduleOverlayPlane( 3182 context_support_->ScheduleOverlayPlane(
3175 overlay.plane_z_order, 3183 overlay.plane_z_order,
3176 overlay.transform, 3184 overlay.transform,
3177 pending_overlay_resources_.back()->texture_id(), 3185 pending_overlay_resources_.back()->texture_id(),
3178 overlay.display_rect, 3186 overlay.display_rect,
3179 overlay.uv_rect); 3187 overlay.uv_rect);
3180 } 3188 }
3181 } 3189 }
3182 3190
3183 } // namespace cc 3191 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/resources/resource_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698