Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/gpu/GrGpu.cpp

Issue 683933003: Clip mask manager moved to ClipTarget (Closed) Base URL: https://skia.googlesource.com/skia.git@clear_stencil_clip_on_drawinfo
Patch Set: rebase on master Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/GrGpu.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2010 Google Inc. 3 * Copyright 2010 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 9
10 #include "GrGpu.h" 10 #include "GrGpu.h"
(...skipping 18 matching lines...) Expand all
29 29
30 GrGpu::GrGpu(GrContext* context) 30 GrGpu::GrGpu(GrContext* context)
31 : INHERITED(context) 31 : INHERITED(context)
32 , fResetTimestamp(kExpiredTimestamp+1) 32 , fResetTimestamp(kExpiredTimestamp+1)
33 , fResetBits(kAll_GrBackendState) 33 , fResetBits(kAll_GrBackendState)
34 , fVertexPool(NULL) 34 , fVertexPool(NULL)
35 , fIndexPool(NULL) 35 , fIndexPool(NULL)
36 , fVertexPoolUseCnt(0) 36 , fVertexPoolUseCnt(0)
37 , fIndexPoolUseCnt(0) 37 , fIndexPoolUseCnt(0)
38 , fQuadIndexBuffer(NULL) { 38 , fQuadIndexBuffer(NULL) {
39
40 fClipMaskManager.setGpu(this);
41
42 fGeomPoolStateStack.push_back(); 39 fGeomPoolStateStack.push_back();
43 #ifdef SK_DEBUG 40 #ifdef SK_DEBUG
44 GeometryPoolState& poolState = fGeomPoolStateStack.back(); 41 GeometryPoolState& poolState = fGeomPoolStateStack.back();
45 poolState.fPoolVertexBuffer = (GrVertexBuffer*)DEBUG_INVAL_BUFFER; 42 poolState.fPoolVertexBuffer = (GrVertexBuffer*)DEBUG_INVAL_BUFFER;
46 poolState.fPoolStartVertex = DEBUG_INVAL_START_IDX; 43 poolState.fPoolStartVertex = DEBUG_INVAL_START_IDX;
47 poolState.fPoolIndexBuffer = (GrIndexBuffer*)DEBUG_INVAL_BUFFER; 44 poolState.fPoolIndexBuffer = (GrIndexBuffer*)DEBUG_INVAL_BUFFER;
48 poolState.fPoolStartIndex = DEBUG_INVAL_START_IDX; 45 poolState.fPoolStartIndex = DEBUG_INVAL_START_IDX;
49 #endif 46 #endif
50 } 47 }
51 48
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 return this->onWriteTexturePixels(texture, left, top, width, height, 240 return this->onWriteTexturePixels(texture, left, top, width, height,
244 config, buffer, rowBytes); 241 config, buffer, rowBytes);
245 } 242 }
246 243
247 void GrGpu::resolveRenderTarget(GrRenderTarget* target) { 244 void GrGpu::resolveRenderTarget(GrRenderTarget* target) {
248 SkASSERT(target); 245 SkASSERT(target);
249 this->handleDirtyContext(); 246 this->handleDirtyContext();
250 this->onResolveRenderTarget(target); 247 this->onResolveRenderTarget(target);
251 } 248 }
252 249
253 static const GrStencilSettings& winding_path_stencil_settings() {
254 GR_STATIC_CONST_SAME_STENCIL_STRUCT(gSettings,
255 kIncClamp_StencilOp,
256 kIncClamp_StencilOp,
257 kAlwaysIfInClip_StencilFunc,
258 0xFFFF, 0xFFFF, 0xFFFF);
259 return *GR_CONST_STENCIL_SETTINGS_PTR_FROM_STRUCT_PTR(&gSettings);
260 }
261
262 static const GrStencilSettings& even_odd_path_stencil_settings() {
263 GR_STATIC_CONST_SAME_STENCIL_STRUCT(gSettings,
264 kInvert_StencilOp,
265 kInvert_StencilOp,
266 kAlwaysIfInClip_StencilFunc,
267 0xFFFF, 0xFFFF, 0xFFFF);
268 return *GR_CONST_STENCIL_SETTINGS_PTR_FROM_STRUCT_PTR(&gSettings);
269 }
270
271 void GrGpu::getPathStencilSettingsForFillType(SkPath::FillType fill, GrStencilSe ttings* outStencilSettings) {
272
273 switch (fill) {
274 default:
275 SkFAIL("Unexpected path fill.");
276 /* fallthrough */;
277 case SkPath::kWinding_FillType:
278 case SkPath::kInverseWinding_FillType:
279 *outStencilSettings = winding_path_stencil_settings();
280 break;
281 case SkPath::kEvenOdd_FillType:
282 case SkPath::kInverseEvenOdd_FillType:
283 *outStencilSettings = even_odd_path_stencil_settings();
284 break;
285 }
286 fClipMaskManager.adjustPathStencilParams(outStencilSettings);
287 }
288
289
290 //////////////////////////////////////////////////////////////////////////////// 250 ////////////////////////////////////////////////////////////////////////////////
291 251
292 static const int MAX_QUADS = 1 << 12; // max possible: (1 << 14) - 1; 252 static const int MAX_QUADS = 1 << 12; // max possible: (1 << 14) - 1;
293 253
294 GR_STATIC_ASSERT(4 * MAX_QUADS <= 65535); 254 GR_STATIC_ASSERT(4 * MAX_QUADS <= 65535);
295 255
296 static const uint16_t gQuadIndexPattern[] = { 256 static const uint16_t gQuadIndexPattern[] = {
297 0, 1, 2, 0, 2, 3 257 0, 1, 2, 0, 2, 3
298 }; 258 };
299 259
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 } 507 }
548 508
549 void GrGpu::releaseIndexArray() { 509 void GrGpu::releaseIndexArray() {
550 // if index source was array, we stowed data in the pool 510 // if index source was array, we stowed data in the pool
551 const GeometrySrcState& geoSrc = this->getGeomSrc(); 511 const GeometrySrcState& geoSrc = this->getGeomSrc();
552 SkASSERT(kArray_GeometrySrcType == geoSrc.fIndexSrc); 512 SkASSERT(kArray_GeometrySrcType == geoSrc.fIndexSrc);
553 size_t bytes = geoSrc.fIndexCount * sizeof(uint16_t); 513 size_t bytes = geoSrc.fIndexCount * sizeof(uint16_t);
554 fIndexPool->putBack(bytes); 514 fIndexPool->putBack(bytes);
555 --fIndexPoolUseCnt; 515 --fIndexPoolUseCnt;
556 } 516 }
OLDNEW
« no previous file with comments | « src/gpu/GrGpu.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698