xref: /aosp_15_r20/frameworks/rs/driver/runtime/rs_mesh.c (revision e1eccf28f96817838ad6867f7f39d2351ec11f56)
1*e1eccf28SAndroid Build Coastguard Worker #ifndef __LP64__
2*e1eccf28SAndroid Build Coastguard Worker 
3*e1eccf28SAndroid Build Coastguard Worker #include "rs_core.rsh"
4*e1eccf28SAndroid Build Coastguard Worker #include "rs_graphics.rsh"
5*e1eccf28SAndroid Build Coastguard Worker #include "rs_structs.h"
6*e1eccf28SAndroid Build Coastguard Worker 
7*e1eccf28SAndroid Build Coastguard Worker /**
8*e1eccf28SAndroid Build Coastguard Worker * Mesh
9*e1eccf28SAndroid Build Coastguard Worker */
10*e1eccf28SAndroid Build Coastguard Worker extern uint32_t __attribute__((overloadable))
rsgMeshGetVertexAllocationCount(rs_mesh m)11*e1eccf28SAndroid Build Coastguard Worker         rsgMeshGetVertexAllocationCount(rs_mesh m) {
12*e1eccf28SAndroid Build Coastguard Worker     Mesh_t *mesh = (Mesh_t *)m.p;
13*e1eccf28SAndroid Build Coastguard Worker     if (mesh == NULL) {
14*e1eccf28SAndroid Build Coastguard Worker         return 0;
15*e1eccf28SAndroid Build Coastguard Worker     }
16*e1eccf28SAndroid Build Coastguard Worker     return mesh->mHal.state.vertexBuffersCount;
17*e1eccf28SAndroid Build Coastguard Worker }
18*e1eccf28SAndroid Build Coastguard Worker 
19*e1eccf28SAndroid Build Coastguard Worker extern uint32_t __attribute__((overloadable))
rsgMeshGetPrimitiveCount(rs_mesh m)20*e1eccf28SAndroid Build Coastguard Worker         rsgMeshGetPrimitiveCount(rs_mesh m) {
21*e1eccf28SAndroid Build Coastguard Worker     Mesh_t *mesh = (Mesh_t *)m.p;
22*e1eccf28SAndroid Build Coastguard Worker     if (mesh == NULL) {
23*e1eccf28SAndroid Build Coastguard Worker         return 0;
24*e1eccf28SAndroid Build Coastguard Worker     }
25*e1eccf28SAndroid Build Coastguard Worker     return mesh->mHal.state.primitivesCount;
26*e1eccf28SAndroid Build Coastguard Worker }
27*e1eccf28SAndroid Build Coastguard Worker 
28*e1eccf28SAndroid Build Coastguard Worker extern rs_allocation __attribute__((overloadable))
rsgMeshGetVertexAllocation(rs_mesh m,uint32_t index)29*e1eccf28SAndroid Build Coastguard Worker         rsgMeshGetVertexAllocation(rs_mesh m, uint32_t index) {
30*e1eccf28SAndroid Build Coastguard Worker     Mesh_t *mesh = (Mesh_t *)m.p;
31*e1eccf28SAndroid Build Coastguard Worker     if (mesh == NULL || index >= mesh->mHal.state.vertexBuffersCount) {
32*e1eccf28SAndroid Build Coastguard Worker         rs_allocation nullAlloc = RS_NULL_OBJ;
33*e1eccf28SAndroid Build Coastguard Worker         return nullAlloc;
34*e1eccf28SAndroid Build Coastguard Worker     }
35*e1eccf28SAndroid Build Coastguard Worker     rs_allocation returnAlloc = {mesh->mHal.state.vertexBuffers[index]};
36*e1eccf28SAndroid Build Coastguard Worker     rs_allocation rs_retval = RS_NULL_OBJ;
37*e1eccf28SAndroid Build Coastguard Worker     rsSetObject(&rs_retval, returnAlloc);
38*e1eccf28SAndroid Build Coastguard Worker     return rs_retval;
39*e1eccf28SAndroid Build Coastguard Worker }
40*e1eccf28SAndroid Build Coastguard Worker 
41*e1eccf28SAndroid Build Coastguard Worker extern rs_allocation __attribute__((overloadable))
rsgMeshGetIndexAllocation(rs_mesh m,uint32_t index)42*e1eccf28SAndroid Build Coastguard Worker         rsgMeshGetIndexAllocation(rs_mesh m, uint32_t index) {
43*e1eccf28SAndroid Build Coastguard Worker     Mesh_t *mesh = (Mesh_t *)m.p;
44*e1eccf28SAndroid Build Coastguard Worker     if (mesh == NULL || index >= mesh->mHal.state.primitivesCount) {
45*e1eccf28SAndroid Build Coastguard Worker         rs_allocation nullAlloc = RS_NULL_OBJ;
46*e1eccf28SAndroid Build Coastguard Worker         return nullAlloc;
47*e1eccf28SAndroid Build Coastguard Worker     }
48*e1eccf28SAndroid Build Coastguard Worker     rs_allocation returnAlloc = {mesh->mHal.state.indexBuffers[index]};
49*e1eccf28SAndroid Build Coastguard Worker     rs_allocation rs_retval = RS_NULL_OBJ;
50*e1eccf28SAndroid Build Coastguard Worker     rsSetObject(&rs_retval, returnAlloc);
51*e1eccf28SAndroid Build Coastguard Worker     return rs_retval;
52*e1eccf28SAndroid Build Coastguard Worker }
53*e1eccf28SAndroid Build Coastguard Worker 
54*e1eccf28SAndroid Build Coastguard Worker extern rs_primitive __attribute__((overloadable))
rsgMeshGetPrimitive(rs_mesh m,uint32_t index)55*e1eccf28SAndroid Build Coastguard Worker         rsgMeshGetPrimitive(rs_mesh m, uint32_t index) {
56*e1eccf28SAndroid Build Coastguard Worker     Mesh_t *mesh = (Mesh_t *)m.p;
57*e1eccf28SAndroid Build Coastguard Worker     if (mesh == NULL || index >= mesh->mHal.state.primitivesCount) {
58*e1eccf28SAndroid Build Coastguard Worker         return RS_PRIMITIVE_INVALID;
59*e1eccf28SAndroid Build Coastguard Worker     }
60*e1eccf28SAndroid Build Coastguard Worker     return mesh->mHal.state.primitives[index];
61*e1eccf28SAndroid Build Coastguard Worker }
62*e1eccf28SAndroid Build Coastguard Worker 
63*e1eccf28SAndroid Build Coastguard Worker #endif
64