OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 GrOptDrawState_DEFINED | 8 #ifndef GrOptDrawState_DEFINED |
9 #define GrOptDrawState_DEFINED | 9 #define GrOptDrawState_DEFINED |
10 | 10 |
(...skipping 10 matching lines...) Expand all Loading... |
21 class GrDrawState; | 21 class GrDrawState; |
22 | 22 |
23 /** | 23 /** |
24 * Class that holds an optimized version of a GrDrawState. It is meant to be an
immutable class, | 24 * Class that holds an optimized version of a GrDrawState. It is meant to be an
immutable class, |
25 * and contains all data needed to set the state for a gpu draw. | 25 * and contains all data needed to set the state for a gpu draw. |
26 */ | 26 */ |
27 class GrOptDrawState : public SkRefCnt { | 27 class GrOptDrawState : public SkRefCnt { |
28 public: | 28 public: |
29 SK_DECLARE_INST_COUNT(GrOptDrawState) | 29 SK_DECLARE_INST_COUNT(GrOptDrawState) |
30 | 30 |
| 31 typedef GrClipMaskManager::ScissorState ScissorState; |
| 32 |
31 /** | 33 /** |
32 * Returns a snapshot of the current optimized state. The GrOptDrawState is
reffed and ownership | 34 * Returns a snapshot of the current optimized state. The GrOptDrawState is
reffed and ownership |
33 * is given to the caller. | 35 * is given to the caller. |
34 */ | 36 */ |
35 static GrOptDrawState* Create(const GrDrawState& drawState, | 37 static GrOptDrawState* Create(const GrDrawState& drawState, |
36 GrGpu*, | 38 GrGpu*, |
| 39 const ScissorState&, |
37 const GrDeviceCoordTexture* dstCopy, | 40 const GrDeviceCoordTexture* dstCopy, |
38 GrGpu::DrawType drawType); | 41 GrGpu::DrawType drawType); |
39 | 42 |
40 bool operator== (const GrOptDrawState& that) const; | 43 bool operator== (const GrOptDrawState& that) const; |
41 bool operator!= (const GrOptDrawState& that) const { return !(*this == that)
; } | 44 bool operator!= (const GrOptDrawState& that) const { return !(*this == that)
; } |
42 | 45 |
43 /////////////////////////////////////////////////////////////////////////// | 46 /////////////////////////////////////////////////////////////////////////// |
44 /// @name Vertex Attributes | 47 /// @name Vertex Attributes |
45 //// | 48 //// |
46 | 49 |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 | 160 |
158 /////////////////////////////////////////////////////////////////////////// | 161 /////////////////////////////////////////////////////////////////////////// |
159 /// @name Stencil | 162 /// @name Stencil |
160 //// | 163 //// |
161 | 164 |
162 const GrStencilSettings& getStencil() const { return fStencilSettings; } | 165 const GrStencilSettings& getStencil() const { return fStencilSettings; } |
163 | 166 |
164 /// @} | 167 /// @} |
165 | 168 |
166 /////////////////////////////////////////////////////////////////////////// | 169 /////////////////////////////////////////////////////////////////////////// |
| 170 /// @name ScissorState |
| 171 //// |
| 172 |
| 173 const ScissorState& getScissorState() const { return fScissorState; } |
| 174 |
| 175 /// @} |
| 176 |
| 177 |
| 178 /////////////////////////////////////////////////////////////////////////// |
167 /// @name State Flags | 179 /// @name State Flags |
168 //// | 180 //// |
169 | 181 |
170 bool isDitherState() const { return 0 != (fFlagBits & kDither_StateBit); } | 182 bool isDitherState() const { return 0 != (fFlagBits & kDither_StateBit); } |
171 bool isHWAntialiasState() const { return 0 != (fFlagBits & kHWAntialias_Stat
eBit); } | 183 bool isHWAntialiasState() const { return 0 != (fFlagBits & kHWAntialias_Stat
eBit); } |
172 bool isColorWriteDisabled() const { return 0 != (fFlagBits & kNoColorWrites_
StateBit); } | 184 bool isColorWriteDisabled() const { return 0 != (fFlagBits & kNoColorWrites_
StateBit); } |
173 bool isCoverageDrawing() const { return 0 != (fFlagBits & kCoverageDrawing_S
tateBit); } | 185 bool isCoverageDrawing() const { return 0 != (fFlagBits & kCoverageDrawing_S
tateBit); } |
174 | 186 |
175 /// @} | 187 /// @} |
176 | 188 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 */ | 273 */ |
262 kEmitTransBlack_BlendOptFlag = 0x8, | 274 kEmitTransBlack_BlendOptFlag = 0x8, |
263 }; | 275 }; |
264 GR_DECL_BITFIELD_OPS_FRIENDS(BlendOptFlags); | 276 GR_DECL_BITFIELD_OPS_FRIENDS(BlendOptFlags); |
265 | 277 |
266 /** | 278 /** |
267 * Constructs and optimized drawState out of a GrRODrawState. | 279 * Constructs and optimized drawState out of a GrRODrawState. |
268 */ | 280 */ |
269 GrOptDrawState(const GrDrawState& drawState, BlendOptFlags blendOptFlags, | 281 GrOptDrawState(const GrDrawState& drawState, BlendOptFlags blendOptFlags, |
270 GrBlendCoeff optSrcCoeff, GrBlendCoeff optDstCoeff, | 282 GrBlendCoeff optSrcCoeff, GrBlendCoeff optDstCoeff, |
271 GrGpu*, const GrDeviceCoordTexture* dstCopy, GrGpu::DrawType)
; | 283 GrGpu*, const ScissorState&, const GrDeviceCoordTexture* dstC
opy, |
| 284 GrGpu::DrawType); |
272 | 285 |
273 /** | 286 /** |
274 * Loops through all the color stage effects to check if the stage will igno
re color input or | 287 * Loops through all the color stage effects to check if the stage will igno
re color input or |
275 * always output a constant color. In the ignore color input case we can ign
ore all previous | 288 * always output a constant color. In the ignore color input case we can ign
ore all previous |
276 * stages. In the constant color case, we can ignore all previous stages and | 289 * stages. In the constant color case, we can ignore all previous stages and |
277 * the current one and set the state color to the constant color. | 290 * the current one and set the state color to the constant color. |
278 */ | 291 */ |
279 void computeEffectiveColorStages(const GrDrawState& ds, GrProgramDesc::DescI
nfo*, | 292 void computeEffectiveColorStages(const GrDrawState& ds, GrProgramDesc::DescI
nfo*, |
280 int* firstColorStageIdx, uint8_t* fixFuncti
onVAToRemove); | 293 int* firstColorStageIdx, uint8_t* fixFuncti
onVAToRemove); |
281 | 294 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 * the function may adjust the blend coefficients. After this function is ca
lled the src and dst | 327 * the function may adjust the blend coefficients. After this function is ca
lled the src and dst |
315 * blend coeffs will represent those used by backend API. | 328 * blend coeffs will represent those used by backend API. |
316 */ | 329 */ |
317 void setOutputStateInfo(const GrDrawState& ds, const GrDrawTargetCaps&, | 330 void setOutputStateInfo(const GrDrawState& ds, const GrDrawTargetCaps&, |
318 GrProgramDesc::DescInfo*); | 331 GrProgramDesc::DescInfo*); |
319 | 332 |
320 typedef GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> RenderTarget; | 333 typedef GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> RenderTarget; |
321 typedef SkSTArray<8, GrPendingFragmentStage> FragmentStageArray; | 334 typedef SkSTArray<8, GrPendingFragmentStage> FragmentStageArray; |
322 typedef GrPendingProgramElement<const GrGeometryProcessor> ProgramGeometryPr
ocessor; | 335 typedef GrPendingProgramElement<const GrGeometryProcessor> ProgramGeometryPr
ocessor; |
323 RenderTarget fRenderTarget; | 336 RenderTarget fRenderTarget; |
| 337 ScissorState fScissorState; |
324 GrColor fColor; | 338 GrColor fColor; |
325 SkMatrix fViewMatrix; | 339 SkMatrix fViewMatrix; |
326 GrColor fBlendConstant; | 340 GrColor fBlendConstant; |
327 uint32_t fFlagBits; | 341 uint32_t fFlagBits; |
328 const GrVertexAttrib* fVAPtr; | 342 const GrVertexAttrib* fVAPtr; |
329 int fVACount; | 343 int fVACount; |
330 size_t fVAStride; | 344 size_t fVAStride; |
331 GrStencilSettings fStencilSettings; | 345 GrStencilSettings fStencilSettings; |
332 uint8_t fCoverage; | 346 uint8_t fCoverage; |
333 DrawFace fDrawFace; | 347 DrawFace fDrawFace; |
(...skipping 12 matching lines...) Expand all Loading... |
346 | 360 |
347 GrProgramDesc fDesc; | 361 GrProgramDesc fDesc; |
348 | 362 |
349 typedef SkRefCnt INHERITED; | 363 typedef SkRefCnt INHERITED; |
350 }; | 364 }; |
351 | 365 |
352 GR_MAKE_BITFIELD_OPS(GrOptDrawState::BlendOptFlags); | 366 GR_MAKE_BITFIELD_OPS(GrOptDrawState::BlendOptFlags); |
353 | 367 |
354 #endif | 368 #endif |
355 | 369 |
OLD | NEW |