8#ifndef SkMeshPriv_DEFINED
9#define SkMeshPriv_DEFINED
18 using ColorType = SkMeshSpecification::ColorType;
21 return SkSpan(spec.fVaryings);
35 return spec.fColorSpace.
get();
66 return spec.fPassthroughLocalCoordsVaryingIndex;
77 return (1 << v) & spec.fDeadVaryingMask;
91 virtual const void*
peek()
const {
return nullptr; }
99template <
typename Base>
class CpuBuffer final :
public Base {
105 const void*
peek()
const override {
return fData->
data(); }
107 size_t size()
const override {
return fData->
size(); }
142 std::memcpy(SkTAddOffset<void>(fData->writable_data(),
offset), data, size);
constexpr size_t SkToSizeT(S x)
const void * data() const
static sk_sp< SkData > MakeWithCopy(const void *data, size_t length)
static sk_sp< SkData > MakeZeroInitialized(size_t length)
Buffer(const Buffer &)=delete
virtual bool isGaneshBacked() const
Buffer & operator=(const Buffer &)=delete
virtual const void * peek() const
~CpuBuffer() override=default
bool onUpdate(GrDirectContext *, const void *data, size_t offset, size_t size) override
const void * peek() const override
size_t size() const override
static sk_sp< Base > Make(const void *data, size_t size)
static int PassthroughLocalCoordsVaryingIndex(const SkMeshSpecification &spec)
static bool HasColors(const SkMeshSpecification &spec)
static SkSpan< const Varying > Varyings(const SkMeshSpecification &spec)
static const SkSL::Program * FS(const SkMeshSpecification &spec)
static bool VaryingIsDead(const SkMeshSpecification &spec, int v)
static int Hash(const SkMeshSpecification &spec)
static const SkSL::Program * VS(const SkMeshSpecification &spec)
static ColorType GetColorType(const SkMeshSpecification &spec)
static SkSLType VaryingTypeAsSLType(Varying::Type type)
static SkAlphaType AlphaType(const SkMeshSpecification &spec)
static SkColorSpace * ColorSpace(const SkMeshSpecification &spec)
static SkSLType AttrTypeAsSLType(Attribute::Type type)