Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
SkSL::PointerLValue Class Reference
Inheritance diagram for SkSL::PointerLValue:
SkSL::SPIRVCodeGenerator::LValue

Public Member Functions

 PointerLValue (SPIRVCodeGenerator &gen, SpvId pointer, bool isMemoryObject, SpvId type, SPIRVCodeGenerator::Precision precision, SpvStorageClass_ storageClass)
 
SpvId getPointer () override
 
bool isMemoryObjectPointer () const override
 
SpvStorageClass storageClass () const override
 
SpvId load (OutputStream &out) override
 
void store (SpvId value, OutputStream &out) override
 
- Public Member Functions inherited from SkSL::SPIRVCodeGenerator::LValue
virtual ~LValue ()
 
virtual bool applySwizzle (const ComponentArray &components, const Type &newType)
 

Detailed Description

Definition at line 3048 of file SkSLSPIRVCodeGenerator.cpp.

Constructor & Destructor Documentation

◆ PointerLValue()

SkSL::PointerLValue::PointerLValue ( SPIRVCodeGenerator gen,
SpvId  pointer,
bool  isMemoryObject,
SpvId  type,
SPIRVCodeGenerator::Precision  precision,
SpvStorageClass_  storageClass 
)
inline

Definition at line 3050 of file SkSLSPIRVCodeGenerator.cpp.

3052 : fGen(gen)
3053 , fPointer(pointer)
3054 , fIsMemoryObject(isMemoryObject)
3055 , fType(type)
3056 , fPrecision(precision)
3057 , fStorageClass(storageClass) {}
SpvStorageClass storageClass() const override
Definition gen.py:1

Member Function Documentation

◆ getPointer()

SpvId SkSL::PointerLValue::getPointer ( )
inlineoverridevirtual

Reimplemented from SkSL::SPIRVCodeGenerator::LValue.

Definition at line 3059 of file SkSLSPIRVCodeGenerator.cpp.

3059 {
3060 return fPointer;
3061 }

◆ isMemoryObjectPointer()

bool SkSL::PointerLValue::isMemoryObjectPointer ( ) const
inlineoverridevirtual

Reimplemented from SkSL::SPIRVCodeGenerator::LValue.

Definition at line 3063 of file SkSLSPIRVCodeGenerator.cpp.

3063 {
3064 return fIsMemoryObject;
3065 }

◆ load()

SpvId SkSL::PointerLValue::load ( OutputStream out)
inlineoverridevirtual

Implements SkSL::SPIRVCodeGenerator::LValue.

Definition at line 3071 of file SkSLSPIRVCodeGenerator.cpp.

3071 {
3072 return fGen.writeOpLoad(fType, fPrecision, fPointer, out);
3073 }

◆ storageClass()

SpvStorageClass SkSL::PointerLValue::storageClass ( ) const
inlineoverridevirtual

Implements SkSL::SPIRVCodeGenerator::LValue.

Definition at line 3067 of file SkSLSPIRVCodeGenerator.cpp.

3067 {
3068 return fStorageClass;
3069 }

◆ store()

void SkSL::PointerLValue::store ( SpvId  value,
OutputStream out 
)
inlineoverridevirtual

Implements SkSL::SPIRVCodeGenerator::LValue.

Definition at line 3075 of file SkSLSPIRVCodeGenerator.cpp.

3075 {
3076 if (!fIsMemoryObject) {
3077 // We are going to write into an access chain; this could represent one component of a
3078 // vector, or one element of an array. This has the potential to invalidate other,
3079 // *unknown* elements of our store cache. (e.g. if the store cache holds `%50 = myVec4`,
3080 // and we store `%60 = myVec4.z`, this invalidates the cached value for %50.) To avoid
3081 // relying on stale data, reset the store cache entirely when this happens.
3082 fGen.fStoreCache.reset();
3083 }
3084
3085 fGen.writeOpStore(fStorageClass, fPointer, value, out);
3086 }

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