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

Unified Diff: src/gpu/GrLayerAtlas.h

Issue 1950523002: Remove GrLayerHoister (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Forgot to remove some files Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrLayerAtlas.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrLayerAtlas.h
diff --git a/src/gpu/GrLayerAtlas.h b/src/gpu/GrLayerAtlas.h
deleted file mode 100644
index cf182626a85c9d55d5ef7d146cf9b8a755817d50..0000000000000000000000000000000000000000
--- a/src/gpu/GrLayerAtlas.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef GrLayerAtlas_DEFINED
-#define GrLayerAtlas_DEFINED
-
-#include "GrTexture.h"
-
-#include "SkPoint.h"
-#include "SkTDArray.h"
-#include "SkTInternalLList.h"
-
-class GrLayerAtlas;
-class GrTextureProvider;
-class GrRectanizer;
-
-// The backing GrTexture for a GrLayerAtlas is broken into a spatial grid of Plots. When
-// the atlas needs space on the texture (i.e., in response to an addToAtlas call), it
-// iterates through the plots in use by the requesting client looking for space and,
-// if no space is found, opens up a new Plot for that client. The Plots keep track of
-// subimage placement via their GrRectanizer.
-//
-// If all Plots are full, the replacement strategy is up to the client. The Plot::reset
-// call will remove a Plot's knowledge of any allocated rects - freeing its space for reuse.
-
-class GrLayerAtlas {
-public:
- class Plot {
- SK_DECLARE_INTERNAL_LLIST_INTERFACE(Plot); // In an MRU llist
-
- public:
- // This returns a plot ID unique to each plot in the atlas. They are
- // consecutive and start at 0.
- int id() const { return fID; }
-
- void reset();
-
- private:
- friend class GrLayerAtlas;
-
- Plot();
- ~Plot(); // does not try to delete the fNext field
-
- void init(int id, int offX, int offY, int width, int height);
-
- bool allocateRect(int width, int height, SkIPoint16*);
-
- int fID;
- GrRectanizer* fRects;
- SkIPoint16 fOffset; // the offset of the plot in the backing texture
- };
-
- // This class allows each client to independently track the Plots in
- // which its data is stored.
- // For example, multiple pictures may simultaneously store their layers in the
- // layer atlas. When a picture goes away it can use the ClientPlotUsage to remove itself
- // from those plots.
- class ClientPlotUsage {
- public:
- ClientPlotUsage(int maxPlots)
- SkDEBUGCODE(: fMaxPlots(maxPlots)) {
- fPlots.setReserve(maxPlots);
- }
-
- bool isEmpty() const { return 0 == fPlots.count(); }
-
- int numPlots() const { return fPlots.count(); }
- Plot* plot(int index) { return fPlots[index]; }
-
- void appendPlot(Plot* plot) {
- SkASSERT(fPlots.count() <= fMaxPlots);
- SkASSERT(!fPlots.contains(plot));
- *fPlots.append() = plot;
- }
-
- // remove reference to 'plot'
- void removePlot(const Plot* plot) {
- int index = fPlots.find(const_cast<Plot*>(plot));
- if (index >= 0) {
- fPlots.remove(index);
- }
- }
-
-#ifdef SK_DEBUG
- bool contains(const Plot* plot) const {
- return fPlots.contains(const_cast<Plot*>(plot));
- }
-#endif
-
- private:
- SkTDArray<Plot*> fPlots;
- SkDEBUGCODE(int fMaxPlots;)
- };
-
- GrLayerAtlas(GrTextureProvider*, GrPixelConfig, GrSurfaceFlags flags,
- const SkISize& backingTextureSize,
- int numPlotsX, int numPlotsY);
- ~GrLayerAtlas();
-
- // Requests a width x height block in the atlas. Upon success it returns
- // the containing Plot and absolute location in the backing texture.
- // nullptr is returned if there is no more space in the atlas.
- Plot* addToAtlas(ClientPlotUsage*, int width, int height, SkIPoint16* loc);
-
- GrTexture* getTextureOrNull() const {
- return fTexture;
- }
-
- GrTexture* getTexture() const {
- SkASSERT(fTexture);
- return fTexture;
- }
-
- bool reattachBackingTexture();
-
- void detachBackingTexture() {
- fTexture.reset(nullptr);
- }
-
- void resetPlots();
-
- enum IterOrder {
- kLRUFirst_IterOrder,
- kMRUFirst_IterOrder
- };
-
- typedef SkTInternalLList<Plot> PlotList;
- typedef PlotList::Iter PlotIter;
- Plot* iterInit(PlotIter* iter, IterOrder order) {
- return iter->init(fPlotList, kLRUFirst_IterOrder == order
- ? PlotList::Iter::kTail_IterStart
- : PlotList::Iter::kHead_IterStart);
- }
-
-private:
- void createBackingTexture();
-
- void makeMRU(Plot* plot);
-
- GrTextureProvider* fTexProvider;
- GrPixelConfig fPixelConfig;
- GrSurfaceFlags fFlags;
- SkAutoTUnref<GrTexture> fTexture;
-
- SkISize fBackingTextureSize;
-
- // allocated array of Plots
- Plot* fPlotArray;
- // LRU list of Plots (MRU at head - LRU at tail)
- PlotList fPlotList;
-};
-
-#endif
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrLayerAtlas.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698