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

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

Issue 1508903002: Use GrGLTextureInfo for Skia texture handles. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ignore_gl_target
Patch Set: fix comment on #endif in new file Created 4 years, 9 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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 27 matching lines...) Expand all
38 #include "cc/quads/picture_draw_quad.h" 38 #include "cc/quads/picture_draw_quad.h"
39 #include "cc/quads/render_pass.h" 39 #include "cc/quads/render_pass.h"
40 #include "cc/quads/stream_video_draw_quad.h" 40 #include "cc/quads/stream_video_draw_quad.h"
41 #include "cc/quads/texture_draw_quad.h" 41 #include "cc/quads/texture_draw_quad.h"
42 #include "cc/raster/scoped_gpu_raster.h" 42 #include "cc/raster/scoped_gpu_raster.h"
43 #include "cc/resources/scoped_resource.h" 43 #include "cc/resources/scoped_resource.h"
44 #include "gpu/GLES2/gl2extchromium.h" 44 #include "gpu/GLES2/gl2extchromium.h"
45 #include "gpu/command_buffer/client/context_support.h" 45 #include "gpu/command_buffer/client/context_support.h"
46 #include "gpu/command_buffer/client/gles2_interface.h" 46 #include "gpu/command_buffer/client/gles2_interface.h"
47 #include "gpu/command_buffer/common/gpu_memory_allocation.h" 47 #include "gpu/command_buffer/common/gpu_memory_allocation.h"
48 #include "skia/ext/texture_handle.h"
48 #include "third_party/skia/include/core/SkBitmap.h" 49 #include "third_party/skia/include/core/SkBitmap.h"
49 #include "third_party/skia/include/core/SkColor.h" 50 #include "third_party/skia/include/core/SkColor.h"
50 #include "third_party/skia/include/core/SkColorFilter.h" 51 #include "third_party/skia/include/core/SkColorFilter.h"
51 #include "third_party/skia/include/core/SkImage.h" 52 #include "third_party/skia/include/core/SkImage.h"
52 #include "third_party/skia/include/core/SkSurface.h" 53 #include "third_party/skia/include/core/SkSurface.h"
53 #include "third_party/skia/include/gpu/GrContext.h" 54 #include "third_party/skia/include/gpu/GrContext.h"
54 #include "third_party/skia/include/gpu/GrTexture.h" 55 #include "third_party/skia/include/gpu/GrTexture.h"
55 #include "third_party/skia/include/gpu/GrTextureProvider.h" 56 #include "third_party/skia/include/gpu/GrTextureProvider.h"
56 #include "third_party/skia/include/gpu/gl/GrGLInterface.h" 57 #include "third_party/skia/include/gpu/gl/GrGLInterface.h"
58 #include "third_party/skia/include/gpu/gl/GrGLTypes.h"
57 #include "ui/gfx/geometry/quad_f.h" 59 #include "ui/gfx/geometry/quad_f.h"
58 #include "ui/gfx/geometry/rect_conversions.h" 60 #include "ui/gfx/geometry/rect_conversions.h"
59 #include "ui/gfx/skia_util.h" 61 #include "ui/gfx/skia_util.h"
60 62
61 using gpu::gles2::GLES2Interface; 63 using gpu::gles2::GLES2Interface;
62 64
63 namespace cc { 65 namespace cc {
64 namespace { 66 namespace {
65 67
66 bool NeedsIOSurfaceReadbackWorkaround() { 68 bool NeedsIOSurfaceReadbackWorkaround() {
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 return skia::RefPtr<SkImage>(); 613 return skia::RefPtr<SkImage>();
612 614
613 if (!use_gr_context) 615 if (!use_gr_context)
614 return skia::RefPtr<SkImage>(); 616 return skia::RefPtr<SkImage>();
615 617
616 ResourceProvider::ScopedReadLockGL lock(resource_provider, 618 ResourceProvider::ScopedReadLockGL lock(resource_provider,
617 source_texture_resource->id()); 619 source_texture_resource->id());
618 620
619 // Wrap the source texture in a Ganesh platform texture. 621 // Wrap the source texture in a Ganesh platform texture.
620 GrBackendTextureDesc backend_texture_description; 622 GrBackendTextureDesc backend_texture_description;
623 GrGLTextureInfo texture_info;
624 texture_info.fTarget = lock.target();
625 texture_info.fID = lock.texture_id();
621 backend_texture_description.fWidth = source_texture_resource->size().width(); 626 backend_texture_description.fWidth = source_texture_resource->size().width();
622 backend_texture_description.fHeight = 627 backend_texture_description.fHeight =
623 source_texture_resource->size().height(); 628 source_texture_resource->size().height();
624 backend_texture_description.fConfig = kSkia8888_GrPixelConfig; 629 backend_texture_description.fConfig = kSkia8888_GrPixelConfig;
625 backend_texture_description.fTextureHandle = lock.texture_id(); 630 backend_texture_description.fTextureHandle =
631 skia::GrGLTextureInfoToGrBackendObject(texture_info);
626 backend_texture_description.fOrigin = kBottomLeft_GrSurfaceOrigin; 632 backend_texture_description.fOrigin = kBottomLeft_GrSurfaceOrigin;
627 633
628 skia::RefPtr<SkImage> srcImage = skia::AdoptRef(SkImage::NewFromTexture( 634 skia::RefPtr<SkImage> srcImage = skia::AdoptRef(SkImage::NewFromTexture(
629 use_gr_context->context(), backend_texture_description)); 635 use_gr_context->context(), backend_texture_description));
630 if (!srcImage.get()) { 636 if (!srcImage.get()) {
631 TRACE_EVENT_INSTANT0("cc", 637 TRACE_EVENT_INSTANT0("cc",
632 "ApplyImageFilter wrap background texture failed", 638 "ApplyImageFilter wrap background texture failed",
633 TRACE_EVENT_SCOPE_THREAD); 639 TRACE_EVENT_SCOPE_THREAD);
634 return skia::RefPtr<SkImage>(); 640 return skia::RefPtr<SkImage>();
635 } 641 }
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 // amount of memory used by render surfaces: 954 // amount of memory used by render surfaces:
949 // LayerTreeHost::CalculateMemoryForRenderSurfaces. 955 // LayerTreeHost::CalculateMemoryForRenderSurfaces.
950 background_texture = GetBackdropTexture(background_rect); 956 background_texture = GetBackdropTexture(background_rect);
951 957
952 if (ShouldApplyBackgroundFilters(quad) && background_texture) { 958 if (ShouldApplyBackgroundFilters(quad) && background_texture) {
953 // Apply the background filters to R, so that it is applied in the 959 // Apply the background filters to R, so that it is applied in the
954 // pixels' coordinate space. 960 // pixels' coordinate space.
955 background_image = ApplyBackgroundFilters( 961 background_image = ApplyBackgroundFilters(
956 frame, quad, background_texture.get(), gfx::RectF(background_rect)); 962 frame, quad, background_texture.get(), gfx::RectF(background_rect));
957 if (background_image) 963 if (background_image)
958 background_image_id = background_image->getTextureHandle(true); 964 background_image_id = reinterpret_cast<const GrGLTextureInfo*>(
Stephen White 2016/02/26 16:39:21 Could you use GrBackendObjectToGrGLTextureInfo() h
bsalomon 2016/02/26 16:51:45 Oops, done...
965 background_image->getTextureHandle(true))
966 ->fID;
959 DCHECK(background_image_id); 967 DCHECK(background_image_id);
960 } 968 }
961 } 969 }
962 970
963 if (!background_texture) { 971 if (!background_texture) {
964 // Something went wrong with reading the backdrop. 972 // Something went wrong with reading the backdrop.
965 DCHECK(!background_image_id); 973 DCHECK(!background_image_id);
966 use_shaders_for_blending = false; 974 use_shaders_for_blending = false;
967 } else if (background_image_id) { 975 } else if (background_image_id) {
968 // Reset original background texture if there is not any mask 976 // Reset original background texture if there is not any mask
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 dst_rect.Intersect(local_clip.BoundingBox()); 1035 dst_rect.Intersect(local_clip.BoundingBox());
1028 // If we've been fully clipped out (by crop rect or clipping), there's 1036 // If we've been fully clipped out (by crop rect or clipping), there's
1029 // nothing to draw. 1037 // nothing to draw.
1030 if (dst_rect.IsEmpty()) { 1038 if (dst_rect.IsEmpty()) {
1031 return; 1039 return;
1032 } 1040 }
1033 filter_image = ApplyImageFilter(ScopedUseGrContext::Create(this, frame), 1041 filter_image = ApplyImageFilter(ScopedUseGrContext::Create(this, frame),
1034 resource_provider_, rect, dst_rect, 1042 resource_provider_, rect, dst_rect,
1035 scale, filter.get(), contents_texture); 1043 scale, filter.get(), contents_texture);
1036 if (filter_image) { 1044 if (filter_image) {
1037 filter_image_id = filter_image->getTextureHandle(true); 1045 filter_image_id = reinterpret_cast<const GrGLTextureInfo*>(
Stephen White 2016/02/26 16:39:21 Could you use GrBackendObjectToGrGLTextureInfo() h
bsalomon 2016/02/26 16:51:45 ...and done.
1046 filter_image->getTextureHandle(true))
1047 ->fID;
1038 DCHECK(filter_image_id); 1048 DCHECK(filter_image_id);
1039 rect = dst_rect; 1049 rect = dst_rect;
1040 } 1050 }
1041 } 1051 }
1042 } 1052 }
1043 } 1053 }
1044 1054
1045 scoped_ptr<ResourceProvider::ScopedSamplerGL> mask_resource_lock; 1055 scoped_ptr<ResourceProvider::ScopedSamplerGL> mask_resource_lock;
1046 unsigned mask_texture_id = 0; 1056 unsigned mask_texture_id = 0;
1047 SamplerType mask_sampler = SAMPLER_TYPE_NA; 1057 SamplerType mask_sampler = SAMPLER_TYPE_NA;
(...skipping 2586 matching lines...) Expand 10 before | Expand all | Expand 10 after
3634 texture_id = pending_overlay_resources_.back()->texture_id(); 3644 texture_id = pending_overlay_resources_.back()->texture_id();
3635 } 3645 }
3636 3646
3637 context_support_->ScheduleOverlayPlane( 3647 context_support_->ScheduleOverlayPlane(
3638 overlay.plane_z_order, overlay.transform, texture_id, 3648 overlay.plane_z_order, overlay.transform, texture_id,
3639 ToNearestRect(overlay.display_rect), overlay.uv_rect); 3649 ToNearestRect(overlay.display_rect), overlay.uv_rect);
3640 } 3650 }
3641 } 3651 }
3642 3652
3643 } // namespace cc 3653 } // 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