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

Side by Side Diff: src/gpu/GrDrawTarget.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: cleanup 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
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 10
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 //////////////////////////////////////////////////////////////////////////////// 86 ////////////////////////////////////////////////////////////////////////////////
87 87
88 #define DEBUG_INVAL_BUFFER 0xdeadcafe 88 #define DEBUG_INVAL_BUFFER 0xdeadcafe
89 #define DEBUG_INVAL_START_IDX -1 89 #define DEBUG_INVAL_START_IDX -1
90 90
91 GrDrawTarget::GrDrawTarget(GrContext* context) 91 GrDrawTarget::GrDrawTarget(GrContext* context)
92 : fClip(NULL) 92 : fClip(NULL)
93 , fContext(context) 93 , fContext(context)
94 , fGpuTraceMarkerCount(0) { 94 , fGpuTraceMarkerCount(0) {
95 SkASSERT(context); 95 SkASSERT(context);
96
97 fDrawState = &fDefaultDrawState; 96 fDrawState = &fDefaultDrawState;
98 // We assume that fDrawState always owns a ref to the object it points at. 97 // We assume that fDrawState always owns a ref to the object it points at.
99 fDefaultDrawState.ref(); 98 fDefaultDrawState.ref();
100 GeometrySrcState& geoSrc = fGeoSrcStateStack.push_back(); 99 GeometrySrcState& geoSrc = fGeoSrcStateStack.push_back();
101 #ifdef SK_DEBUG 100 #ifdef SK_DEBUG
102 geoSrc.fVertexCount = DEBUG_INVAL_START_IDX; 101 geoSrc.fVertexCount = DEBUG_INVAL_START_IDX;
103 geoSrc.fVertexBuffer = (GrVertexBuffer*)DEBUG_INVAL_BUFFER; 102 geoSrc.fVertexBuffer = (GrVertexBuffer*)DEBUG_INVAL_BUFFER;
104 geoSrc.fIndexCount = DEBUG_INVAL_START_IDX; 103 geoSrc.fIndexCount = DEBUG_INVAL_START_IDX;
105 geoSrc.fIndexBuffer = (GrIndexBuffer*)DEBUG_INVAL_BUFFER; 104 geoSrc.fIndexBuffer = (GrIndexBuffer*)DEBUG_INVAL_BUFFER;
106 #endif 105 #endif
(...skipping 1045 matching lines...) Expand 10 before | Expand all | Expand 10 after
1152 1151
1153 uint32_t GrDrawTargetCaps::CreateUniqueID() { 1152 uint32_t GrDrawTargetCaps::CreateUniqueID() {
1154 static int32_t gUniqueID = SK_InvalidUniqueID; 1153 static int32_t gUniqueID = SK_InvalidUniqueID;
1155 uint32_t id; 1154 uint32_t id;
1156 do { 1155 do {
1157 id = static_cast<uint32_t>(sk_atomic_inc(&gUniqueID) + 1); 1156 id = static_cast<uint32_t>(sk_atomic_inc(&gUniqueID) + 1);
1158 } while (id == SK_InvalidUniqueID); 1157 } while (id == SK_InvalidUniqueID);
1159 return id; 1158 return id;
1160 } 1159 }
1161 1160
1161 //////////////////////////////////////////////////////////////////////////////// ///////////////////
1162
1163 static const GrStencilSettings& winding_path_stencil_settings() {
1164 GR_STATIC_CONST_SAME_STENCIL_STRUCT(gSettings,
1165 kIncClamp_StencilOp,
1166 kIncClamp_StencilOp,
1167 kAlwaysIfInClip_StencilFunc,
1168 0xFFFF, 0xFFFF, 0xFFFF);
1169 return *GR_CONST_STENCIL_SETTINGS_PTR_FROM_STRUCT_PTR(&gSettings);
1170 }
1171
1172 static const GrStencilSettings& even_odd_path_stencil_settings() {
1173 GR_STATIC_CONST_SAME_STENCIL_STRUCT(gSettings,
1174 kInvert_StencilOp,
1175 kInvert_StencilOp,
1176 kAlwaysIfInClip_StencilFunc,
1177 0xFFFF, 0xFFFF, 0xFFFF);
1178 return *GR_CONST_STENCIL_SETTINGS_PTR_FROM_STRUCT_PTR(&gSettings);
1179 }
1180
1181 void GrClipTarget::getPathStencilSettingsForFillType(SkPath::FillType fill,
1182 GrStencilSettings* outStenc ilSettings) {
1183
1184 switch (fill) {
1185 default:
1186 SkFAIL("Unexpected path fill.");
1187 /* fallthrough */;
1188 case SkPath::kWinding_FillType:
1189 case SkPath::kInverseWinding_FillType:
1190 *outStencilSettings = winding_path_stencil_settings();
1191 break;
1192 case SkPath::kEvenOdd_FillType:
1193 case SkPath::kInverseEvenOdd_FillType:
1194 *outStencilSettings = even_odd_path_stencil_settings();
1195 break;
1196 }
1197 fClipMaskManager.adjustPathStencilParams(outStencilSettings);
1198 }
OLDNEW
« src/gpu/GrDrawTarget.h ('K') | « src/gpu/GrDrawTarget.h ('k') | src/gpu/GrGpu.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698