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

Side by Side Diff: src/gpu/GrPipelineBuilder.h

Issue 1101663007: Make non-AA hairline stroke rects snap to pixels centers so they close. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 8 months 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/GrPipeline.cpp ('k') | src/gpu/GrPipelineBuilder.cpp » ('j') | 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 * 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 GrPipelineBuilder_DEFINED 8 #ifndef GrPipelineBuilder_DEFINED
9 #define GrPipelineBuilder_DEFINED 9 #define GrPipelineBuilder_DEFINED
10 10
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 /// @} 268 /// @}
269 269
270 /////////////////////////////////////////////////////////////////////////// 270 ///////////////////////////////////////////////////////////////////////////
271 /// @name State Flags 271 /// @name State Flags
272 //// 272 ////
273 273
274 /** 274 /**
275 * Flags that affect rendering. Controlled using enable/disableState(). All 275 * Flags that affect rendering. Controlled using enable/disableState(). All
276 * default to disabled. 276 * default to disabled.
277 */ 277 */
278 enum StateBits { 278 enum Flags {
279 /** 279 /**
280 * Perform dithering. TODO: Re-evaluate whether we need this bit 280 * Perform dithering. TODO: Re-evaluate whether we need this bit
281 */ 281 */
282 kDither_StateBit = 0x01, 282 kDither_Flag = 0x01,
283 /** 283 /**
284 * Perform HW anti-aliasing. This means either HW FSAA, if supported by the render target, 284 * Perform HW anti-aliasing. This means either HW FSAA, if supported by the render target,
285 * or smooth-line rendering if a line primitive is drawn and line smooth ing is supported by 285 * or smooth-line rendering if a line primitive is drawn and line smooth ing is supported by
286 * the 3D API. 286 * the 3D API.
287 */ 287 */
288 kHWAntialias_StateBit = 0x02, 288 kHWAntialias_Flag = 0x02,
289 289
290 kLast_StateBit = kHWAntialias_StateBit, 290 /**
291 * Modifies the vertex shader so that vertices will be positioned at pix el centers.
292 */
293 kSnapVerticesToPixelCenters_Flag = 0x04,
294
295 kLast_Flag = kSnapVerticesToPixelCenters_Flag,
291 }; 296 };
292 297
293 bool isDither() const { return 0 != (fFlagBits & kDither_StateBit); } 298 bool isDither() const { return SkToBool(fFlags & kDither_Flag); }
294 bool isHWAntialias() const { return 0 != (fFlagBits & kHWAntialias_StateBit) ; } 299 bool isHWAntialias() const { return SkToBool(fFlags & kHWAntialias_Flag); }
300 bool snapVerticesToPixelCenters() const {
301 return SkToBool(fFlags & kSnapVerticesToPixelCenters_Flag); }
295 302
296 /** 303 /**
297 * Enable render state settings. 304 * Enable render state settings.
298 * 305 *
299 * @param stateBits bitfield of StateBits specifying the states to enable 306 * @param flags bitfield of Flags specifying the states to enable
300 */ 307 */
301 void enableState(uint32_t stateBits) { fFlagBits |= stateBits; } 308 void enableState(uint32_t flags) { fFlags |= flags; }
302 309
303 /** 310 /**
304 * Disable render state settings. 311 * Disable render state settings.
305 * 312 *
306 * @param stateBits bitfield of StateBits specifying the states to disable 313 * @param flags bitfield of Flags specifying the states to disable
307 */ 314 */
308 void disableState(uint32_t stateBits) { fFlagBits &= ~(stateBits); } 315 void disableState(uint32_t flags) { fFlags &= ~(flags); }
309 316
310 /** 317 /**
311 * Enable or disable stateBits based on a boolean. 318 * Enable or disable flags based on a boolean.
312 * 319 *
313 * @param stateBits bitfield of StateBits to enable or disable 320 * @param flags bitfield of Flags to enable or disable
314 * @param enable if true enable stateBits, otherwise disable 321 * @param enable if true enable stateBits, otherwise disable
315 */ 322 */
316 void setState(uint32_t stateBits, bool enable) { 323 void setState(uint32_t flags, bool enable) {
317 if (enable) { 324 if (enable) {
318 this->enableState(stateBits); 325 this->enableState(flags);
319 } else { 326 } else {
320 this->disableState(stateBits); 327 this->disableState(flags);
321 } 328 }
322 } 329 }
323 330
324 /// @} 331 /// @}
325 332
326 /////////////////////////////////////////////////////////////////////////// 333 ///////////////////////////////////////////////////////////////////////////
327 /// @name Face Culling 334 /// @name Face Culling
328 //// 335 ////
329 336
330 enum DrawFace { 337 enum DrawFace {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 */ 422 */
416 void calcCoverageInvariantOutput(GrColor) const; 423 void calcCoverageInvariantOutput(GrColor) const;
417 424
418 // Some of the auto restore objects assume that no effects are removed durin g their lifetime. 425 // Some of the auto restore objects assume that no effects are removed durin g their lifetime.
419 // This is used to assert that this condition holds. 426 // This is used to assert that this condition holds.
420 SkDEBUGCODE(int fBlockEffectRemovalCnt;) 427 SkDEBUGCODE(int fBlockEffectRemovalCnt;)
421 428
422 typedef SkSTArray<4, GrFragmentStage> FragmentStageArray; 429 typedef SkSTArray<4, GrFragmentStage> FragmentStageArray;
423 430
424 SkAutoTUnref<GrRenderTarget> fRenderTarget; 431 SkAutoTUnref<GrRenderTarget> fRenderTarget;
425 uint32_t fFlagBits; 432 uint32_t fFlags;
426 GrStencilSettings fStencilSettings; 433 GrStencilSettings fStencilSettings;
427 DrawFace fDrawFace; 434 DrawFace fDrawFace;
428 mutable SkAutoTUnref<const GrXPFactory> fXPFactory; 435 mutable SkAutoTUnref<const GrXPFactory> fXPFactory;
429 FragmentStageArray fColorStages; 436 FragmentStageArray fColorStages;
430 FragmentStageArray fCoverageStages; 437 FragmentStageArray fCoverageStages;
431 GrClip fClip; 438 GrClip fClip;
432 439
433 mutable GrProcOptInfo fColorProcInfo; 440 mutable GrProcOptInfo fColorProcInfo;
434 mutable GrProcOptInfo fCoverageProcInfo; 441 mutable GrProcOptInfo fCoverageProcInfo;
435 mutable bool fColorProcInfoValid; 442 mutable bool fColorProcInfoValid;
436 mutable bool fCoverageProcInfoValid; 443 mutable bool fCoverageProcInfoValid;
437 mutable GrColor fColorCache; 444 mutable GrColor fColorCache;
438 mutable GrColor fCoverageCache; 445 mutable GrColor fCoverageCache;
439 446
440 friend class GrPipeline; 447 friend class GrPipeline;
441 }; 448 };
442 449
443 #endif 450 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrPipeline.cpp ('k') | src/gpu/GrPipelineBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698