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

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

Issue 1854513002: cc: Add RasterSource::PlaybackSettings for finer control of raster. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 | « cc/raster/tile_task_worker_pool.h ('k') | cc/raster/tile_task_worker_pool_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 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/tile_task_worker_pool.h" 5 #include "cc/raster/tile_task_worker_pool.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/playback/raster_source.h" 10 #include "cc/playback/raster_source.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 case LUMINANCE_F16: 53 case LUMINANCE_F16:
54 return false; 54 return false;
55 } 55 }
56 NOTREACHED(); 56 NOTREACHED();
57 return false; 57 return false;
58 } 58 }
59 59
60 } // anonymous namespace 60 } // anonymous namespace
61 61
62 // static 62 // static
63 void TileTaskWorkerPool::PlaybackToMemory(void* memory, 63 void TileTaskWorkerPool::PlaybackToMemory(
64 ResourceFormat format, 64 void* memory,
65 const gfx::Size& size, 65 ResourceFormat format,
66 size_t stride, 66 const gfx::Size& size,
67 const RasterSource* raster_source, 67 size_t stride,
68 const gfx::Rect& canvas_bitmap_rect, 68 const RasterSource* raster_source,
69 const gfx::Rect& canvas_playback_rect, 69 const gfx::Rect& canvas_bitmap_rect,
70 float scale, 70 const gfx::Rect& canvas_playback_rect,
71 bool include_images) { 71 float scale,
72 const RasterSource::PlaybackSettings& playback_settings) {
72 TRACE_EVENT0("cc", "TileTaskWorkerPool::PlaybackToMemory"); 73 TRACE_EVENT0("cc", "TileTaskWorkerPool::PlaybackToMemory");
73 74
74 DCHECK(IsSupportedPlaybackToMemoryFormat(format)) << format; 75 DCHECK(IsSupportedPlaybackToMemoryFormat(format)) << format;
75 76
76 // Uses kPremul_SkAlphaType since the result is not known to be opaque. 77 // Uses kPremul_SkAlphaType since the result is not known to be opaque.
77 SkImageInfo info = 78 SkImageInfo info =
78 SkImageInfo::MakeN32(size.width(), size.height(), kPremul_SkAlphaType); 79 SkImageInfo::MakeN32(size.width(), size.height(), kPremul_SkAlphaType);
79 80
80 // Use unknown pixel geometry to disable LCD text. 81 // Use unknown pixel geometry to disable LCD text.
81 SkSurfaceProps surface_props(0, kUnknown_SkPixelGeometry); 82 SkSurfaceProps surface_props(0, kUnknown_SkPixelGeometry);
82 if (raster_source->CanUseLCDText()) { 83 if (raster_source->CanUseLCDText()) {
83 // LegacyFontHost will get LCD text and skia figures out what type to use. 84 // LegacyFontHost will get LCD text and skia figures out what type to use.
84 surface_props = SkSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType); 85 surface_props = SkSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType);
85 } 86 }
86 87
87 if (!stride) 88 if (!stride)
88 stride = info.minRowBytes(); 89 stride = info.minRowBytes();
89 DCHECK_GT(stride, 0u); 90 DCHECK_GT(stride, 0u);
90 91
91 switch (format) { 92 switch (format) {
92 case RGBA_8888: 93 case RGBA_8888:
93 case BGRA_8888: { 94 case BGRA_8888: {
94 skia::RefPtr<SkSurface> surface = skia::AdoptRef( 95 skia::RefPtr<SkSurface> surface = skia::AdoptRef(
95 SkSurface::NewRasterDirect(info, memory, stride, &surface_props)); 96 SkSurface::NewRasterDirect(info, memory, stride, &surface_props));
96 raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect, 97 raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect,
97 canvas_playback_rect, scale, 98 canvas_playback_rect, scale,
98 include_images); 99 playback_settings);
99 return; 100 return;
100 } 101 }
101 case RGBA_4444: 102 case RGBA_4444:
102 case ETC1: { 103 case ETC1: {
103 skia::RefPtr<SkSurface> surface = 104 skia::RefPtr<SkSurface> surface =
104 skia::AdoptRef(SkSurface::NewRaster(info, &surface_props)); 105 skia::AdoptRef(SkSurface::NewRaster(info, &surface_props));
105 // TODO(reveman): Improve partial raster support by reducing the size of 106 // TODO(reveman): Improve partial raster support by reducing the size of
106 // playback rect passed to PlaybackToCanvas. crbug.com/519070 107 // playback rect passed to PlaybackToCanvas. crbug.com/519070
107 raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect, 108 raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect,
108 canvas_bitmap_rect, scale, 109 canvas_bitmap_rect, scale,
109 include_images); 110 playback_settings);
110 111
111 if (format == ETC1) { 112 if (format == ETC1) {
112 TRACE_EVENT0("cc", 113 TRACE_EVENT0("cc",
113 "TileTaskWorkerPool::PlaybackToMemory::CompressETC1"); 114 "TileTaskWorkerPool::PlaybackToMemory::CompressETC1");
114 DCHECK_EQ(size.width() % 4, 0); 115 DCHECK_EQ(size.width() % 4, 0);
115 DCHECK_EQ(size.height() % 4, 0); 116 DCHECK_EQ(size.height() % 4, 0);
116 scoped_ptr<TextureCompressor> texture_compressor = 117 scoped_ptr<TextureCompressor> texture_compressor =
117 TextureCompressor::Create(TextureCompressor::kFormatETC1); 118 TextureCompressor::Create(TextureCompressor::kFormatETC1);
118 texture_compressor->Compress(reinterpret_cast<const uint8_t*>( 119 texture_compressor->Compress(reinterpret_cast<const uint8_t*>(
119 surface->peekPixels(nullptr, nullptr)), 120 surface->peekPixels(nullptr, nullptr)),
(...skipping 18 matching lines...) Expand all
138 case RED_8: 139 case RED_8:
139 case LUMINANCE_F16: 140 case LUMINANCE_F16:
140 NOTREACHED(); 141 NOTREACHED();
141 return; 142 return;
142 } 143 }
143 144
144 NOTREACHED(); 145 NOTREACHED();
145 } 146 }
146 147
147 } // namespace cc 148 } // namespace cc
OLDNEW
« no previous file with comments | « cc/raster/tile_task_worker_pool.h ('k') | cc/raster/tile_task_worker_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698