Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | List of all members
skgpu::graphite::PrecompileLocalMatrixShader Class Reference
Inheritance diagram for skgpu::graphite::PrecompileLocalMatrixShader:
skgpu::graphite::PrecompileShader skgpu::graphite::PrecompileBase SkRefCnt SkRefCntBase

Public Types

enum class  Flags { kNone , kIncludeWithOutVariant }
 
- Public Types inherited from skgpu::graphite::PrecompileBase
enum class  Type {
  kBlender , kColorFilter , kImageFilter , kMaskFilter ,
  kShader
}
 

Public Member Functions

 PrecompileLocalMatrixShader (SkSpan< const sk_sp< PrecompileShader > > wrapped, Flags flags=Flags::kNone)
 
bool isConstant (int desiredCombination) const override
 
- Public Member Functions inherited from skgpu::graphite::PrecompileShader
 PrecompileShader ()
 
sk_sp< PrecompileShadermakeWithLocalMatrix ()
 
sk_sp< PrecompileShadermakeWithColorFilter (sk_sp< PrecompileColorFilter >)
 
sk_sp< PrecompileShadermakeWithWorkingColorSpace (sk_sp< SkColorSpace >)
 
sk_sp< PrecompileShadermakeWithCTM ()
 
- Public Member Functions inherited from skgpu::graphite::PrecompileBase
 PrecompileBase (Type type)
 
Type type () const
 
int numCombinations () const
 
PrecompileBasePriv priv ()
 
const PrecompileBasePriv priv () const
 
- Public Member Functions inherited from SkRefCntBase
 SkRefCntBase ()
 
virtual ~SkRefCntBase ()
 
bool unique () const
 
void ref () const
 
void unref () const
 

Private Member Functions

bool isALocalMatrixShader () const override
 
int numIntrinsicCombinations () const override
 
int numChildCombinations () const override
 
void addToKey (const KeyContext &keyContext, PaintParamsKeyBuilder *builder, PipelineDataGatherer *gatherer, int desiredCombination) const override
 

Additional Inherited Members

- Static Protected Member Functions inherited from skgpu::graphite::PrecompileBase
template<typename T >
static std::pair< sk_sp< T >, intSelectOption (SkSpan< const sk_sp< T > > options, int desiredOption)
 
template<typename T >
static void AddToKey (const KeyContext &, PaintParamsKeyBuilder *, PipelineDataGatherer *, SkSpan< const sk_sp< T > > options, int desiredOption)
 

Detailed Description

Definition at line 669 of file FactoryFunctions.cpp.

Member Enumeration Documentation

◆ Flags

Enumerator
kNone 
kIncludeWithOutVariant 

Definition at line 671 of file FactoryFunctions.cpp.

Constructor & Destructor Documentation

◆ PrecompileLocalMatrixShader()

skgpu::graphite::PrecompileLocalMatrixShader::PrecompileLocalMatrixShader ( SkSpan< const sk_sp< PrecompileShader > >  wrapped,
Flags  flags = Flags::kNone 
)
inline

Definition at line 676 of file FactoryFunctions.cpp.

678 : fWrapped(wrapped.begin(), wrapped.end())
679 , fFlags(flags) {
680 fNumWrappedCombos = 0;
681 for (const auto& s : fWrapped) {
682 fNumWrappedCombos += s->numCombinations();
683 }
684 }
static sk_sp< GrTextureProxy > wrapped(skiatest::Reporter *reporter, GrRecordingContext *rContext, GrProxyProvider *proxyProvider, SkBackingFit fit)
struct MyStruct s
FlutterSemanticsFlag flags

Member Function Documentation

◆ addToKey()

void skgpu::graphite::PrecompileLocalMatrixShader::addToKey ( const KeyContext keyContext,
PaintParamsKeyBuilder builder,
PipelineDataGatherer gatherer,
int  desiredCombination 
) const
inlineoverrideprivatevirtual

Implements skgpu::graphite::PrecompileBase.

Definition at line 721 of file FactoryFunctions.cpp.

724 {
725 SkASSERT(desiredCombination < this->numCombinations());
726
727 int desiredLMCombination, desiredWrappedCombination;
728
729 if (fFlags != Flags::kIncludeWithOutVariant) {
730 desiredLMCombination = kWithLocalMatrix;
731 desiredWrappedCombination = desiredCombination;
732 } else {
733 desiredLMCombination = desiredCombination % kNumIntrinsicCombinations;
734 desiredWrappedCombination = desiredCombination / kNumIntrinsicCombinations;
735 }
736 SkASSERT(desiredWrappedCombination < fNumWrappedCombos);
737
738 if (desiredLMCombination == kWithLocalMatrix) {
739 LocalMatrixShaderBlock::LMShaderData kIgnoredLMShaderData(SkMatrix::I());
740
741 LocalMatrixShaderBlock::BeginBlock(keyContext, builder, gatherer, kIgnoredLMShaderData);
742 }
743
744 AddToKey<PrecompileShader>(keyContext, builder, gatherer, fWrapped,
745 desiredWrappedCombination);
746
747 if (desiredLMCombination == kWithLocalMatrix) {
748 builder->endBlock();
749 }
750 }
#define SkASSERT(cond)
Definition SkAssert.h:116
static const SkMatrix & I()
static void BeginBlock(const KeyContext &, PaintParamsKeyBuilder *, PipelineDataGatherer *, const LMShaderData &)

◆ isALocalMatrixShader()

bool skgpu::graphite::PrecompileLocalMatrixShader::isALocalMatrixShader ( ) const
inlineoverrideprivatevirtual

Reimplemented from skgpu::graphite::PrecompileBase.

Definition at line 710 of file FactoryFunctions.cpp.

710{ return true; }

◆ isConstant()

bool skgpu::graphite::PrecompileLocalMatrixShader::isConstant ( int  desiredCombination) const
inlineoverridevirtual

Reimplemented from skgpu::graphite::PrecompileShader.

Definition at line 686 of file FactoryFunctions.cpp.

686 {
687 SkASSERT(desiredCombination < this->numCombinations());
688
689 /*
690 * Regardless of whether the LocalMatrixShader elides itself or not, we always want
691 * the Constantness of the wrapped shader.
692 */
693 int desiredWrappedCombination = desiredCombination / kNumIntrinsicCombinations;
694 SkASSERT(desiredWrappedCombination < fNumWrappedCombos);
695
696 auto wrapped = PrecompileBase::SelectOption(SkSpan(fWrapped), desiredWrappedCombination);
697 if (wrapped.first) {
698 return wrapped.first->isConstant(wrapped.second);
699 }
700
701 return false;
702 }
static std::pair< sk_sp< T >, int > SelectOption(SkSpan< const sk_sp< T > > options, int desiredOption)
Definition Precompile.h:99

◆ numChildCombinations()

int skgpu::graphite::PrecompileLocalMatrixShader::numChildCombinations ( ) const
inlineoverrideprivatevirtual

Reimplemented from skgpu::graphite::PrecompileBase.

Definition at line 719 of file FactoryFunctions.cpp.

719{ return fNumWrappedCombos; }

◆ numIntrinsicCombinations()

int skgpu::graphite::PrecompileLocalMatrixShader::numIntrinsicCombinations ( ) const
inlineoverrideprivatevirtual

Reimplemented from skgpu::graphite::PrecompileBase.

Definition at line 712 of file FactoryFunctions.cpp.

712 {
713 if (fFlags != Flags::kIncludeWithOutVariant) {
714 return 1; // just kWithLocalMatrix
715 }
716 return kNumIntrinsicCombinations;
717 }

The documentation for this class was generated from the following file: