31namespace SkSL {
struct Program; }
68 static constexpr size_t kMaxStride = 1024;
69 static constexpr size_t kMaxAttributes = 8;
70 static constexpr size_t kStrideAlignment = 4;
71 static constexpr size_t kOffsetAlignment = 4;
72 static constexpr size_t kMaxVaryings = 6;
75 enum class Type : uint32_t {
90 enum class Type : uint32_t {
164 size_t uniformSize()
const;
176 const Child* findChild(std::string_view
name)
const;
179 const Uniform* findUniform(std::string_view
name)
const;
185 const Varying* findVarying(std::string_view
name)
const;
187 size_t stride()
const {
return fStride; }
194 enum class ColorType {
211 int passthroughLocalCoordsVaryingIndex,
212 uint32_t deadVaryingMask,
213 std::vector<Uniform> uniforms,
214 std::vector<Child> children,
215 std::unique_ptr<const SkSL::Program>,
216 std::unique_ptr<const SkSL::Program>,
227 const std::vector<Attribute> fAttributes;
228 const std::vector<Varying> fVaryings;
229 const std::vector<Uniform> fUniforms;
230 const std::vector<Child> fChildren;
231 const std::unique_ptr<const SkSL::Program> fVS;
232 const std::unique_ptr<const SkSL::Program> fFS;
233 const size_t fStride;
235 const int fPassthroughLocalCoordsVaryingIndex;
236 const uint32_t fDeadVaryingMask;
267 virtual size_t size()
const = 0;
284 virtual size_t size()
const = 0;
371 bool isValid()
const;
374 std::tuple<bool, SkString> validate()
const;
static std::unique_ptr< SkEncoder > Make(SkWStream *dst, const SkPixmap *src, const SkYUVAPixmaps *srcYUVA, const SkColorSpace *srcYUVAColorSpace, const SkJpegEncoder::Options &options)
static constexpr uint16_t kHalf
Type::kYUV Type::kRGBA() int(0.7 *637)
SkSpan< const Uniform > uniforms() const
SkSpan< const Child > children() const
SkSpan< const Attribute > attributes() const
SkColorSpace * colorSpace() const
virtual size_t size() const =0
virtual bool onUpdate(GrDirectContext *, const void *data, size_t offset, size_t size)=0
virtual size_t size() const =0
virtual bool onUpdate(GrDirectContext *, const void *data, size_t offset, size_t size)=0
SkMesh & operator=(const SkMesh &)
SkSpan< const ChildPtr > children() const
VertexBuffer * vertexBuffer() const
SkMesh & operator=(SkMesh &&)
size_t vertexCount() const
sk_sp< IndexBuffer > refIndexBuffer() const
size_t vertexOffset() const
sk_sp< VertexBuffer > refVertexBuffer() const
IndexBuffer * indexBuffer() const
size_t indexCount() const
sk_sp< const SkData > refUniforms() const
size_t indexOffset() const
const SkData * uniforms() const
SkMeshSpecification * spec() const
sk_sp< SkMeshSpecification > refSpec() const
SK_API sk_sp< SkMesh::IndexBuffer > CopyIndexBuffer(const sk_sp< SkMesh::IndexBuffer > &)
SK_API sk_sp< SkMesh::IndexBuffer > MakeIndexBuffer(const void *data, size_t size)
SK_API sk_sp< SkMesh::VertexBuffer > MakeVertexBuffer(const void *, size_t size)
SK_API sk_sp< SkMesh::VertexBuffer > CopyVertexBuffer(const sk_sp< SkMesh::VertexBuffer > &)
sk_sp< SkMeshSpecification > specification
static constexpr SkRect MakeEmpty()