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

Side by Side Diff: cc/raster/raster_buffer_provider.cc

Issue 2175553002: Raster PictureLayerTiling with fractional translation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clean up Created 4 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/raster/raster_buffer_provider.h" 5 #include "cc/raster/raster_buffer_provider.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/trace_event/trace_event.h" 9 #include "base/trace_event/trace_event.h"
10 #include "cc/base/scale_translate2d.h"
10 #include "cc/playback/raster_source.h" 11 #include "cc/playback/raster_source.h"
11 #include "cc/raster/texture_compressor.h" 12 #include "cc/raster/texture_compressor.h"
12 #include "cc/resources/platform_color.h" 13 #include "cc/resources/platform_color.h"
13 #include "cc/resources/resource_format_utils.h" 14 #include "cc/resources/resource_format_utils.h"
14 #include "third_party/skia/include/core/SkCanvas.h" 15 #include "third_party/skia/include/core/SkCanvas.h"
15 #include "third_party/skia/include/core/SkSurface.h" 16 #include "third_party/skia/include/core/SkSurface.h"
16 17
17 namespace cc { 18 namespace cc {
18 19
19 RasterBufferProvider::RasterBufferProvider() {} 20 RasterBufferProvider::RasterBufferProvider() {}
(...skipping 24 matching lines...) Expand all
44 45
45 // static 46 // static
46 void RasterBufferProvider::PlaybackToMemory( 47 void RasterBufferProvider::PlaybackToMemory(
47 void* memory, 48 void* memory,
48 ResourceFormat format, 49 ResourceFormat format,
49 const gfx::Size& size, 50 const gfx::Size& size,
50 size_t stride, 51 size_t stride,
51 const RasterSource* raster_source, 52 const RasterSource* raster_source,
52 const gfx::Rect& canvas_bitmap_rect, 53 const gfx::Rect& canvas_bitmap_rect,
53 const gfx::Rect& canvas_playback_rect, 54 const gfx::Rect& canvas_playback_rect,
54 float scale, 55 const ScaleTranslate2d& transform,
55 const RasterSource::PlaybackSettings& playback_settings) { 56 const RasterSource::PlaybackSettings& playback_settings) {
56 TRACE_EVENT0("disabled-by-default-cc.debug", 57 TRACE_EVENT0("disabled-by-default-cc.debug",
57 "RasterBufferProvider::PlaybackToMemory"); 58 "RasterBufferProvider::PlaybackToMemory");
58 59
59 DCHECK(IsSupportedPlaybackToMemoryFormat(format)) << format; 60 DCHECK(IsSupportedPlaybackToMemoryFormat(format)) << format;
60 61
61 // Uses kPremul_SkAlphaType since the result is not known to be opaque. 62 // Uses kPremul_SkAlphaType since the result is not known to be opaque.
62 SkImageInfo info = 63 SkImageInfo info =
63 SkImageInfo::MakeN32(size.width(), size.height(), kPremul_SkAlphaType); 64 SkImageInfo::MakeN32(size.width(), size.height(), kPremul_SkAlphaType);
64 65
65 // Use unknown pixel geometry to disable LCD text. 66 // Use unknown pixel geometry to disable LCD text.
66 SkSurfaceProps surface_props(0, kUnknown_SkPixelGeometry); 67 SkSurfaceProps surface_props(0, kUnknown_SkPixelGeometry);
67 if (raster_source->CanUseLCDText()) { 68 if (raster_source->CanUseLCDText()) {
68 // LegacyFontHost will get LCD text and skia figures out what type to use. 69 // LegacyFontHost will get LCD text and skia figures out what type to use.
69 surface_props = SkSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType); 70 surface_props = SkSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType);
70 } 71 }
71 72
72 if (!stride) 73 if (!stride)
73 stride = info.minRowBytes(); 74 stride = info.minRowBytes();
74 DCHECK_GT(stride, 0u); 75 DCHECK_GT(stride, 0u);
75 76
76 switch (format) { 77 switch (format) {
77 case RGBA_8888: 78 case RGBA_8888:
78 case BGRA_8888: { 79 case BGRA_8888: {
79 sk_sp<SkSurface> surface = 80 sk_sp<SkSurface> surface =
80 SkSurface::MakeRasterDirect(info, memory, stride, &surface_props); 81 SkSurface::MakeRasterDirect(info, memory, stride, &surface_props);
81 raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect, 82 raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect,
82 canvas_playback_rect, scale, 83 canvas_playback_rect, transform,
83 playback_settings); 84 playback_settings);
84 return; 85 return;
85 } 86 }
86 case RGBA_4444: 87 case RGBA_4444:
87 case ETC1: { 88 case ETC1: {
88 sk_sp<SkSurface> surface = SkSurface::MakeRaster(info, &surface_props); 89 sk_sp<SkSurface> surface = SkSurface::MakeRaster(info, &surface_props);
89 // TODO(reveman): Improve partial raster support by reducing the size of 90 // TODO(reveman): Improve partial raster support by reducing the size of
90 // playback rect passed to PlaybackToCanvas. crbug.com/519070 91 // playback rect passed to PlaybackToCanvas. crbug.com/519070
91 raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect, 92 raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect,
92 canvas_bitmap_rect, scale, 93 canvas_bitmap_rect, transform,
93 playback_settings); 94 playback_settings);
94 95
95 if (format == ETC1) { 96 if (format == ETC1) {
96 TRACE_EVENT0("cc", 97 TRACE_EVENT0("cc",
97 "RasterBufferProvider::PlaybackToMemory::CompressETC1"); 98 "RasterBufferProvider::PlaybackToMemory::CompressETC1");
98 DCHECK_EQ(size.width() % 4, 0); 99 DCHECK_EQ(size.width() % 4, 0);
99 DCHECK_EQ(size.height() % 4, 0); 100 DCHECK_EQ(size.height() % 4, 0);
100 std::unique_ptr<TextureCompressor> texture_compressor = 101 std::unique_ptr<TextureCompressor> texture_compressor =
101 TextureCompressor::Create(TextureCompressor::kFormatETC1); 102 TextureCompressor::Create(TextureCompressor::kFormatETC1);
102 SkPixmap pixmap; 103 SkPixmap pixmap;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 case RGB_565: 143 case RGB_565:
143 case RED_8: 144 case RED_8:
144 case LUMINANCE_F16: 145 case LUMINANCE_F16:
145 return false; 146 return false;
146 } 147 }
147 NOTREACHED(); 148 NOTREACHED();
148 return false; 149 return false;
149 } 150 }
150 151
151 } // namespace cc 152 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698