| 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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 void setBounds(const SkRect& newBounds) { fBounds = newBounds; } | 107 void setBounds(const SkRect& newBounds) { fBounds = newBounds; } |
| 108 | 108 |
| 109 void joinBounds(const SkRect& otherBounds) { | 109 void joinBounds(const SkRect& otherBounds) { |
| 110 return fBounds.joinPossiblyEmptyRect(otherBounds); | 110 return fBounds.joinPossiblyEmptyRect(otherBounds); |
| 111 } | 111 } |
| 112 | 112 |
| 113 /** Helper for rendering instances using an instanced index index buffer. Th
is class creates the | 113 /** Helper for rendering instances using an instanced index index buffer. Th
is class creates the |
| 114 space for the vertices and flushes the draws to the batch target.*/ | 114 space for the vertices and flushes the draws to the batch target.*/ |
| 115 class InstancedHelper { | 115 class InstancedHelper { |
| 116 public: | 116 public: |
| 117 InstancedHelper() : fInstancesRemaining(0) {} | 117 InstancedHelper() {} |
| 118 /** Returns the allocated storage for the vertices. The caller should po
pulate the before | 118 /** Returns the allocated storage for the vertices. The caller should po
pulate the before |
| 119 vertices before calling issueDraws(). */ | 119 vertices before calling issueDraws(). */ |
| 120 void* init(GrBatchTarget* batchTarget, GrPrimitiveType, size_t vertexStr
ide, | 120 void* init(GrBatchTarget* batchTarget, GrPrimitiveType, size_t vertexStr
ide, |
| 121 const GrIndexBuffer*, int verticesPerInstance, int indicesPer
Instance, | 121 const GrIndexBuffer*, int verticesPerInstance, int indicesPer
Instance, |
| 122 int instancesToDraw); | 122 int instancesToDraw); |
| 123 | 123 |
| 124 /** Call after init() to issue draws to the batch target.*/ | 124 /** Call after init() to issue draws to the batch target.*/ |
| 125 void issueDraws(GrBatchTarget* batchTarget) { | 125 void issueDraw(GrBatchTarget* batchTarget) { |
| 126 SkASSERT(fVertices.instanceCount()); | 126 SkASSERT(fVertices.instanceCount()); |
| 127 do { | 127 batchTarget->draw(fVertices); |
| 128 batchTarget->draw(fVertices); | |
| 129 } while (fVertices.nextInstances(&fInstancesRemaining, fMaxInstances
PerDraw)); | |
| 130 } | 128 } |
| 131 private: | 129 private: |
| 132 int fInstancesRemaining; | |
| 133 int fMaxInstancesPerDraw; | |
| 134 GrVertices fVertices; | 130 GrVertices fVertices; |
| 135 }; | 131 }; |
| 136 | 132 |
| 137 static const int kVerticesPerQuad = 4; | 133 static const int kVerticesPerQuad = 4; |
| 138 static const int kIndicesPerQuad = 6; | 134 static const int kIndicesPerQuad = 6; |
| 139 | 135 |
| 140 /** A specialization of InstanceHelper for quad rendering. */ | 136 /** A specialization of InstanceHelper for quad rendering. */ |
| 141 class QuadHelper : private InstancedHelper { | 137 class QuadHelper : private InstancedHelper { |
| 142 public: | 138 public: |
| 143 QuadHelper() : INHERITED() {} | 139 QuadHelper() : INHERITED() {} |
| 144 /** Finds the cached quad index buffer and reserves vertex space. Return
s NULL on failure | 140 /** Finds the cached quad index buffer and reserves vertex space. Return
s NULL on failure |
| 145 and on sucess a pointer to the vertex data that the caller should po
pulate before | 141 and on sucess a pointer to the vertex data that the caller should po
pulate before |
| 146 calling issueDraws(). */ | 142 calling issueDraws(). */ |
| 147 void* init(GrBatchTarget* batchTarget, size_t vertexStride, int quadsToD
raw); | 143 void* init(GrBatchTarget* batchTarget, size_t vertexStride, int quadsToD
raw); |
| 148 | 144 |
| 149 using InstancedHelper::issueDraws; | 145 using InstancedHelper::issueDraw; |
| 150 | 146 |
| 151 private: | 147 private: |
| 152 typedef InstancedHelper INHERITED; | 148 typedef InstancedHelper INHERITED; |
| 153 }; | 149 }; |
| 154 | 150 |
| 155 SkRect fBounds; | 151 SkRect fBounds; |
| 156 | 152 |
| 157 private: | 153 private: |
| 158 static uint32_t GenClassID() { | 154 static uint32_t GenClassID() { |
| 159 // fCurrProcessorClassID has been initialized to kIllegalProcessorClassI
D. The | 155 // fCurrProcessorClassID has been initialized to kIllegalProcessorClassI
D. The |
| (...skipping 13 matching lines...) Expand all Loading... |
| 173 static int32_t gCurrBatchClassID; | 169 static int32_t gCurrBatchClassID; |
| 174 | 170 |
| 175 SkDEBUGCODE(bool fUsed;) | 171 SkDEBUGCODE(bool fUsed;) |
| 176 | 172 |
| 177 int fNumberOfDraws; | 173 int fNumberOfDraws; |
| 178 | 174 |
| 179 typedef SkRefCnt INHERITED; | 175 typedef SkRefCnt INHERITED; |
| 180 }; | 176 }; |
| 181 | 177 |
| 182 #endif | 178 #endif |
| OLD | NEW |