Index: src/gpu/GrLayerHoister.h |
diff --git a/src/gpu/GrLayerHoister.h b/src/gpu/GrLayerHoister.h |
index a3b97e328a2183a7ddffe1053d36a5fe4aadc39c..acf1901096d28d9b08074fc8b7e5f915317aaed6 100644 |
--- a/src/gpu/GrLayerHoister.h |
+++ b/src/gpu/GrLayerHoister.h |
@@ -23,37 +23,43 @@ struct SkRect; |
// UnlockLayers should be called once to allow the texture resources to be recycled |
class GrLayerHoister { |
public: |
- /** Find the layers in 'gpuData' that need hoisting. |
- @param gpuData Acceleration structure containing layer information for a picture |
- @param query The rectangle that is about to be drawn. |
- @param atlased Out parameter storing the layers that should be hoisted to the atlas |
- @param nonAtlased Out parameter storing the layers that should be hoisted stand alone |
+ struct HoistedLayer { |
+ const SkPicture* fPicture; |
+ GrCachedLayer* fLayer; |
+ }; |
+ |
+ /** Find the layers in 'topLevelPicture' that need hoisting. Note that the discovered |
+ layers can be inside nested sub-pictures. |
+ @param topLevelPicture The top-level picture that is about to be rendered |
+ @param query The rectangle that is about to be drawn. |
+ @param atlased Out parameter storing the layers that should be hoisted to the atlas |
+ @param nonAtlased Out parameter storing the layers that should be hoisted stand alone |
@param layerCache The source of new layers |
Return true if any layers are suitable for hoisting; false otherwise |
*/ |
- static bool FindLayersToHoist(const GrAccelData *gpuData, |
+ static bool FindLayersToHoist(const SkPicture* topLevelPicture, |
const SkRect& query, |
- SkTDArray<GrCachedLayer*>* altased, |
- SkTDArray<GrCachedLayer*>* nonAtlased, |
+ SkTDArray<HoistedLayer>* altased, |
+ SkTDArray<HoistedLayer>* nonAtlased, |
GrLayerCache* layerCache); |
- /** Draw the specified layers of 'picture' into either the atlas or free |
- floating textures. |
- @param picture The picture containing the layers |
+ /** Draw the specified layers into either the atlas or free floating textures. |
@param atlased The layers to be drawn into the atlas |
@param nonAtlased The layers to be drawn into their own textures |
@oaram replacements The replacement structure to fill in with the rendered layer info |
*/ |
- static void DrawLayers(const SkPicture* picture, |
- const SkTDArray<GrCachedLayer*>& atlased, |
- const SkTDArray<GrCachedLayer*>& nonAtlased, |
+ static void DrawLayers(const SkTDArray<HoistedLayer>& atlased, |
+ const SkTDArray<HoistedLayer>& nonAtlased, |
GrReplacements* replacements); |
- /** Unlock all the layers associated with picture in the layer cache. |
+ /** Unlock unneeded layers in the layer cache. |
@param layerCache holder of the locked layers |
- @pmara picture the source of the locked layers |
+ @param atlased Unneeded layers in the atlas |
+ @param nonAtlased Unneeded layers in their own textures |
*/ |
- static void UnlockLayers(GrLayerCache* layerCache, const SkPicture* picture); |
+ static void UnlockLayers(GrLayerCache* layerCache, |
+ const SkTDArray<HoistedLayer>& atlased, |
+ const SkTDArray<HoistedLayer>& nonAtlased); |
}; |
#endif |