aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/GrPorterDuffTest.cpp
Commit message (Collapse)AuthorAge
* Reland of add a ClassID function to GrBatch (patchset #1 id:1 of ↵Gravatar reed2015-09-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1353043002/ ) Reason for revert: DEPS roll seems to have landed w/o this revert, so revert it again Original issue's description: > Revert of add a ClassID function to GrBatch (patchset #5 id:80001 of https://codereview.chromium.org/1352813003/ ) > > Reason for revert: > Speculative revert to unblock DEPS roll > > Original issue's description: > > add a ClassID function to GrBatch > > > > BUG=skia: > > > > Committed: https://skia.googlesource.com/skia/+/4078d529e9e199eea13456db7bf3a63a104ab5b9 > > > > Committed: https://skia.googlesource.com/skia/+/eb44d53cf96a7eaf103a98d76079ce1f5495e343 > > TBR=robertphillips@google.com,bsalomon@google.com,joshualitt@google.com,joshualitt@chromium.org > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/48e3a45ade15c52c0c1a10cb00907dd444897745 TBR=robertphillips@google.com,bsalomon@google.com,joshualitt@google.com,joshualitt@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1344373005
* Revert of add a ClassID function to GrBatch (patchset #5 id:80001 of ↵Gravatar reed2015-09-17
| | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1352813003/ ) Reason for revert: Speculative revert to unblock DEPS roll Original issue's description: > add a ClassID function to GrBatch > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/4078d529e9e199eea13456db7bf3a63a104ab5b9 > > Committed: https://skia.googlesource.com/skia/+/eb44d53cf96a7eaf103a98d76079ce1f5495e343 TBR=robertphillips@google.com,bsalomon@google.com,joshualitt@google.com,joshualitt@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1353043002
* add a ClassID function to GrBatchGravatar joshualitt2015-09-17
| | | | | | | | BUG=skia: Committed: https://skia.googlesource.com/skia/+/4078d529e9e199eea13456db7bf3a63a104ab5b9 Review URL: https://codereview.chromium.org/1352813003
* Revert of add a ClassID function to GrBatch (patchset #5 id:80001 of ↵Gravatar joshualitt2015-09-17
| | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1352813003/ ) Reason for revert: breaks mac bot Original issue's description: > add a ClassID function to GrBatch > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/4078d529e9e199eea13456db7bf3a63a104ab5b9 TBR=robertphillips@google.com,bsalomon@google.com,joshualitt@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1345393003
* add a ClassID function to GrBatchGravatar joshualitt2015-09-17
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1352813003
* Add support for blending of LCD for all blend modes.Gravatar egdaniel2015-09-15
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1313623002
* Style Change: NULL->nullptrGravatar halcanary2015-08-27
| | | | | | DOCS_PREVIEW= https://skia.org/?cl=1316233002 Review URL: https://codereview.chromium.org/1316233002
* Make GrVertexBatch objects hold their own draws during GrDrawTarget flushGravatar bsalomon2015-08-17
| | | | | | NO_MERGE_BUILDS Review URL: https://codereview.chromium.org/1286043004
* Split GrDrawBatch and GrVertexBatch into their own filesGravatar bsalomon2015-08-13
| | | | | | TBR=joshualitt@google.com Review URL: https://codereview.chromium.org/1296483002
* Introduce GrBatch subclasses GrDrawBatch and GrVertexBatch to prepare for ↵Gravatar bsalomon2015-08-13
| | | | | | non-drawing batches Review URL: https://codereview.chromium.org/1293583002
* Check for xfer barriers in GrBatch, auto-issue barriers in GrGpuGravatar bsalomon2015-08-12
| | | | Review URL: https://codereview.chromium.org/1287973003
* Rename GrPipelineInfo to GrPipelineOptimizationsGravatar bsalomon2015-08-10
| | | | | | TBR=joshualitt@google.com Review URL: https://codereview.chromium.org/1274513005
* Make folder for batchesGravatar joshualitt2015-08-07
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1277233002
* Don't pass pipeline to GrBatch::generateGeometry()Gravatar bsalomon2015-08-06
| | | | | | R=joshualitt@google.com Review URL: https://codereview.chromium.org/1275083002
* Some cleanup in GrTextureProvider and GrResourceProvider.Gravatar bsalomon2015-07-31
| | | | Review URL: https://codereview.chromium.org/1261643004
* Makes GrPipelineInfo a class with query functions used by GrBatch subclasses.Gravatar bsalomon2015-07-08
| | | | | | Committed: https://skia.googlesource.com/skia/+/f5179a4c490bc787190321bd8ffdb0e6a4efa9ac Review URL: https://codereview.chromium.org/1213383005
* Revert of Rework GrPipelineInfo (patchset #7 id:120001 of ↵Gravatar bsalomon2015-07-08
| | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1213383005/) Reason for revert: breaking stuff! Original issue's description: > Makes GrPipelineInfo a class with query functions used by GrBatch subclasses. > > Committed: https://skia.googlesource.com/skia/+/f5179a4c490bc787190321bd8ffdb0e6a4efa9ac TBR=joshualitt@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1213013003
* Makes GrPipelineInfo a class with query functions used by GrBatch subclasses.Gravatar bsalomon2015-07-08
| | | | Review URL: https://codereview.chromium.org/1213383005
* Add support for creating texture backed images where Skia will delete the ↵Gravatar bsalomon2015-06-18
| | | | | | texture. Review URL: https://codereview.chromium.org/1187523005
* 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
* Add direct getter for GrCaps to GrContext.Gravatar bsalomon2015-05-29
| | | | | | | | TBR=joshualitt@google.com Committed: https://skia.googlesource.com/skia/+/9138c46e572085870638b6f7ad7fcdfcdf3cac99 Review URL: https://codereview.chromium.org/1149773005
* Revert of Add direct getter for GrCaps to GrContext. (patchset #4 id:60001 ↵Gravatar bsalomon2015-05-28
| | | | | | | | | | | | | | | | | | | | | of https://codereview.chromium.org/1149773005/) Reason for revert: Breaking Original issue's description: > Add direct getter for GrCaps to GrContext. > > TBR=joshualitt@google.com > > Committed: https://skia.googlesource.com/skia/+/9138c46e572085870638b6f7ad7fcdfcdf3cac99 TBR=joshualitt@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1164443002
* Add direct getter for GrCaps to GrContext.Gravatar bsalomon2015-05-28
| | | | | | TBR=joshualitt@google.com Review URL: https://codereview.chromium.org/1149773005
* 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
* 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 Fix LCD coverage regression in GrPorterDuffXPFactory (patchset #3 ↵Gravatar bungeman2015-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | id:40001 of https://codereview.chromium.org/1149883004/) Reason for revert: Reverting this fix to revert https://codereview.chromium.org/1124373002 Original issue's description: > Fix LCD coverage regression in GrPorterDuffXPFactory > > Fixes GrPorterDuffXPFactory to not use the blend table when getting > info about the LCD coverage XP. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/3e2d59ef36e1b9a63e524cf1b27d5f7bcfb5ff0b TBR=bsalomon@google.com,egdaniel@google.com,cdalton@nvidia.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1153803005
* 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
* Fix LCD coverage regression in GrPorterDuffXPFactoryGravatar cdalton2015-05-22
| | | | | | | | | Fixes GrPorterDuffXPFactory to not use the blend table when getting info about the LCD coverage XP. BUG=skia: Review URL: https://codereview.chromium.org/1149883004
* 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