1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2023 Google LLC 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef SkMeshGanesh_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define SkMeshGanesh_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkMesh.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 13*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/base/SkAPI.h" 14*c8dee2aaSAndroid Build Coastguard Worker 15*c8dee2aaSAndroid Build Coastguard Worker #include <cstddef> 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker class GrDirectContext; 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker namespace SkMeshes { 20*c8dee2aaSAndroid Build Coastguard Worker /** 21*c8dee2aaSAndroid Build Coastguard Worker * Makes a GPU-backed index buffer to be used with SkMeshes. 22*c8dee2aaSAndroid Build Coastguard Worker * 23*c8dee2aaSAndroid Build Coastguard Worker * @param GrDirectContext* If non-null, the data will be uploaded to the corresponding GPU and the 24*c8dee2aaSAndroid Build Coastguard Worker * returned buffer will only be compatible with surfaces using the same 25*c8dee2aaSAndroid Build Coastguard Worker * context. If null, the data will be uploaded to a CPU buffer. 26*c8dee2aaSAndroid Build Coastguard Worker * @param data The data used to populate the buffer, or nullptr to create a zero- 27*c8dee2aaSAndroid Build Coastguard Worker * initialized buffer. 28*c8dee2aaSAndroid Build Coastguard Worker * @param size Both the size of the data in 'data' and the size of the resulting 29*c8dee2aaSAndroid Build Coastguard Worker * buffer. 30*c8dee2aaSAndroid Build Coastguard Worker */ 31*c8dee2aaSAndroid Build Coastguard Worker SK_API sk_sp<SkMesh::IndexBuffer> MakeIndexBuffer(GrDirectContext*, const void* data, size_t size); 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard Worker /** 34*c8dee2aaSAndroid Build Coastguard Worker * Makes a copy of an index buffer. The copy will be GPU backed if the context is non-null. 35*c8dee2aaSAndroid Build Coastguard Worker */ 36*c8dee2aaSAndroid Build Coastguard Worker SK_API sk_sp<SkMesh::IndexBuffer> CopyIndexBuffer(GrDirectContext*, sk_sp<SkMesh::IndexBuffer>); 37*c8dee2aaSAndroid Build Coastguard Worker 38*c8dee2aaSAndroid Build Coastguard Worker /** 39*c8dee2aaSAndroid Build Coastguard Worker * Makes a GPU-backed vertex buffer to be used with SkMeshes. 40*c8dee2aaSAndroid Build Coastguard Worker * 41*c8dee2aaSAndroid Build Coastguard Worker * @param GrDirectContext* If non-null, the data will be uploaded to the corresponding GPU and the 42*c8dee2aaSAndroid Build Coastguard Worker * returned buffer will only be compatible with surfaces using the same 43*c8dee2aaSAndroid Build Coastguard Worker * context. If null, the data will be uploaded to a CPU buffer. 44*c8dee2aaSAndroid Build Coastguard Worker * @param data The data used to populate the buffer, or nullptr to create a zero- 45*c8dee2aaSAndroid Build Coastguard Worker * initialized buffer. 46*c8dee2aaSAndroid Build Coastguard Worker * @param size Both the size of the data in 'data' and the size of the resulting 47*c8dee2aaSAndroid Build Coastguard Worker * buffer. 48*c8dee2aaSAndroid Build Coastguard Worker */ 49*c8dee2aaSAndroid Build Coastguard Worker SK_API sk_sp<SkMesh::VertexBuffer> MakeVertexBuffer(GrDirectContext*, const void*, size_t size); 50*c8dee2aaSAndroid Build Coastguard Worker 51*c8dee2aaSAndroid Build Coastguard Worker /** 52*c8dee2aaSAndroid Build Coastguard Worker * Makes a copy of a vertex buffer. The copy will be GPU backed if the context is non-null. 53*c8dee2aaSAndroid Build Coastguard Worker */ 54*c8dee2aaSAndroid Build Coastguard Worker SK_API sk_sp<SkMesh::VertexBuffer> CopyVertexBuffer(GrDirectContext*, sk_sp<SkMesh::VertexBuffer>); 55*c8dee2aaSAndroid Build Coastguard Worker } // namespace SkMeshes 56*c8dee2aaSAndroid Build Coastguard Worker 57*c8dee2aaSAndroid Build Coastguard Worker #endif 58