| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef CC_PLAYBACK_RASTER_SOURCE_H_ | 5 #ifndef CC_PLAYBACK_RASTER_SOURCE_H_ |
| 6 #define CC_PLAYBACK_RASTER_SOURCE_H_ | 6 #define CC_PLAYBACK_RASTER_SOURCE_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "cc/base/cc_export.h" | 14 #include "cc/base/cc_export.h" |
| 15 #include "cc/debug/rendering_stats_instrumentation.h" | 15 #include "cc/debug/rendering_stats_instrumentation.h" |
| 16 #include "cc/playback/recording_source.h" | 16 #include "cc/playback/recording_source.h" |
| 17 #include "skia/ext/analysis_canvas.h" | 17 #include "skia/ext/analysis_canvas.h" |
| 18 #include "third_party/skia/include/core/SkPicture.h" | 18 #include "third_party/skia/include/core/SkPicture.h" |
| 19 | 19 |
| 20 namespace gfx { | 20 namespace gfx { |
| 21 class ColorSpace; | 21 class ColorSpace; |
| 22 } | 22 } |
| 23 | 23 |
| 24 namespace cc { | 24 namespace cc { |
| 25 class DisplayItemList; | 25 class DisplayItemList; |
| 26 class DrawImage; | 26 class DrawImage; |
| 27 class ImageDecodeController; | 27 class ImageDecodeCache; |
| 28 | 28 |
| 29 class CC_EXPORT RasterSource : public base::RefCountedThreadSafe<RasterSource> { | 29 class CC_EXPORT RasterSource : public base::RefCountedThreadSafe<RasterSource> { |
| 30 public: | 30 public: |
| 31 struct CC_EXPORT PlaybackSettings { | 31 struct CC_EXPORT PlaybackSettings { |
| 32 PlaybackSettings(); | 32 PlaybackSettings(); |
| 33 | 33 |
| 34 // If set to true, this indicates that the canvas has already been | 34 // If set to true, this indicates that the canvas has already been |
| 35 // rasterized into. This means that the canvas cannot be cleared safely. | 35 // rasterized into. This means that the canvas cannot be cleared safely. |
| 36 bool playback_to_shared_canvas; | 36 bool playback_to_shared_canvas; |
| 37 | 37 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 virtual sk_sp<SkPicture> GetFlattenedPicture(); | 121 virtual sk_sp<SkPicture> GetFlattenedPicture(); |
| 122 virtual size_t GetPictureMemoryUsage() const; | 122 virtual size_t GetPictureMemoryUsage() const; |
| 123 | 123 |
| 124 // Return true if LCD anti-aliasing may be used when rastering text. | 124 // Return true if LCD anti-aliasing may be used when rastering text. |
| 125 virtual bool CanUseLCDText() const; | 125 virtual bool CanUseLCDText() const; |
| 126 | 126 |
| 127 scoped_refptr<RasterSource> CreateCloneWithoutLCDText() const; | 127 scoped_refptr<RasterSource> CreateCloneWithoutLCDText() const; |
| 128 | 128 |
| 129 // Image decode controller should be set once. Its lifetime has to exceed that | 129 // Image decode controller should be set once. Its lifetime has to exceed that |
| 130 // of the raster source, since the raster source will access it during raster. | 130 // of the raster source, since the raster source will access it during raster. |
| 131 void set_image_decode_controller( | 131 void set_image_decode_cache(ImageDecodeCache* image_decode_cache) { |
| 132 ImageDecodeController* image_decode_controller) { | 132 DCHECK(image_decode_cache); |
| 133 DCHECK(image_decode_controller); | 133 image_decode_cache_ = image_decode_cache; |
| 134 image_decode_controller_ = image_decode_controller; | |
| 135 } | 134 } |
| 136 | 135 |
| 137 // Returns the ImageDecodeController, currently only used by | 136 // Returns the ImageDecodeCache, currently only used by |
| 138 // GpuRasterBufferProvider in order to create its own ImageHijackCanvas. | 137 // GpuRasterBufferProvider in order to create its own ImageHijackCanvas. |
| 139 // Because of the MultiPictureDraw approach used by GPU raster, it does not | 138 // Because of the MultiPictureDraw approach used by GPU raster, it does not |
| 140 // integrate well with the use of the ImageHijackCanvas internal to this | 139 // integrate well with the use of the ImageHijackCanvas internal to this |
| 141 // class. See gpu_raster_buffer_provider.cc for more information. | 140 // class. See gpu_raster_buffer_provider.cc for more information. |
| 142 // TODO(crbug.com/628394): Redesign this to avoid exposing | 141 // TODO(crbug.com/628394): Redesign this to avoid exposing |
| 143 // ImageDecodeController from the raster source. | 142 // ImageDecodeCache from the raster source. |
| 144 ImageDecodeController* image_decode_controller() const { | 143 ImageDecodeCache* image_decode_cache() const { return image_decode_cache_; } |
| 145 return image_decode_controller_; | |
| 146 } | |
| 147 | 144 |
| 148 protected: | 145 protected: |
| 149 friend class base::RefCountedThreadSafe<RasterSource>; | 146 friend class base::RefCountedThreadSafe<RasterSource>; |
| 150 | 147 |
| 151 RasterSource(const RecordingSource* other, bool can_use_lcd_text); | 148 RasterSource(const RecordingSource* other, bool can_use_lcd_text); |
| 152 RasterSource(const RasterSource* other, bool can_use_lcd_text); | 149 RasterSource(const RasterSource* other, bool can_use_lcd_text); |
| 153 virtual ~RasterSource(); | 150 virtual ~RasterSource(); |
| 154 | 151 |
| 155 // These members are const as this raster source may be in use on another | 152 // These members are const as this raster source may be in use on another |
| 156 // thread and so should not be touched after construction. | 153 // thread and so should not be touched after construction. |
| 157 const scoped_refptr<DisplayItemList> display_list_; | 154 const scoped_refptr<DisplayItemList> display_list_; |
| 158 const size_t painter_reported_memory_usage_; | 155 const size_t painter_reported_memory_usage_; |
| 159 const SkColor background_color_; | 156 const SkColor background_color_; |
| 160 const bool requires_clear_; | 157 const bool requires_clear_; |
| 161 const bool can_use_lcd_text_; | 158 const bool can_use_lcd_text_; |
| 162 const bool is_solid_color_; | 159 const bool is_solid_color_; |
| 163 const SkColor solid_color_; | 160 const SkColor solid_color_; |
| 164 const gfx::Rect recorded_viewport_; | 161 const gfx::Rect recorded_viewport_; |
| 165 const gfx::Size size_; | 162 const gfx::Size size_; |
| 166 const bool clear_canvas_with_debug_color_; | 163 const bool clear_canvas_with_debug_color_; |
| 167 const int slow_down_raster_scale_factor_for_debug_; | 164 const int slow_down_raster_scale_factor_for_debug_; |
| 168 // TODO(enne/vmiura): this has a read/write race between raster and compositor | 165 // TODO(enne/vmiura): this has a read/write race between raster and compositor |
| 169 // threads with multi-threaded Ganesh. Make this const or remove it. | 166 // threads with multi-threaded Ganesh. Make this const or remove it. |
| 170 bool should_attempt_to_use_distance_field_text_; | 167 bool should_attempt_to_use_distance_field_text_; |
| 171 | 168 |
| 172 // In practice, this is only set once before raster begins, so it's ok with | 169 // In practice, this is only set once before raster begins, so it's ok with |
| 173 // respect to threading. | 170 // respect to threading. |
| 174 ImageDecodeController* image_decode_controller_; | 171 ImageDecodeCache* image_decode_cache_; |
| 175 | 172 |
| 176 private: | 173 private: |
| 177 void RasterCommon(SkCanvas* canvas, SkPicture::AbortCallback* callback) const; | 174 void RasterCommon(SkCanvas* canvas, SkPicture::AbortCallback* callback) const; |
| 178 | 175 |
| 179 void PrepareForPlaybackToCanvas(SkCanvas* canvas) const; | 176 void PrepareForPlaybackToCanvas(SkCanvas* canvas) const; |
| 180 | 177 |
| 181 DISALLOW_COPY_AND_ASSIGN(RasterSource); | 178 DISALLOW_COPY_AND_ASSIGN(RasterSource); |
| 182 }; | 179 }; |
| 183 | 180 |
| 184 } // namespace cc | 181 } // namespace cc |
| 185 | 182 |
| 186 #endif // CC_PLAYBACK_RASTER_SOURCE_H_ | 183 #endif // CC_PLAYBACK_RASTER_SOURCE_H_ |
| OLD | NEW |