aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/gpu/effects
Commit message (Collapse)AuthorAge
* Make skpaint->grpaint flow work for composing draws (verts and atlas)Gravatar bsalomon2015-09-28
| | | | | | One side effect is that the SkShader's (or implicit shader's) fragment processor is responsible for the transition from an unpremul paint color to a premul color. Review URL: https://codereview.chromium.org/1348583002
* Replace GrExtractAlphaFragmentProcessor with DstIn compose processorGravatar bsalomon2015-09-22
| | | | Review URL: https://codereview.chromium.org/1347943003
* Remove SkNEW and SkDELETE macrosGravatar mdempsky2015-09-22
| | | | | | | | | | | | | | | This CL removes the uses of SkNEW that have resprouted since commit 385fe4d, and removes the macros entirely now that Android and Chromium have been cleaned up to no longer depend on them. A bunch of files implicitly depend on #include <new> from SkPostConfig.h still though, so keep that for now. To be fixed in a followup CL. [mtklein mucking around] Only public API removed. TBR=reed@google.com Review URL: https://codereview.chromium.org/1360653004
* Create fragment processor for performing input color blend with child processorGravatar bsalomon2015-09-15
| | | | | | The new FP is used to implement SkXM::Mode color filters and SkXM::Mode image filters. Also, these now support all advanced SkXM::Mode xfermodes. Review URL: https://codereview.chromium.org/1334293003
* Add support for blending of LCD for all blend modes.Gravatar egdaniel2015-09-15
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1313623002
* Add helper for creating leaf FPs inside GrFP::TestCreate functionsGravatar bsalomon2015-09-14
| | | | Review URL: https://codereview.chromium.org/1334273003
* Brian requested a new namespace for factories that create fragment ↵Gravatar wangyix2015-09-09
| | | | | | | | processors that combine 2 things with a xfermode. This way, we can change the implementation of these factories in the future to not use GrComposeEffect if desired. BUG=skia:4182 Review URL: https://codereview.chromium.org/1306163005
* Change SkShader;asFragmentProcessor signature to no longer take skpaint\grcolor*Gravatar bsalomon2015-08-28
| | | | | | Committed: https://skia.googlesource.com/skia/+/ecfdc251be71f3d634e76afdd6375bf55fc061aa Review URL: https://codereview.chromium.org/1316513002
* Revert of Change SkShader;asFragmentProcessor signature to no longer take ↵Gravatar rmistry2015-08-28
| | | | | | | | | | | | | | | | | | | | | | | | skpaint\grcolor* (patchset #8 id:140001 of https://codereview.chromium.org/1316513002/ ) Reason for revert: Primary suspect in failing DEPS rolls: * https://codereview.chromium.org/1315753006 * https://codereview.chromium.org/1308323006 * https://codereview.chromium.org/1320903004 Primary suspect because the failing win bots did not fail in https://codereview.chromium.org/1315753005 Original issue's description: > Change SkShader;asFragmentProcessor signature to no longer take skpaint\grcolor* > > Committed: https://skia.googlesource.com/skia/+/ecfdc251be71f3d634e76afdd6375bf55fc061aa TBR=joshualitt@google.com,wangyix@google.com,robertphillips@google.com,bsalomon@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1313573005
* Change SkShader;asFragmentProcessor signature to no longer take skpaint\grcolor*Gravatar bsalomon2015-08-28
| | | | Review URL: https://codereview.chromium.org/1316513002
* Style Change: SkNEW->new; SkDELETE->deleteGravatar halcanary2015-08-26
| | | | | | DOCS_PREVIEW= https://skia.org/?cl=1316123003 Review URL: https://codereview.chromium.org/1316123003
* When getGLInstance is called on a frag proc, the resulting ↵Gravatar wangyix2015-08-18
| | | | | | | | GrGLFragmentProcessor will be the root of a tree of GrGLFragmentProcessors that mirrors the GrFragmentProcessor's tree. This allows setData() to be called recursively (removing the responsibility from compose shader) and allows gl instances direct access to their children gl instances so they can emit their code. BUG=skia:4182 Review URL: https://codereview.chromium.org/1287023009
* Added registerChild; transforms, textures, glKey automatically handled.Gravatar wangyix2015-08-04
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1266633003
* rename GrShaderDataManager -> GrProcessorDataManagerGravatar joshualitt2015-07-09
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1228683002
* more threading of GrShaderDataManagerGravatar joshualitt2015-07-08
| | | | | | | TBR=bsalomon@google.com BUG=skia: Review URL: https://codereview.chromium.org/1215643006
* Add mixed samples support to XPsGravatar cdalton2015-06-08
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1164973002
* Update XPF invariant info to not account for conflationGravatar cdalton2015-06-02
| | | | | | | | | | Renames getInvariantOutput to getInvariantBlendedColor on GrXPFactory and redefines it to not account for coverage conflation. This is the information that all the callsites actually wanted to know. BUG=skia: Review URL: https://codereview.chromium.org/1161273005
* Implement Porter Duff XP with a blend tableGravatar cdalton2015-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removes the runtime logic used by PorterDuffXferProcessor to decide blend coeffs and shader outputs, and instead uses a compile-time constant table of pre-selected blend formulas. Separates out the dst read fallback into its own XP. Introduces a new blend strategy for srcCoeff=0 that can apply coverage with a reverse subtract blend equation instead of dual source blending. Adds new macros in GrBlend.h to analyze blend formulas both runtime. Removes kSetCoverageDrawing_OptFlag and GrSimplifyBlend as they are no longer used. Adds a GM that verifies all xfermodes, including arithmetic, with the color/coverage invariants used by Porter Duff. Adds a unit test that verifies each Porter Duff formula with every color/coverage invariant. Major changes: * Uses a reverse subtract blend equation for coverage when srcCoeff=0 (clear, dst-out [Sa=1], dst-in, modulate). Platforms that don't support dual source blending no longer require a dst copy for dst-in and modulate. * Sets BlendInfo::fWriteColor to false when the blend does not modify the dst. GrGLGpu will now use glColorMask instead of blending for these modes (dst, dst-in [Sa=1], modulate ignored for [Sc=1]). * Converts all SA blend coeffs to One for opaque inputs, and ISA to Zero if there is also no coverage. (We keep ISA around when there is coverage because we use it to tweak alpha for coverage.) * Abandons solid white optimizations for the sake of simplicity (screen was the only mode that previous had solid white opts). Minor differences: * Inconsequential differences in opt flags (e.g. we now return kCanTweakAlphaForCoverage_OptFlag even when there is no coverage). * Src coeffs when the shader outputs 0. * IS2C vs IS2A when the secondary output is scalar. BUG=skia: Committed: https://skia.googlesource.com/skia/+/9a70920db22b6309c671f8e5d519bb95570e4414 Review URL: https://codereview.chromium.org/1124373002
* Move DstCoordTexture to GrXP, rename and remove the word "copy" from ↵Gravatar bsalomon2015-05-26
| | | | | | | | dstcopytexture names. Committed: https://skia.googlesource.com/skia/+/bb106b5f6ee18f7453b63f3a95f421b60a957f39 Review URL: https://codereview.chromium.org/1132093004
* Revert of Implement Porter Duff XP with a blend table (patchset #12 ↵Gravatar bungeman2015-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:220001 of https://codereview.chromium.org/1124373002/) Reason for revert: Blocking DEPS roll into Chromium. Crashing virtual/gpu/fast/canvas/canvas-composite-*.html tests with the assert ../../third_party/skia/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp:281: failed assertion "k110_GrGLSLGeneration != gpu->glslGeneration() || fOutputs.empty()" Original issue's description: > Implement Porter Duff XP with a blend table > > Removes the runtime logic used by PorterDuffXferProcessor to decide > blend coeffs and shader outputs, and instead uses a compile-time > constant table of pre-selected blend formulas. > > Introduces a new blend strategy for srcCoeff=0 that can apply coverage > with a reverse subtract blend equation instead of dual source > blending. > > Adds new macros in GrBlend.h to analyze blend formulas both runtime. > > Removes kSetCoverageDrawing_OptFlag and GrSimplifyBlend as they are no > longer used. > > Adds a GM that verifies all xfermodes, including arithmetic, with the > color/coverage invariants used by Porter Duff. > > Adds a unit test that verifies each Porter Duff formula with every > color/coverage invariant. > > Major changes: > > * Uses a reverse subtract blend equation for coverage when srcCoeff=0 > (clear, dst-out [Sa=1], dst-in, modulate). Platforms that don't > support dual source blending no longer require a dst copy for > dst-in and modulate. > > * Sets BlendInfo::fWriteColor to false when the blend does not modify > the dst. GrGLGpu will now use glColorMask instead of blending for > these modes (dst, dst-in [Sa=1], modulate ignored for [Sc=1]). > > * Converts all SA blend coeffs to One for opaque inputs, and ISA to > Zero if there is also no coverage. (We keep ISA around when there > is coverage because we use it to tweak alpha for coverage.) > > * Abandons solid white optimizations for the sake of simplicity > (screen was the only mode that previous had solid white opts). > > Minor differences: > > * Inconsequential differences in opt flags (e.g. we now return > kCanTweakAlphaForCoverage_OptFlag even when there is no coverage). > > * Src coeffs when the shader outputs 0. > > * IS2C vs IS2A when the secondary output is scalar. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/9a70920db22b6309c671f8e5d519bb95570e4414 TBR=egdaniel@google.com,bsalomon@google.com,cdalton@nvidia.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1153993002
* Revert of Move DstCoordTexture to GrXP, rename and remove the word "copy" ↵Gravatar bungeman2015-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | from dstcopytexture names. (patchset #6 id:100001 of https://codereview.chromium.org/1132093004/) Reason for revert: This is asserting on GTX660 bots with '!dst'. This may just be catching an existing issue. https://build.chromium.org/p/client.skia/builders/Test-Ubuntu-GCC-ShuttleA-GPU-GTX660-x86_64-Debug/builds/622/steps/dm/logs/stdio https://build.chromium.org/p/client.skia/builders/Test-Win7-MSVC-ShuttleA-GPU-HD2000-x86-Debug-ANGLE/builds/209/steps/dm/logs/stdio https://build.chromium.org/p/client.skia/builders/Test-Win8-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug/builds/318/steps/dm/logs/stdio Original issue's description: > Move DstCoordTexture to GrXP, rename and remove the word "copy" from dstcopytexture names. > > Committed: https://skia.googlesource.com/skia/+/bb106b5f6ee18f7453b63f3a95f421b60a957f39 TBR=egdaniel@google.com,bsalomon@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1158453004
* Move DstCoordTexture to GrXP, rename and remove the word "copy" from ↵Gravatar bsalomon2015-05-22
| | | | | | dstcopytexture names. Review URL: https://codereview.chromium.org/1132093004
* Implement Porter Duff XP with a blend tableGravatar cdalton2015-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removes the runtime logic used by PorterDuffXferProcessor to decide blend coeffs and shader outputs, and instead uses a compile-time constant table of pre-selected blend formulas. Introduces a new blend strategy for srcCoeff=0 that can apply coverage with a reverse subtract blend equation instead of dual source blending. Adds new macros in GrBlend.h to analyze blend formulas both runtime. Removes kSetCoverageDrawing_OptFlag and GrSimplifyBlend as they are no longer used. Adds a GM that verifies all xfermodes, including arithmetic, with the color/coverage invariants used by Porter Duff. Adds a unit test that verifies each Porter Duff formula with every color/coverage invariant. Major changes: * Uses a reverse subtract blend equation for coverage when srcCoeff=0 (clear, dst-out [Sa=1], dst-in, modulate). Platforms that don't support dual source blending no longer require a dst copy for dst-in and modulate. * Sets BlendInfo::fWriteColor to false when the blend does not modify the dst. GrGLGpu will now use glColorMask instead of blending for these modes (dst, dst-in [Sa=1], modulate ignored for [Sc=1]). * Converts all SA blend coeffs to One for opaque inputs, and ISA to Zero if there is also no coverage. (We keep ISA around when there is coverage because we use it to tweak alpha for coverage.) * Abandons solid white optimizations for the sake of simplicity (screen was the only mode that previous had solid white opts). Minor differences: * Inconsequential differences in opt flags (e.g. we now return kCanTweakAlphaForCoverage_OptFlag even when there is no coverage). * Src coeffs when the shader outputs 0. * IS2C vs IS2A when the secondary output is scalar. BUG=skia: Review URL: https://codereview.chromium.org/1124373002
* rename GrDrawTargetCaps to GrCapsGravatar bsalomon2015-05-19
| | | | Review URL: https://codereview.chromium.org/1133123009
* Remove canTweakAlphaForCoverage from XP's since batch reads flag.Gravatar egdaniel2015-05-04
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1127693002
* Use GLSLCaps for creating processor keys and GLSL-specific programsGravatar jvanverth2015-04-28
| | | | | | | | | Effectively all this does is future-proof any GLSL-specific code, as GLSLCaps is just a typedef of GLCaps. BUG=skia: Review URL: https://codereview.chromium.org/1109863004
* Add constant color GrFP.Gravatar bsalomon2015-04-02
| | | | | | Committed: https://skia.googlesource.com/skia/+/dfbbec436cbcacc3270d4b28357c8393e67d6494 Review URL: https://codereview.chromium.org/978713002
* Revert of Add constant color GrFP. (patchset #10 id:180001 of ↵Gravatar bsalomon2015-04-02
| | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/978713002/) Reason for revert: Revert while investigating assertions. Original issue's description: > Add constant color GrFP. > > Committed: https://skia.googlesource.com/skia/+/dfbbec436cbcacc3270d4b28357c8393e67d6494 TBR=egdaniel@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1055023002
* Add constant color GrFP.Gravatar bsalomon2015-04-01
| | | | Review URL: https://codereview.chromium.org/978713002
* C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla}Gravatar mtklein2015-03-25
| | | | | | | | | NOPRESUBMIT=true BUG=skia: DOCS_PREVIEW= https://skia.org/?cl=1037793002 Review URL: https://codereview.chromium.org/1037793002
* Remove canApplyCoverage from XP and all related functions in gpu code.Gravatar egdaniel2015-02-23
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/919683002
* Use dst copies in porter duffer XP to correctly render certain blends.Gravatar egdaniel2015-02-17
| | | | | | | | BUG=skia: Committed: https://skia.googlesource.com/skia/+/997c6358d94e188b1a7b89a4f86e24cbe0f5a164 Review URL: https://codereview.chromium.org/914003003
* Use SkXfermode as public facing enum for GrPorterDuffXPGravatar egdaniel2015-02-17
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/926593005
* Revert of Use dst copies in porter duffer XP to correctly render certain ↵Gravatar egdaniel2015-02-13
| | | | | | | | | | | | | | | | | | | | | | blends. (patchset #4 id:60001 of https://codereview.chromium.org/914003003/) Reason for revert: Failing GLProgramTest passing in stupid coeffs Original issue's description: > Use dst copies in porter duffer XP to correctly render certain blends. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/997c6358d94e188b1a7b89a4f86e24cbe0f5a164 TBR=bsalomon@google.com,joshualitt@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/923153003
* Use dst copies in porter duffer XP to correctly render certain blends.Gravatar egdaniel2015-02-13
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/914003003
* Pass in ProcOptInfos into willNeedDstCopy on XPsGravatar egdaniel2015-02-13
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/912413002
* Move GrXferProcessor subclasses into cpp filesGravatar egdaniel2015-02-09
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/860383007
* Revert of Revert of Move DstCopy on gpu into the GrXferProcessor. (patchset ↵Gravatar bsalomon2015-02-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #1 id:1 of https://codereview.chromium.org/901663007/) Reason for revert: The revert didn't help the 10.9 bot. Unreverting by reverting the revert (which is basically relanding the original patch which itself was a revert of a revert). Revert. Original issue's description: > Revert of Move DstCopy on gpu into the GrXferProcessor. (patchset #11 id:200001 of https://codereview.chromium.org/885923002/) > > Reason for revert: > Testing to see if reverting fixes 10.9 bots. > > Original issue's description: > > Move DstCopy on gpu into the GrXferProcessor. > > > > BUG=skia: > > > > Committed: https://skia.googlesource.com/skia/+/74a11753604768bf461b80cabb66060e8564d82c > > > > Committed: https://skia.googlesource.com/skia/+/5e1378d0e075a323144ba14e0a4cbcca35eccc69 > > TBR=joshualitt@google.com,egdaniel@google.com > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/21b2c53218ab25f4268e3992e51d916076a2a7ee TBR=joshualitt@google.com,egdaniel@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/873723009
* Revert of Move DstCopy on gpu into the GrXferProcessor. (patchset #11 ↵Gravatar bsalomon2015-02-05
| | | | | | | | | | | | | | | | | | | | | | | | id:200001 of https://codereview.chromium.org/885923002/) Reason for revert: Testing to see if reverting fixes 10.9 bots. Original issue's description: > Move DstCopy on gpu into the GrXferProcessor. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/74a11753604768bf461b80cabb66060e8564d82c > > Committed: https://skia.googlesource.com/skia/+/5e1378d0e075a323144ba14e0a4cbcca35eccc69 TBR=joshualitt@google.com,egdaniel@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/901663007
* Move DstCopy on gpu into the GrXferProcessor.Gravatar egdaniel2015-02-05
| | | | | | | | BUG=skia: Committed: https://skia.googlesource.com/skia/+/74a11753604768bf461b80cabb66060e8564d82c Review URL: https://codereview.chromium.org/885923002
* Revert "Move DstCopy on gpu into the GrXferProcessor."Gravatar egdaniel2015-02-04
| | | | | | | | | | | | | | This reverts commit 74a11753604768bf461b80cabb66060e8564d82c. TBR=joshualitt@google.com,bsalomon@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Committed: https://skia.googlesource.com/skia/+/3e9dfdb3784c0cbfecf7589a74aa9aff7ef40abd Review URL: https://codereview.chromium.org/896163003
* Revert of Revert "Move DstCopy on gpu into the GrXferProcessor." (patchset ↵Gravatar egdaniel2015-02-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | #1 id:1 of https://codereview.chromium.org/896163003/) Reason for revert: failed on my manual revert Original issue's description: > Revert "Move DstCopy on gpu into the GrXferProcessor." > > This reverts commit 74a11753604768bf461b80cabb66060e8564d82c. > > TBR=joshualitt@google.com,bsalomon@google.com > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/3e9dfdb3784c0cbfecf7589a74aa9aff7ef40abd TBR= NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/900913002
* Revert "Move DstCopy on gpu into the GrXferProcessor."Gravatar egdaniel2015-02-04
| | | | | | | | | | | | This reverts commit 74a11753604768bf461b80cabb66060e8564d82c. TBR=joshualitt@google.com,bsalomon@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/896163003
* Move DstCopy on gpu into the GrXferProcessor.Gravatar egdaniel2015-02-03
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/885923002
* Remove willReadDst from GrFragmentProcessor.Gravatar egdaniel2015-01-20
| | | | | | | | | | Since only XP's can read dst now, there is no reason to have this query on GrFP. This also triggered a chain reaction of cleaning up/removing unnecessary code elsewhere. BUG=skia: Review URL: https://codereview.chromium.org/851143003
* Add Xfer Processor for GrCustomXfermodesGravatar egdaniel2015-01-16
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/852203003
* Move XferEffects class to GrCustomXfermode fileGravatar egdaniel2015-01-15
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/844913003
* Add XP to handle the cases where we disable color write.Gravatar egdaniel2014-12-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/787233003
* Add an InvariantOutput for the XPF.Gravatar egdaniel2014-12-18
| | | | | | | | | | | The Invariant output holds information about final post blended color and other general information like will it blend with dst. Having this new struct allowed me to also remove some functions that were previously querying subsets of the invariant output. BUG=skia: Review URL: https://codereview.chromium.org/814933002
* Add Coverage Drawing XPGravatar egdaniel2014-12-17
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/808813002