aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/gpu/GrColor.h
Commit message (Collapse)AuthorAge
* Remove trailing whitespace.Gravatar Ben Wagner2017-10-09
| | | | | | | | | | | Also adds a presubmit to prevent adding trailing whitespace to source code in the future. Change-Id: I41a4df81487f6f00aa19b188f0cac6a3377efde6 Reviewed-on: https://skia-review.googlesource.com/57380 Reviewed-by: Ravi Mistry <rmistry@google.com> Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
* Support premul/unpremul of F16 during read/writePixelsGravatar Brian Osman2017-03-22
| | | | | | | | | | | | | | Added PremulOutput and UnpremulOutput FP helpers. These are used (rather than GrConfigConversionEffect) when working with FP16 textures (and will also be used for other configs that can't be round-tripped via rounding). BUG=skia:5853 Change-Id: I101592c26c4f0b379d5e5a8678ef7b2f08e6ad56 Reviewed-on: https://skia-review.googlesource.com/9980 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Revert "Revert "Start of rewrite of GrFragmentProcessor optimizations.""Gravatar Brian Salomon2017-01-27
| | | | | | | | | | | This reverts commit 052fd5158f7f85e478a9f87c45fecaacf7d0f5f3. Disables the test (of unused code) until platform-specific issues are addressed. Change-Id: I7aa23a07954fccf382aa07d28afcbffb0bebcd6d Reviewed-on: https://skia-review.googlesource.com/7656 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Revert "Start of rewrite of GrFragmentProcessor optimizations."Gravatar Ethan Nicholas2017-01-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 85eb4226a4cd8c10a0e3f3ba2f3a60efbb2dd61b. Reason for revert: test failures on Windows, e.g. https://chromium-swarm.appspot.com/task?id=33f9527484414110&refresh=10 Original change's description: > Start of rewrite of GrFragmentProcessor optimizations. > > This adds a replacement for computeInvariantOutput buts does not use it yet. The replacement allows for three types of optimizations: > > * known input color -> known output color for GrFP elimination > * tracking of whether all color processors modulate their input for the "tweak alpha" optimziation > * opaqueness tracking > > This loses some of the generality of computInvariantOutput. It does not track the known output status of individual color components (other than opaque alpha). It does not track whether GrFragmentProcessors read their input color. It doesn't allow a processor that will receive non-constant output to advertise that it produces a constant output. These could probably be added back in the unlikely case that they prove valuable. > > Unlike computeInvariantOutput the optimizations are decided at instantiation time and constant colors are expressed as GrColor4f rather than GrColor. > > Change-Id: I684d3f9050693dde2d28154fa695e049ed8cf61a > Reviewed-on: https://skia-review.googlesource.com/7481 > Reviewed-by: Greg Daniel <egdaniel@google.com> > Commit-Queue: Brian Salomon <bsalomon@google.com> > TBR=egdaniel@google.com,bsalomon@google.com,brianosman@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I2390df257456013fa74137cb5d7b5a93820c291e Reviewed-on: https://skia-review.googlesource.com/7652 Commit-Queue: Ethan Nicholas <ethannicholas@google.com> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
* Start of rewrite of GrFragmentProcessor optimizations.Gravatar Brian Salomon2017-01-27
| | | | | | | | | | | | | | | | | This adds a replacement for computeInvariantOutput buts does not use it yet. The replacement allows for three types of optimizations: * known input color -> known output color for GrFP elimination * tracking of whether all color processors modulate their input for the "tweak alpha" optimziation * opaqueness tracking This loses some of the generality of computInvariantOutput. It does not track the known output status of individual color components (other than opaque alpha). It does not track whether GrFragmentProcessors read their input color. It doesn't allow a processor that will receive non-constant output to advertise that it produces a constant output. These could probably be added back in the unlikely case that they prove valuable. Unlike computeInvariantOutput the optimizations are decided at instantiation time and constant colors are expressed as GrColor4f rather than GrColor. Change-Id: I684d3f9050693dde2d28154fa695e049ed8cf61a Reviewed-on: https://skia-review.googlesource.com/7481 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Cleanup GrPixelConfig helper functionsGravatar Brian Osman2017-01-12
| | | | | | | | | | | | Remove unused functions, and convert another to switch style. BUG=skia: Change-Id: I93edbece54f147d868801bb008e6f935a8cb997f Reviewed-on: https://skia-review.googlesource.com/6947 Reviewed-by: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Remove kIndex_8_GrPixelConfigGravatar Brian Osman2017-01-12
| | | | | | | | | | | | It's been disabled for a long time (GPUs don't support it, and it actually caused performance regression in testing). BUG=skia:4333 Change-Id: I6e2bf755f765168fd616de6c9c023c6fbd5abd20 Reviewed-on: https://skia-review.googlesource.com/6897 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Add Gray8 pixel configGravatar Brian Osman2017-01-10
| | | | | | | | | | | | | | | | | | | | | | | This is still just linear (non-sRGB), but adding sRGB will be the next step. I've verified that this is really making R8 textures when uploading Gray8 bitmaps. Tests pass, and the all_bitmap_configs GM still renders correctly (unlike when we just mapped Gray8 to Alpha8). This adds another pixel config, which could grow our cache footprint, but the benefits of not using 4bpp for 1bpp data should outweigh that? Re-land of https://skia-review.googlesource.com/c/6817/, with fixes for Vulkan. BUG=skia:6110 Change-Id: Ia763c276808be28027ed0005ee4b88637306583f Reviewed-on: https://skia-review.googlesource.com/6839 Reviewed-by: Greg Daniel <egdaniel@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Revert "Add Gray8 pixel config"Gravatar Brian Osman2017-01-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit f2956459f707de596dcb2c79a7ee1fa62d599c0d. Reason for revert: GM and image failures on some bots (rendering red, not gray). Original change's description: > Add Gray8 pixel config > > This is still just linear (non-sRGB), but adding sRGB will > be the next step. I've verified that this is really making > R8 textures when uploading Gray8 bitmaps. Tests pass, and > the all_bitmap_configs GM still renders correctly (unlike > when we just mapped Gray8 to Alpha8). > > This adds another pixel config, which could grow our cache > footprint, but the benefits of not using 4bpp for 1bpp data > should outweigh that? > > BUG=skia:6110 > > Change-Id: I4fc4c2479fc25f1d278e174a9bb5b542a0cb184c > Reviewed-on: https://skia-review.googlesource.com/6817 > Reviewed-by: Brian Salomon <bsalomon@google.com> > Commit-Queue: Brian Osman <brianosman@google.com> > TBR=bsalomon@google.com,robertphillips@google.com,brianosman@google.com,reviews@skia.org BUG=skia:6110 NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I95a4fc0450a569d5791f6bceb7fae61c7e5eba61 Reviewed-on: https://skia-review.googlesource.com/6838 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Add Gray8 pixel configGravatar Brian Osman2017-01-10
| | | | | | | | | | | | | | | | | | | This is still just linear (non-sRGB), but adding sRGB will be the next step. I've verified that this is really making R8 textures when uploading Gray8 bitmaps. Tests pass, and the all_bitmap_configs GM still renders correctly (unlike when we just mapped Gray8 to Alpha8). This adds another pixel config, which could grow our cache footprint, but the benefits of not using 4bpp for 1bpp data should outweigh that? BUG=skia:6110 Change-Id: I4fc4c2479fc25f1d278e174a9bb5b542a0cb184c Reviewed-on: https://skia-review.googlesource.com/6817 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Revert "Revert "Add integer texture support.""Gravatar Brian Salomon2016-11-11
| | | | | | | | | | | | | This reverts commit 9c7edb8311409a141b0dc1d5e480c68c629f1997. Fixes ASAN errors GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4736 Change-Id: I1b1dae754d357b01da7169c8e7c59d7d8d8a10f6 Reviewed-on: https://skia-review.googlesource.com/4736 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Revert "Add integer texture support."Gravatar Leon Scroggins2016-11-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 434c534bd0ec08cb355fecfb6d2110197b523e74. Reason for revert: Undefined behavior. From https://uberchromegw.corp.google.com/i/client.skia/builders/Test-Ubuntu-Clang-Golo-GPU-GT610-x86_64-Debug-ASAN/builds/1272/steps/test_skia%20on%20Ubuntu/logs/stdio ../../../tests/IntTextureTest.cpp:51:44: runtime error: left shift of negative value -1 #0 0x2257480 in test_IntTexture(skiatest::Reporter*, sk_gpu_test::ContextInfo const&) (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x2257480) #1 0x1ca1066 in skiatest::RunWithGPUTestContexts(void (*)(skiatest::Reporter*, sk_gpu_test::ContextInfo const&), bool (*)(sk_gpu_test::GrContextFactory::ContextType), skiatest::Reporter*, sk_gpu_test::GrContextFactory*) (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x1ca1066) #2 0x1ca080d in run_test(skiatest::Test) (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x1ca080d) #3 0x1c9e5e9 in dm_main() (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x1c9e5e9) #4 0x7f2d2ba8df44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287 #5 0x1bb3028 in _start (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x1bb3028) SUMMARY: AddressSanitizer: undefined-behavior ../../../tests/IntTextureTest.cpp:51:44 in step returned non-zero exit code: 1 Original change's description: > Add integer texture support. > > This allows us to create integer textures and sample them from a GrProcessor's code. > > Filtering is limited to NEAREST. > > Adds tests for reading/writing pixels, copying, and drawing. These operations are not allowed to convert to fixed/float configs. > > Vulkan support is TBD. > > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4348 > > Change-Id: If38d89a03285d4bd98d1f14f9638b0320977e43d > Reviewed-on: https://skia-review.googlesource.com/4348 > Commit-Queue: Brian Salomon <bsalomon@google.com> > Reviewed-by: Chris Dalton <csmartdalton@google.com> > TBR=bsalomon@google.com,csmartdalton@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I39f1a0a0dd3e6cde1143c8cc1217d2e3d5977b21 Reviewed-on: https://skia-review.googlesource.com/4663 Commit-Queue: Leon Scroggins <scroggo@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com>
* Add integer texture support.Gravatar Brian Salomon2016-11-10
| | | | | | | | | | | | | | | | | | This allows us to create integer textures and sample them from a GrProcessor's code. Filtering is limited to NEAREST. Adds tests for reading/writing pixels, copying, and drawing. These operations are not allowed to convert to fixed/float configs. Vulkan support is TBD. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4348 Change-Id: If38d89a03285d4bd98d1f14f9638b0320977e43d Reviewed-on: https://skia-review.googlesource.com/4348 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Chris Dalton <csmartdalton@google.com>
* GrConstColorProcessor uses 4f colors in the destination spaceGravatar Brian Osman2016-10-26
| | | | | | | | | | | | | | | | | | | | Many places that construct one are explicitly specifying opaque white or transparent black, which we can assume (based on the semantics of the operation) should remain (0,0,0,0) or (1,1,1,1), so that's simple. In other cases, we convert our source color to destination space. One wrinkle is tht SkColorFilter now needs to know the destination color space, due to SkModeColorFilter. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3903 Change-Id: I4969c0260588f4021300733f601b47dc606adf79 Reviewed-on: https://skia-review.googlesource.com/3903 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Push usage of GrColor4f into OverrideInputGravatar brianosman2016-09-08
| | | | | | | | | Just a change to preserve precision. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2324553002 Review-Url: https://codereview.chromium.org/2324553002
* GrColor4f is yet another 4f color type, unfortunately.Gravatar brianosman2016-06-24
| | | | | | | | | | | | - Sk4f would be my choice, but it's not allowed in include/ - SkColor4f and SkPM4f are specified to be unpremultiplied/premultiplied, whereas GrColor (and GrColor4f) are either, depending on context. This adds 12 bytes to GrPaint. Not sure if we want to pay that price. The precision loss for a single value (vs. in a gradient, etc...) may not justify changing the storage type here. Easy enough to back that part out, while still keeping the 4f intermediate type for the helper math that it adds, and for storage and parameter passing in other locations. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2088303002 Review-Url: https://codereview.chromium.org/2088303002
* sRGB support in Ganesh. Several pieces:Gravatar brianosman2016-03-21
| | | | | | | | | | | | | | | | | | | | | | sRGB support now also requires GL_EXT_texture_sRGB_decode, which allows us to disable sRGB -> Linear conversion when reading textures. This gives us an easy way to support "legacy" L32 mode. We disable decoding based on the pixel config of the render target. Textures can override that behavior (specifically for format-conversion draws where we want that behavior). Added sBGRA pixel config, which is not-really-a-format. It's just sRGBA internally, and the external format is BGR order, so TexImage calls will swizzle correctly. This lets us interact with sRGB raster surfaces on BGR platforms. Devices without sRGB support behave like they always have: conversion from color type and profile type ignores sRGB and always returns linear pixel configs. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1789663002 Review URL: https://codereview.chromium.org/1789663002
* Revert of sRGB support in Ganesh. Several pieces: (patchset #12 id:220001 of ↵Gravatar brianosman2016-03-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1789663002/ ) Reason for revert: We're getting sRGB non-8888 configs? Original issue's description: > sRGB support in Ganesh. Several pieces: > > sRGB support now also requires GL_EXT_texture_sRGB_decode, which allows > us to disable sRGB -> Linear conversion when reading textures. This gives > us an easy way to support "legacy" L32 mode. We disable decoding based on > the pixel config of the render target. Textures can override that behavior > (specifically for format-conversion draws where we want that behavior). > > Added sBGRA pixel config, which is not-really-a-format. It's just sRGBA > internally, and the external format is BGR order, so TexImage calls will > swizzle correctly. This lets us interact with sRGB raster surfaces on BGR > platforms. > > Devices without sRGB support behave like they always have: conversion from > color type and profile type ignores sRGB and always returns linear pixel > configs. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1789663002 > > Committed: https://skia.googlesource.com/skia/+/9e3f1bf4e5cd8fc59554f986f36d6b034e99f9eb TBR=reed@google.com,bsalomon@google.com,robertphillips@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1814533003
* sRGB support in Ganesh. Several pieces:Gravatar brianosman2016-03-17
| | | | | | | | | | | | | | | | | | | | | | sRGB support now also requires GL_EXT_texture_sRGB_decode, which allows us to disable sRGB -> Linear conversion when reading textures. This gives us an easy way to support "legacy" L32 mode. We disable decoding based on the pixel config of the render target. Textures can override that behavior (specifically for format-conversion draws where we want that behavior). Added sBGRA pixel config, which is not-really-a-format. It's just sRGBA internally, and the external format is BGR order, so TexImage calls will swizzle correctly. This lets us interact with sRGB raster surfaces on BGR platforms. Devices without sRGB support behave like they always have: conversion from color type and profile type ignores sRGB and always returns linear pixel configs. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1789663002 Review URL: https://codereview.chromium.org/1789663002
* 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
* 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
* 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
* 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
* Add RGBA half float texture format.Gravatar jvanverth2015-05-21
| | | | | | BUG=skia:3829 Review URL: https://codereview.chromium.org/1148243002
* Add device space skshader GM to test kDevice_GrCoordSetGravatar bsalomon2014-12-29
| | | | Review URL: https://codereview.chromium.org/816003002
* Add sRGB texture support.Gravatar jvanverth2014-12-22
| | | | Review URL: https://codereview.chromium.org/791823003
* This cl moves color and coverage off of drawstate. In an effort to keep ↵Gravatar joshualitt2014-12-09
| | | | | | | | | | this CL manageable, I have left the compute invariant input / output in a bit of a strange state(fixing this will be complicated). In addition, NVPR makes this very complicated, and I haven't quite figured out a good way to handle it, so for now color and coverage DO live on optstate, but I will figure out some way to refactor that in future CLs. BUG=skia: Review URL: https://codereview.chromium.org/783763002
* Fix GrUnPreMulColor.Gravatar egdaniel2014-12-08
| | | | | | | | Current version incorrectly unpacked the resulting sk unpremulled color into rgba. BUG=skia:3208 Review URL: https://codereview.chromium.org/787713002
* Add support for half float alpha textures.Gravatar jvanverth2014-12-05
| | | | | | | | | This allows us to create distance field textures with better precision, which may help text quality. BUG=skia:3103 Review URL: https://codereview.chromium.org/762923003
* Add function to return an unpremuled version of a GrColorGravatar egdaniel2014-12-01
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/773553002
* Enable unused param checking for public includes.Gravatar djsollen2014-11-14
| | | | | | | | | | This CL cleans up the existing violations and enables the build time check to ensure that we don't regress. The motiviation behind this change is to allow clients who include our headers to be able to build with this warning enabled. Review URL: https://codereview.chromium.org/726923002
* Send coverage VA as floats instead of bytesGravatar egdaniel2014-11-06
| | | | | | | | NOTREECHECKS=True BUG=skia: Review URL: https://codereview.chromium.org/700943005
* Always use both a color and coverage attribute in GrAARectRenderer.Gravatar bsalomon2014-08-11
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/435743002
* Add new ASTC pixel configGravatar krajcevski2014-07-16
| | | | | | | | R=bsalomon@google.com, robertphillips@google.com Author: krajcevski@google.com Review URL: https://codereview.chromium.org/399623004
* 32 bpp floating point texturesGravatar joshualitt2014-07-16
| | | | | | | | | | | This is VERY preliminary, but it was sufficient for me to get 32 bit floating point textures in a sample app BUG=skia: R=bsalomon@chromium.org, bsalomon@google.com Author: joshualitt@chromium.org Review URL: https://codereview.chromium.org/359803003
* R11 EAC texture compression is introduced as part of the OpenGL ES 3.0 spec. ↵Gravatar krajcevski2014-06-30
| | | | | | | | | | This is a format that will likely be required on most mobile phones in the upcoming years, making it better to target than LATC, which is only available on NVIDIA GPUs. R=bsalomon@google.com, robertphillips@google.com Author: krajcevski@google.com Review URL: https://codereview.chromium.org/330763008
* Remove GrIsPow2 in favor of SkIsPow2.Gravatar tfarina2014-06-06
| | | | | | | | | | | | | Looks like there is no good reason to have two copies of this function doing the same thing with different name. BUG=None TEST=make tests R=bsalomon@google.com Author: tfarina@chromium.org Review URL: https://codereview.chromium.org/318873002
* Move the LATC and ETC1 enum values to GrPixelConfig. I also tried to put in ↵Gravatar commit-bot@chromium.org2014-05-30
| | | | | | | | | | | | | | checks in a few places to make sure that we weren't using these pixel configurations in places that we shouldn't be. LATC is a DXT-esque alpha compression format that goes by a few other names (RGTC, 3DC). It might be useful to investigate using it to compress the alpha masks that we get from software rasterization. This patch set adds enums for that and recognition whether or not the device can support it. R=bsalomon@google.com, robertphillips@google.com Author: krajcevski@google.com Review URL: https://codereview.chromium.org/304743004 git-svn-id: http://skia.googlecode.com/svn/trunk@14991 2bbb7eff-a529-9590-31e7-b0007b416f81
* Convert GrCrash->SkFAIL GrDebugCrash->SkDEBUGFAILGravatar commit-bot@chromium.org2014-04-30
| | | | | | | | | | R=robertphillips@google.com, reed@google.com, mtklein@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/257393004 git-svn-id: http://skia.googlecode.com/svn/trunk@14460 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add discard API to SkCanvas, plumb it to glDiscardFramebuffer()Gravatar commit-bot@chromium.org2014-03-28
| | | | | | | | | | | BUG=skia:2349 R=robertphillips@google.com, reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/211683002 git-svn-id: http://skia.googlecode.com/svn/trunk@13976 2bbb7eff-a529-9590-31e7-b0007b416f81
* Replace uses of GrAssert by SkASSERT.Gravatar tfarina@chromium.org2013-08-17
| | | | | | | | R=bsalomon@google.com Review URL: https://codereview.chromium.org/22850006 git-svn-id: http://skia.googlecode.com/svn/trunk@10789 2bbb7eff-a529-9590-31e7-b0007b416f81
* Expand modulate, add, subtract, extract component glsl helpers.Gravatar bsalomon@google.com2013-04-18
| | | | | | Review URL: https://codereview.chromium.org/13895006 git-svn-id: http://skia.googlecode.com/svn/trunk@8755 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make GrGLShaderBuilder::TextureSampler extract only required info from ↵Gravatar bsalomon@google.com2013-03-28
| | | | | | | | | | | GrTextureAccess. This will make it possible to init a TextureSampler without a texture or a specific config. Also unify two separate bitfields of color components in GPU code. Review URL: https://codereview.chromium.org/13121002 git-svn-id: http://skia.googlecode.com/svn/trunk@8428 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2013-01-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7406 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add GrColor to RGBA float helper funcGravatar bsalomon@google.com2012-09-17
| | | | | | | | | | Review URL: https://codereview.appspot.com/6518044/ git-svn-id: http://skia.googlecode.com/svn/trunk@5572 2bbb7eff-a529-9590-31e7-b0007b416f81
* [GPU] Add explicit byte order and PM vs. UPM 8888 configsGravatar bsalomon@google.com2011-11-07
| | | | | | | | Review URL: http://codereview.appspot.com/5347042/ git-svn-id: http://skia.googlecode.com/svn/trunk@2618 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move gpu/include/* to include/gpu and gpu/src/* to src/gpuGravatar bsalomon@google.com2011-10-12
Review URL: http://codereview.appspot.com/5250070/ git-svn-id: http://skia.googlecode.com/svn/trunk@2471 2bbb7eff-a529-9590-31e7-b0007b416f81