| /* |
| * Copyright 2023 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkMeshGanesh_DEFINED |
| #define SkMeshGanesh_DEFINED |
| |
| #include "include/core/SkMesh.h" |
| #include "include/core/SkRefCnt.h" |
| #include "include/private/base/SkAPI.h" |
| |
| #include <cstddef> |
| |
| class GrDirectContext; |
| |
| namespace SkMeshes { |
| /** |
| * Makes a GPU-backed index buffer to be used with SkMeshes. |
| * |
| * @param GrDirectContext* If non-null, the data will be uploaded to the corresponding GPU and the |
| * returned buffer will only be compatible with surfaces using the same |
| * context. If null, the data will be uploaded to a CPU buffer. |
| * @param data The data used to populate the buffer, or nullptr to create a zero- |
| * initialized buffer. |
| * @param size Both the size of the data in 'data' and the size of the resulting |
| * buffer. |
| */ |
| SK_API sk_sp<SkMesh::IndexBuffer> MakeIndexBuffer(GrDirectContext*, const void* data, size_t size); |
| |
| /** |
| * Makes a copy of an index buffer. The copy will be GPU backed if the context is non-null. |
| */ |
| SK_API sk_sp<SkMesh::IndexBuffer> CopyIndexBuffer(GrDirectContext*, sk_sp<SkMesh::IndexBuffer>); |
| |
| /** |
| * Makes a GPU-backed vertex buffer to be used with SkMeshes. |
| * |
| * @param GrDirectContext* If non-null, the data will be uploaded to the corresponding GPU and the |
| * returned buffer will only be compatible with surfaces using the same |
| * context. If null, the data will be uploaded to a CPU buffer. |
| * @param data The data used to populate the buffer, or nullptr to create a zero- |
| * initialized buffer. |
| * @param size Both the size of the data in 'data' and the size of the resulting |
| * buffer. |
| */ |
| SK_API sk_sp<SkMesh::VertexBuffer> MakeVertexBuffer(GrDirectContext*, const void*, size_t size); |
| |
| /** |
| * Makes a copy of a vertex buffer. The copy will be GPU backed if the context is non-null. |
| */ |
| SK_API sk_sp<SkMesh::VertexBuffer> CopyVertexBuffer(GrDirectContext*, sk_sp<SkMesh::VertexBuffer>); |
| } // namespace SkMeshes |
| |
| #endif |