| 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 GrBatch_DEFINED | 8 #ifndef GrBatch_DEFINED |
| 9 #define GrBatch_DEFINED | 9 #define GrBatch_DEFINED |
| 10 | 10 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 #if GR_BATCH_SPEW | 40 #if GR_BATCH_SPEW |
| 41 #define GrBATCH_INFO(...) SkDebugf(__VA_ARGS__) | 41 #define GrBATCH_INFO(...) SkDebugf(__VA_ARGS__) |
| 42 #define GrBATCH_SPEW(code) code | 42 #define GrBATCH_SPEW(code) code |
| 43 #else | 43 #else |
| 44 #define GrBATCH_SPEW(code) | 44 #define GrBATCH_SPEW(code) |
| 45 #define GrBATCH_INFO(...) | 45 #define GrBATCH_INFO(...) |
| 46 #endif | 46 #endif |
| 47 | 47 |
| 48 class GrBatch : public GrNonAtomicRef { | 48 class GrBatch : public GrNonAtomicRef { |
| 49 public: | 49 public: |
| 50 GrBatch() | 50 GrBatch(); |
| 51 : fClassID(kIllegalBatchID) | 51 ~GrBatch() override; |
| 52 , fNumberOfDraws(0) | |
| 53 #if GR_BATCH_SPEW | |
| 54 , fUniqueID(GenID(&gCurrBatchUniqueID)) | |
| 55 #endif | |
| 56 { SkDEBUGCODE(fUsed = false;) } | |
| 57 virtual ~GrBatch() {} | |
| 58 | 52 |
| 59 virtual const char* name() const = 0; | 53 virtual const char* name() const = 0; |
| 60 virtual void getInvariantOutputColor(GrInitInvariantOutput* out) const = 0; | 54 virtual void getInvariantOutputColor(GrInitInvariantOutput* out) const = 0; |
| 61 virtual void getInvariantOutputCoverage(GrInitInvariantOutput* out) const =
0; | 55 virtual void getInvariantOutputCoverage(GrInitInvariantOutput* out) const =
0; |
| 62 | 56 |
| 63 bool combineIfPossible(GrBatch* that) { | 57 bool combineIfPossible(GrBatch* that) { |
| 64 if (this->classID() != that->classID()) { | 58 if (this->classID() != that->classID()) { |
| 65 return false; | 59 return false; |
| 66 } | 60 } |
| 67 | 61 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 94 template <typename T> const T& cast() const { return *static_cast<const T*>(
this); } | 88 template <typename T> const T& cast() const { return *static_cast<const T*>(
this); } |
| 95 template <typename T> T* cast() { return static_cast<T*>(this); } | 89 template <typename T> T* cast() { return static_cast<T*>(this); } |
| 96 | 90 |
| 97 uint32_t classID() const { SkASSERT(kIllegalBatchID != fClassID); return fCl
assID; } | 91 uint32_t classID() const { SkASSERT(kIllegalBatchID != fClassID); return fCl
assID; } |
| 98 | 92 |
| 99 // TODO no GrPrimitiveProcessors yet read fragment position | 93 // TODO no GrPrimitiveProcessors yet read fragment position |
| 100 bool willReadFragmentPosition() const { return false; } | 94 bool willReadFragmentPosition() const { return false; } |
| 101 | 95 |
| 102 SkDEBUGCODE(bool isUsed() const { return fUsed; }) | 96 SkDEBUGCODE(bool isUsed() const { return fUsed; }) |
| 103 | 97 |
| 104 const GrPipeline* pipeline() const { return fPipeline; } | 98 const GrPipeline* pipeline() const { |
| 99 SkASSERT(fPipelineInstalled); |
| 100 return reinterpret_cast<const GrPipeline*>(fPipelineStorage.get()); |
| 101 } |
| 105 | 102 |
| 106 void setPipeline(const GrPipeline* pipeline, const GrPipelineOptimizations&
optimizations) { | 103 bool installPipeline(const GrPipeline::CreateArgs&); |
| 107 fPipeline.reset(SkRef(pipeline)); | |
| 108 this->initBatchTracker(optimizations); | |
| 109 } | |
| 110 | 104 |
| 111 #if GR_BATCH_SPEW | 105 #if GR_BATCH_SPEW |
| 112 uint32_t uniqueID() const { return fUniqueID; } | 106 uint32_t uniqueID() const { return fUniqueID; } |
| 113 #endif | 107 #endif |
| 114 | 108 |
| 115 protected: | 109 protected: |
| 116 template <typename PROC_SUBCLASS> void initClassID() { | 110 template <typename PROC_SUBCLASS> void initClassID() { |
| 117 static uint32_t kClassID = GenID(&gCurrBatchClassID); | 111 static uint32_t kClassID = GenID(&gCurrBatchClassID); |
| 118 fClassID = kClassID; | 112 fClassID = kClassID; |
| 119 } | 113 } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 if (!id) { | 177 if (!id) { |
| 184 SkFAIL("This should never wrap as it should only be called once for
each GrBatch " | 178 SkFAIL("This should never wrap as it should only be called once for
each GrBatch " |
| 185 "subclass."); | 179 "subclass."); |
| 186 } | 180 } |
| 187 return id; | 181 return id; |
| 188 } | 182 } |
| 189 | 183 |
| 190 enum { | 184 enum { |
| 191 kIllegalBatchID = 0, | 185 kIllegalBatchID = 0, |
| 192 }; | 186 }; |
| 193 SkAutoTUnref<const GrPipeline> fPipeline; | 187 SkAlignedSTStorage<1, GrPipeline> fPipelineStorage; |
| 188 int fNumberOfDraws; |
| 189 SkDEBUGCODE(bool fUsed;) |
| 190 bool fPipelineInstalled; |
| 191 #if GR_BATCH_SPEW |
| 192 uint32_t fUniqueID; |
| 193 static int32_t gCurrBatchUniqueID; |
| 194 #endif |
| 194 static int32_t gCurrBatchClassID; | 195 static int32_t gCurrBatchClassID; |
| 195 int fNumberOfDraws; | |
| 196 SkDEBUGCODE(bool fUsed;) | |
| 197 #if GR_BATCH_SPEW | |
| 198 static int32_t gCurrBatchUniqueID; | |
| 199 uint32_t fUniqueID; | |
| 200 #endif | |
| 201 | |
| 202 typedef SkRefCnt INHERITED; | 196 typedef SkRefCnt INHERITED; |
| 203 }; | 197 }; |
| 204 | 198 |
| 205 #endif | 199 #endif |
| OLD | NEW |