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

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

Issue 2468743002: TEMPORARY: track stencil clip state in GrRenderTargetOpList (Closed)
Patch Set: Created 4 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 | « no previous file | src/gpu/GrRenderTargetContextPriv.h » ('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 2016 Google Inc. 2 * Copyright 2016 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 #include "GrClipStackClip.h" 8 #include "GrClipStackClip.h"
9 9
10 #include "GrAppliedClip.h" 10 #include "GrAppliedClip.h"
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 // clipSpace bounds. We determine the mask's position WRT to the ren der target here. 351 // clipSpace bounds. We determine the mask's position WRT to the ren der target here.
352 SkIRect rtSpaceMaskBounds = reducedClip.ibounds(); 352 SkIRect rtSpaceMaskBounds = reducedClip.ibounds();
353 rtSpaceMaskBounds.offset(-fOrigin); 353 rtSpaceMaskBounds.offset(-fOrigin);
354 out->addCoverageFP(create_fp_for_mask(result.get(), rtSpaceMaskBound s)); 354 out->addCoverageFP(create_fp_for_mask(result.get(), rtSpaceMaskBound s));
355 return true; 355 return true;
356 } 356 }
357 // if alpha clip mask creation fails fall through to the non-AA code pat hs 357 // if alpha clip mask creation fails fall through to the non-AA code pat hs
358 } 358 }
359 359
360 // use the stencil clip if we can't represent the clip as a rectangle. 360 // use the stencil clip if we can't represent the clip as a rectangle.
361 // TODO: these need to be swapped over to using a StencilAttachmentProxy 361 if (!context->resourceProvider()->attachStencilAttachment(rt)) {
362 GrStencilAttachment* stencilAttachment =
363 context->resourceProvider()->attachStencilAttachment(rt);
364 if (nullptr == stencilAttachment) {
365 SkDebugf("WARNING: failed to attach stencil buffer for clip mask. Clip w ill be ignored.\n"); 362 SkDebugf("WARNING: failed to attach stencil buffer for clip mask. Clip w ill be ignored.\n");
366 return true; 363 return true;
367 } 364 }
368 365
369 // This relies on the property that a reduced sub-rect of the last clip will contain all the 366 // This relies on the property that a reduced sub-rect of the last clip will contain all the
370 // relevant window rectangles that were in the last clip. This subtle requir ement will go away 367 // relevant window rectangles that were in the last clip. This subtle requir ement will go away
371 // after clipping is overhauled. 368 // after clipping is overhauled.
372 if (stencilAttachment->mustRenderClip(reducedClip.elementsGenID(), reducedCl ip.ibounds(), 369 if (renderTargetContext->priv().mustRenderClip(reducedClip.elementsGenID(),
373 fOrigin)) { 370 reducedClip.ibounds(), fOrigi n)) {
374 reducedClip.drawStencilClipMask(context, renderTargetContext, fOrigin); 371 reducedClip.drawStencilClipMask(context, renderTargetContext, fOrigin);
375 stencilAttachment->setLastClip(reducedClip.elementsGenID(), reducedClip. ibounds(), 372 renderTargetContext->priv().setLastClip(reducedClip.elementsGenID(), red ucedClip.ibounds(),
376 fOrigin); 373 fOrigin);
377 } 374 }
378 out->addStencilClip(); 375 out->addStencilClip();
379 return true; 376 return true;
380 } 377 }
381 378
382 //////////////////////////////////////////////////////////////////////////////// 379 ////////////////////////////////////////////////////////////////////////////////
383 // Create a 8-bit clip mask in alpha 380 // Create a 8-bit clip mask in alpha
384 381
385 static void GetClipMaskKey(int32_t clipGenID, const SkIRect& bounds, GrUniqueKey * key) { 382 static void GetClipMaskKey(int32_t clipGenID, const SkIRect& bounds, GrUniqueKey * key) {
386 static const GrUniqueKey::Domain kDomain = GrUniqueKey::GenerateDomain(); 383 static const GrUniqueKey::Domain kDomain = GrUniqueKey::GenerateDomain();
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 sk_sp<GrTexture> result(texProvider->createApproxTexture(desc)); 485 sk_sp<GrTexture> result(texProvider->createApproxTexture(desc));
489 if (!result) { 486 if (!result) {
490 return nullptr; 487 return nullptr;
491 } 488 }
492 result->resourcePriv().setUniqueKey(key); 489 result->resourcePriv().setUniqueKey(key);
493 490
494 helper.toTexture(result.get()); 491 helper.toTexture(result.get());
495 492
496 return result; 493 return result;
497 } 494 }
OLDNEW
« no previous file with comments | « no previous file | src/gpu/GrRenderTargetContextPriv.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698