tree 1cec074cfb143f49a883f545ff29dbcb4e24b8e8
parent 1a3adf848e61905c97bac5626bb0a197f7ddcc1b
author Kevin Lubick <kjlubick@google.com> 1686168891 -0400
committer SkCQ <skcq-be@skia-corp.google.com.iam.gserviceaccount.com> 1686176776 +0000

Decouple SkShaders from Ganesh backend

This moves all asFragmentProcessor methods from the src/shaders
and src/shaders/gradients into GrFragmentProcessors. As a requirement
to do so, all shaders have had a public header made with the class
declaration. Many classes required new getters to expose some
fields for the construction of the GrFragmentProcessor. I briefly
toyed with the idea of using friend functions, but decided against
it for 2 reasons: 1) the syntax was verbose and gnarly; 2) the
syntax would make the functions of GrFragmentProcessors callable
from other places and not be static / contained to just
GrFragmentProcessors.cpp.

Other notable changes:
 - SkShaderBase::GradientType::kColor removed, as it has been
   superseded by SkShaderBase::ShaderType::kColor for detecting
   "is this a color shader?" Callsites that needed the color
   now cast it to SkColorShader
 - SkPerlinNoiseShader class removed from public API
   (Chromium migrated in https://crrev.com/c/4591270) and
   used internally instead of SkPerlinNoiseShaderImpl for closer
   alignment with the ShaderType enum.
 - SkPerlinNoiseShader::PaintingData no longer uses #ifdefs
   to make the bitmaps for the GPU backends, but this is now
   explicitly done in a function generateBitmaps().
 - SkShaderBase::MatrixRec has been moved to the SkShaders
   namespace and had the Ganesh-specific apply() changed to
   applyForFragmentProcessor(). The Ganesh-parts (e.g. the creation
   of the GrMatrixEffect) were made the responsibility of
   the caller (e.g. in GrFragmentProcessors.cpp).
 - I thought it was strange that SkBitmapProcShader.h (but not
   the .cpp) was in public.bzl. I made that not necessary by
   #ifdef'ing the one include that was necessary removing
   other unnecessary ones. This is because G3 sets
   SK_DISABLE_LEGACY_SHADERCONTEXT

The following shader subclasses did not appear to have Ganesh
implementations and that is still the case:
 - SkEmptyShader
 - SpriteShader (appears SkVM only)
 - DitherShader (appears SkVM only)
 - SkTransformShader
 - SkTriColorShader
 - SkUpdatableColorShader

I enforced IWYU on src/shaders and all other new files I created
in this CL. This had some impact in wider files, but I do not
expect it to impact clients as no public #includes had #includes
removed.

Suggested Review Order:
 - SkShaderBase.h/.cpp, noting that much of the .cpp came from
   SkShader.cpp
 - GrFragmentProcessors.cpp, glancing at the relevant subclass
   .h and .cpp changes as necessary
 - SkPerlinNoise* and GrPerlinNoise* to make sure I didn't overlook
   something in the refactor/extraction
 - Another pass through other changes in src/shaders and
   src/shaders/gradients
 - All other files in any order.


Change-Id: Icf3db955d0653f97d7c793b167463162fb70d9f2
Bug: skia:14317
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/706216
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
