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

Side by Side Diff: src/gpu/effects/GrCustomXfermode.cpp

Issue 1133123009: rename GrDrawTargetCaps to GrCaps (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix gypi filename Created 5 years, 7 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/effects/GrCoverageSetOpXP.cpp ('k') | src/gpu/effects/GrCustomXfermodePriv.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 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 #include "effects/GrCustomXfermode.h" 8 #include "effects/GrCustomXfermode.h"
9 #include "effects/GrCustomXfermodePriv.h" 9 #include "effects/GrCustomXfermodePriv.h"
10 10
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 return fMode == s.fMode; 488 return fMode == s.fMode;
489 } 489 }
490 490
491 void GrCustomXferFP::onComputeInvariantOutput(GrInvariantOutput* inout) const { 491 void GrCustomXferFP::onComputeInvariantOutput(GrInvariantOutput* inout) const {
492 inout->setToUnknown(GrInvariantOutput::kWill_ReadInput); 492 inout->setToUnknown(GrInvariantOutput::kWill_ReadInput);
493 } 493 }
494 494
495 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrCustomXferFP); 495 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrCustomXferFP);
496 GrFragmentProcessor* GrCustomXferFP::TestCreate(SkRandom* rand, 496 GrFragmentProcessor* GrCustomXferFP::TestCreate(SkRandom* rand,
497 GrContext*, 497 GrContext*,
498 const GrDrawTargetCaps&, 498 const GrCaps&,
499 GrTexture* textures[]) { 499 GrTexture* textures[]) {
500 int mode = rand->nextRangeU(SkXfermode::kLastCoeffMode + 1, SkXfermode::kLas tSeparableMode); 500 int mode = rand->nextRangeU(SkXfermode::kLastCoeffMode + 1, SkXfermode::kLas tSeparableMode);
501 501
502 return SkNEW_ARGS(GrCustomXferFP, (static_cast<SkXfermode::Mode>(mode), text ures[0])); 502 return SkNEW_ARGS(GrCustomXferFP, (static_cast<SkXfermode::Mode>(mode), text ures[0]));
503 } 503 }
504 504
505 /////////////////////////////////////////////////////////////////////////////// 505 ///////////////////////////////////////////////////////////////////////////////
506 // Xfer Processor 506 // Xfer Processor
507 /////////////////////////////////////////////////////////////////////////////// 507 ///////////////////////////////////////////////////////////////////////////////
508 508
(...skipping 24 matching lines...) Expand all
533 return fHWBlendEquation; 533 return fHWBlendEquation;
534 } 534 }
535 535
536 private: 536 private:
537 CustomXP(SkXfermode::Mode mode, const GrDeviceCoordTexture* dstCopy, bool wi llReadDstColor); 537 CustomXP(SkXfermode::Mode mode, const GrDeviceCoordTexture* dstCopy, bool wi llReadDstColor);
538 538
539 GrXferProcessor::OptFlags onGetOptimizations(const GrProcOptInfo& colorPOI, 539 GrXferProcessor::OptFlags onGetOptimizations(const GrProcOptInfo& colorPOI,
540 const GrProcOptInfo& coveragePO I, 540 const GrProcOptInfo& coveragePO I,
541 bool doesStencilWrite, 541 bool doesStencilWrite,
542 GrColor* overrideColor, 542 GrColor* overrideColor,
543 const GrDrawTargetCaps& caps) o verride; 543 const GrCaps& caps) override;
544 544
545 void onGetGLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) c onst override; 545 void onGetGLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) c onst override;
546 546
547 bool onWillNeedXferBarrier(const GrRenderTarget* rt, 547 bool onWillNeedXferBarrier(const GrRenderTarget* rt,
548 const GrDrawTargetCaps& caps, 548 const GrCaps& caps,
549 GrXferBarrierType* outBarrierType) const override ; 549 GrXferBarrierType* outBarrierType) const override ;
550 550
551 void onGetBlendInfo(BlendInfo*) const override; 551 void onGetBlendInfo(BlendInfo*) const override;
552 552
553 bool onIsEqual(const GrXferProcessor& xpBase) const override; 553 bool onIsEqual(const GrXferProcessor& xpBase) const override;
554 554
555 SkXfermode::Mode fMode; 555 SkXfermode::Mode fMode;
556 GrBlendEquation fHWBlendEquation; 556 GrBlendEquation fHWBlendEquation;
557 557
558 typedef GrXferProcessor INHERITED; 558 typedef GrXferProcessor INHERITED;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 645
646 bool CustomXP::onIsEqual(const GrXferProcessor& other) const { 646 bool CustomXP::onIsEqual(const GrXferProcessor& other) const {
647 const CustomXP& s = other.cast<CustomXP>(); 647 const CustomXP& s = other.cast<CustomXP>();
648 return fMode == s.fMode && fHWBlendEquation == s.fHWBlendEquation; 648 return fMode == s.fMode && fHWBlendEquation == s.fHWBlendEquation;
649 } 649 }
650 650
651 GrXferProcessor::OptFlags CustomXP::onGetOptimizations(const GrProcOptInfo& colo rPOI, 651 GrXferProcessor::OptFlags CustomXP::onGetOptimizations(const GrProcOptInfo& colo rPOI,
652 const GrProcOptInfo& cove ragePOI, 652 const GrProcOptInfo& cove ragePOI,
653 bool doesStencilWrite, 653 bool doesStencilWrite,
654 GrColor* overrideColor, 654 GrColor* overrideColor,
655 const GrDrawTargetCaps& c aps) { 655 const GrCaps& caps) {
656 /* 656 /*
657 Most the optimizations we do here are based on tweaking alpha for coverage. 657 Most the optimizations we do here are based on tweaking alpha for coverage.
658 658
659 The general SVG blend equation is defined in the spec as follows: 659 The general SVG blend equation is defined in the spec as follows:
660 660
661 Dca' = B(Sc, Dc) * Sa * Da + Y * Sca * (1-Da) + Z * Dca * (1-Sa) 661 Dca' = B(Sc, Dc) * Sa * Da + Y * Sca * (1-Da) + Z * Dca * (1-Sa)
662 Da' = X * Sa * Da + Y * Sa * (1-Da) + Z * Da * (1-Sa) 662 Da' = X * Sa * Da + Y * Sa * (1-Da) + Z * Da * (1-Sa)
663 663
664 (Note that Sca, Dca indicate RGB vectors that are premultiplied by alpha, 664 (Note that Sca, Dca indicate RGB vectors that are premultiplied by alpha,
665 and that B(Sc, Dc) is a mode-specific function that accepts non-multiplied 665 and that B(Sc, Dc) is a mode-specific function that accepts non-multiplied
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 flags |= kIgnoreCoverage_OptFlag; 757 flags |= kIgnoreCoverage_OptFlag;
758 } 758 }
759 if (caps.advancedBlendEquationSupport() && !coveragePOI.isFourChannelOutput( )) { 759 if (caps.advancedBlendEquationSupport() && !coveragePOI.isFourChannelOutput( )) {
760 // This blend mode can be implemented in hardware. 760 // This blend mode can be implemented in hardware.
761 fHWBlendEquation = hw_blend_equation(fMode); 761 fHWBlendEquation = hw_blend_equation(fMode);
762 } 762 }
763 return flags; 763 return flags;
764 } 764 }
765 765
766 bool CustomXP::onWillNeedXferBarrier(const GrRenderTarget* rt, 766 bool CustomXP::onWillNeedXferBarrier(const GrRenderTarget* rt,
767 const GrDrawTargetCaps& caps, 767 const GrCaps& caps,
768 GrXferBarrierType* outBarrierType) const { 768 GrXferBarrierType* outBarrierType) const {
769 if (this->hasHWBlendEquation() && !caps.advancedCoherentBlendEquationSupport ()) { 769 if (this->hasHWBlendEquation() && !caps.advancedCoherentBlendEquationSupport ()) {
770 *outBarrierType = kBlend_GrXferBarrierType; 770 *outBarrierType = kBlend_GrXferBarrierType;
771 return true; 771 return true;
772 } 772 }
773 return false; 773 return false;
774 } 774 }
775 775
776 void CustomXP::onGetBlendInfo(BlendInfo* blendInfo) const { 776 void CustomXP::onGetBlendInfo(BlendInfo* blendInfo) const {
777 if (this->hasHWBlendEquation()) { 777 if (this->hasHWBlendEquation()) {
778 blendInfo->fEquation = this->hwBlendEquation(); 778 blendInfo->fEquation = this->hwBlendEquation();
779 } 779 }
780 } 780 }
781 781
782 /////////////////////////////////////////////////////////////////////////////// 782 ///////////////////////////////////////////////////////////////////////////////
783 783
784 GrCustomXPFactory::GrCustomXPFactory(SkXfermode::Mode mode) 784 GrCustomXPFactory::GrCustomXPFactory(SkXfermode::Mode mode)
785 : fMode(mode) { 785 : fMode(mode) {
786 this->initClassID<GrCustomXPFactory>(); 786 this->initClassID<GrCustomXPFactory>();
787 } 787 }
788 788
789 GrXferProcessor* 789 GrXferProcessor*
790 GrCustomXPFactory::onCreateXferProcessor(const GrDrawTargetCaps& caps, 790 GrCustomXPFactory::onCreateXferProcessor(const GrCaps& caps,
791 const GrProcOptInfo& colorPOI, 791 const GrProcOptInfo& colorPOI,
792 const GrProcOptInfo& coveragePOI, 792 const GrProcOptInfo& coveragePOI,
793 const GrDeviceCoordTexture* dstCopy) co nst { 793 const GrDeviceCoordTexture* dstCopy) co nst {
794 return CustomXP::Create(fMode, dstCopy, this->willReadDstColor(caps, colorPO I, coveragePOI)); 794 return CustomXP::Create(fMode, dstCopy, this->willReadDstColor(caps, colorPO I, coveragePOI));
795 } 795 }
796 796
797 bool GrCustomXPFactory::willReadDstColor(const GrDrawTargetCaps& caps, 797 bool GrCustomXPFactory::willReadDstColor(const GrCaps& caps,
798 const GrProcOptInfo& colorPOI, 798 const GrProcOptInfo& colorPOI,
799 const GrProcOptInfo& coveragePOI) const { 799 const GrProcOptInfo& coveragePOI) const {
800 if (!caps.advancedBlendEquationSupport()) { 800 if (!caps.advancedBlendEquationSupport()) {
801 // No hardware support for advanced blend equations; we will need to do it in the shader. 801 // No hardware support for advanced blend equations; we will need to do it in the shader.
802 return true; 802 return true;
803 } 803 }
804 if (coveragePOI.isFourChannelOutput()) { 804 if (coveragePOI.isFourChannelOutput()) {
805 // Advanced blend equations can't tweak alpha for RGB coverage. 805 // Advanced blend equations can't tweak alpha for RGB coverage.
806 return true; 806 return true;
807 } 807 }
808 return false; 808 return false;
809 } 809 }
810 810
811 void GrCustomXPFactory::getInvariantOutput(const GrProcOptInfo& colorPOI, 811 void GrCustomXPFactory::getInvariantOutput(const GrProcOptInfo& colorPOI,
812 const GrProcOptInfo& coveragePOI, 812 const GrProcOptInfo& coveragePOI,
813 GrXPFactory::InvariantOutput* out put) const { 813 GrXPFactory::InvariantOutput* out put) const {
814 output->fWillBlendWithDst = true; 814 output->fWillBlendWithDst = true;
815 output->fBlendedColorFlags = 0; 815 output->fBlendedColorFlags = 0;
816 } 816 }
817 817
818 GR_DEFINE_XP_FACTORY_TEST(GrCustomXPFactory); 818 GR_DEFINE_XP_FACTORY_TEST(GrCustomXPFactory);
819 GrXPFactory* GrCustomXPFactory::TestCreate(SkRandom* rand, 819 GrXPFactory* GrCustomXPFactory::TestCreate(SkRandom* rand,
820 GrContext*, 820 GrContext*,
821 const GrDrawTargetCaps&, 821 const GrCaps&,
822 GrTexture*[]) { 822 GrTexture*[]) {
823 int mode = rand->nextRangeU(SkXfermode::kLastCoeffMode + 1, SkXfermode::kLas tSeparableMode); 823 int mode = rand->nextRangeU(SkXfermode::kLastCoeffMode + 1, SkXfermode::kLas tSeparableMode);
824 824
825 return SkNEW_ARGS(GrCustomXPFactory, (static_cast<SkXfermode::Mode>(mode))); 825 return SkNEW_ARGS(GrCustomXPFactory, (static_cast<SkXfermode::Mode>(mode)));
826 } 826 }
827 827
OLDNEW
« no previous file with comments | « src/gpu/effects/GrCoverageSetOpXP.cpp ('k') | src/gpu/effects/GrCustomXfermodePriv.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698