OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef GrBatchAtlas_DEFINED | 8 #ifndef GrBatchAtlas_DEFINED |
9 #define GrBatchAtlas_DEFINED | 9 #define GrBatchAtlas_DEFINED |
10 | 10 |
11 #include "GrTexture.h" | 11 #include "GrTexture.h" |
12 #include "batches/GrDrawBatch.h" | 12 #include "batches/GrDrawBatch.h" |
13 #include "SkPoint.h" | 13 #include "SkPoint.h" |
14 #include "SkTDArray.h" | 14 #include "SkTDArray.h" |
15 #include "SkTInternalLList.h" | 15 #include "SkTInternalLList.h" |
16 | 16 |
17 class BatchPlot; | 17 class BatchPlot; |
18 class GrRectanizer; | 18 class GrRectanizer; |
19 | 19 |
20 typedef SkTInternalLList<BatchPlot> GrBatchPlotList; | |
21 | |
22 struct GrBatchAtlasConfig { | 20 struct GrBatchAtlasConfig { |
23 int numPlotsX() const { return fWidth / fPlotWidth; } | 21 int numPlotsX() const { return fWidth / fPlotWidth; } |
24 int numPlotsY() const { return fHeight / fPlotWidth; } | 22 int numPlotsY() const { return fHeight / fPlotWidth; } |
25 int fWidth; | 23 int fWidth; |
26 int fHeight; | 24 int fHeight; |
27 int fPlotWidth; | 25 int fPlotWidth; |
28 int fPlotHeight; | 26 int fPlotHeight; |
29 }; | 27 }; |
30 | 28 |
31 class GrBatchAtlas { | 29 class GrBatchAtlas { |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 }; | 111 }; |
114 | 112 |
115 void setLastUseTokenBulk(const BulkUseTokenUpdater& reffer, GrBatchToken); | 113 void setLastUseTokenBulk(const BulkUseTokenUpdater& reffer, GrBatchToken); |
116 | 114 |
117 static const int kGlyphMaxDim = 256; | 115 static const int kGlyphMaxDim = 256; |
118 static bool GlyphTooLargeForAtlas(int width, int height) { | 116 static bool GlyphTooLargeForAtlas(int width, int height) { |
119 return width > kGlyphMaxDim || height > kGlyphMaxDim; | 117 return width > kGlyphMaxDim || height > kGlyphMaxDim; |
120 } | 118 } |
121 | 119 |
122 private: | 120 private: |
| 121 typedef SkTInternalLList<BatchPlot> GrBatchPlotList; |
| 122 |
123 static uint32_t GetIndexFromID(AtlasID id) { | 123 static uint32_t GetIndexFromID(AtlasID id) { |
124 return id & 0xffff; | 124 return id & 0xffff; |
125 } | 125 } |
126 | 126 |
127 // top 48 bits are reserved for the generation ID | 127 // top 48 bits are reserved for the generation ID |
128 static uint64_t GetGenerationFromID(AtlasID id) { | 128 static uint64_t GetGenerationFromID(AtlasID id) { |
129 return (id >> 16) & 0xffffffffffff; | 129 return (id >> 16) & 0xffffffffffff; |
130 } | 130 } |
131 | 131 |
132 inline void updatePlot(GrDrawBatch::Target*, AtlasID*, BatchPlot*); | 132 inline void updatePlot(GrDrawBatch::Target*, AtlasID*, BatchPlot*); |
133 | 133 |
134 inline void makeMRU(BatchPlot* plot); | 134 inline void makeMRU(BatchPlot* plot); |
135 | 135 |
136 inline void processEviction(AtlasID); | 136 inline void processEviction(AtlasID); |
137 | 137 |
138 GrTexture* fTexture; | 138 GrTexture* fTexture; |
139 uint32_t fNumPlotsX; | 139 SkDEBUGCODE(uint32_t fNumPlots;) |
140 uint32_t fNumPlotsY; | 140 |
141 uint32_t fPlotWidth; | |
142 uint32_t fPlotHeight; | |
143 size_t fBPP; | |
144 uint64_t fAtlasGeneration; | 141 uint64_t fAtlasGeneration; |
145 | 142 |
146 struct EvictionData { | 143 struct EvictionData { |
147 EvictionFunc fFunc; | 144 EvictionFunc fFunc; |
148 void* fData; | 145 void* fData; |
149 }; | 146 }; |
150 | 147 |
151 SkTDArray<EvictionData> fEvictionCallbacks; | 148 SkTDArray<EvictionData> fEvictionCallbacks; |
152 // allocated array of GrBatchPlots | 149 // allocated array of GrBatchPlots |
153 SkAutoTUnref<BatchPlot>* fPlotArray; | 150 SkAutoTUnref<BatchPlot>* fPlotArray; |
154 // LRU list of GrPlots (MRU at head - LRU at tail) | 151 // LRU list of GrPlots (MRU at head - LRU at tail) |
155 GrBatchPlotList fPlotList; | 152 GrBatchPlotList fPlotList; |
156 }; | 153 }; |
157 | 154 |
158 #endif | 155 #endif |
OLD | NEW |