OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 #include "GrClipMaskManager.h" | 9 #include "GrClipMaskManager.h" |
10 #include "GrAAConvexPathRenderer.h" | 10 #include "GrAAConvexPathRenderer.h" |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 return !failed; | 207 return !failed; |
208 } | 208 } |
209 | 209 |
210 //////////////////////////////////////////////////////////////////////////////// | 210 //////////////////////////////////////////////////////////////////////////////// |
211 // sort out what kind of clip mask needs to be created: alpha, stencil, | 211 // sort out what kind of clip mask needs to be created: alpha, stencil, |
212 // scissor, or entirely software | 212 // scissor, or entirely software |
213 bool GrClipMaskManager::setupClipping(const GrClipData* clipDataIn, | 213 bool GrClipMaskManager::setupClipping(const GrClipData* clipDataIn, |
214 const SkRect* devBounds, | 214 const SkRect* devBounds, |
215 GrDrawState::AutoRestoreEffects* are, | 215 GrDrawState::AutoRestoreEffects* are, |
216 GrDrawState::AutoRestoreStencil* ars, | 216 GrDrawState::AutoRestoreStencil* ars, |
217 GrDrawTarget::ScissorState* scissorState)
{ | 217 ScissorState* scissorState) { |
218 fCurrClipMaskType = kNone_ClipMaskType; | 218 fCurrClipMaskType = kNone_ClipMaskType; |
219 | 219 |
220 GrReducedClip::ElementList elements(16); | 220 GrReducedClip::ElementList elements(16); |
221 int32_t genID; | 221 int32_t genID; |
222 GrReducedClip::InitialState initialState; | 222 GrReducedClip::InitialState initialState; |
223 SkIRect clipSpaceIBounds; | 223 SkIRect clipSpaceIBounds; |
224 bool requiresAA; | 224 bool requiresAA; |
225 | 225 |
226 GrDrawState* drawState = fGpu->drawState(); | 226 GrDrawState* drawState = fGpu->drawState(); |
227 | 227 |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
724 drawState->enableState(GrDrawState::kClip_StateBit); | 724 drawState->enableState(GrDrawState::kClip_StateBit); |
725 | 725 |
726 #if !VISUALIZE_COMPLEX_CLIP | 726 #if !VISUALIZE_COMPLEX_CLIP |
727 drawState->enableState(GrDrawState::kNoColorWrites_StateBit); | 727 drawState->enableState(GrDrawState::kNoColorWrites_StateBit); |
728 #endif | 728 #endif |
729 | 729 |
730 int clipBit = stencilBuffer->bits(); | 730 int clipBit = stencilBuffer->bits(); |
731 SkASSERT((clipBit <= 16) && "Ganesh only handles 16b or smaller stencil
buffers"); | 731 SkASSERT((clipBit <= 16) && "Ganesh only handles 16b or smaller stencil
buffers"); |
732 clipBit = (1 << (clipBit-1)); | 732 clipBit = (1 << (clipBit-1)); |
733 | 733 |
734 fGpu->clearStencilClip(rt, stencilSpaceIBounds, | 734 fGpu->clearStencilClip(stencilSpaceIBounds, |
735 GrReducedClip::kAllIn_InitialState == initialStat
e); | 735 GrReducedClip::kAllIn_InitialState == initialStat
e, |
| 736 rt); |
736 | 737 |
737 // walk through each clip element and perform its set op | 738 // walk through each clip element and perform its set op |
738 // with the existing clip. | 739 // with the existing clip. |
739 for (GrReducedClip::ElementList::Iter iter(elements.headIter()); iter.ge
t(); iter.next()) { | 740 for (GrReducedClip::ElementList::Iter iter(elements.headIter()); iter.ge
t(); iter.next()) { |
740 const Element* element = iter.get(); | 741 const Element* element = iter.get(); |
741 bool fillInverted = false; | 742 bool fillInverted = false; |
742 // enabled at bottom of loop | 743 // enabled at bottom of loop |
743 drawState->disableState(GrGpu::kModifyStencilClip_StateBit); | 744 drawState->disableState(GrGpu::kModifyStencilClip_StateBit); |
744 // if the target is MSAA then we want MSAA enabled when the clip is
soft | 745 // if the target is MSAA then we want MSAA enabled when the clip is
soft |
745 if (rt->isMultisampled()) { | 746 if (rt->isMultisampled()) { |
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1130 | 1131 |
1131 // TODO: dynamically attach a stencil buffer | 1132 // TODO: dynamically attach a stencil buffer |
1132 int stencilBits = 0; | 1133 int stencilBits = 0; |
1133 GrStencilBuffer* stencilBuffer = | 1134 GrStencilBuffer* stencilBuffer = |
1134 drawState.getRenderTarget()->getStencilBuffer(); | 1135 drawState.getRenderTarget()->getStencilBuffer(); |
1135 if (stencilBuffer) { | 1136 if (stencilBuffer) { |
1136 stencilBits = stencilBuffer->bits(); | 1137 stencilBits = stencilBuffer->bits(); |
1137 this->adjustStencilParams(settings, clipMode, stencilBits); | 1138 this->adjustStencilParams(settings, clipMode, stencilBits); |
1138 } | 1139 } |
1139 } | 1140 } |
OLD | NEW |