1a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk/* 2a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project 3a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * 4a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License"); 5a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * you may not use this file except in compliance with the License. 6a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * You may obtain a copy of the License at 7a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * 8a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * http://www.apache.org/licenses/LICENSE-2.0 9a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * 10a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * Unless required by applicable law or agreed to in writing, software 11a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS, 12a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * See the License for the specific language governing permissions and 14a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * limitations under the License. 15a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk */ 16a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 17a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk#ifndef ANDROID_RSD_MESH_OBJ_H 18a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk#define ANDROID_RSD_MESH_OBJ_H 19a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 20a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk// --------------------------------------------------------------------------- 21a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouknamespace android { 22a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouknamespace renderscript { 23a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 24a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk class Context; 25a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk class Mesh; 26a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk class Element; 27a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 28a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk} 29a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk} 30a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 31a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk#include "driver/rsdVertexArray.h" 32a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 33a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk// An element is a group of Components that occupies one cell in a structure. 34a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass RsdMeshObj { 35a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukpublic: 36a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk RsdMeshObj(const android::renderscript::Context *, 37a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk const android::renderscript::Mesh *); 38a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk ~RsdMeshObj(); 39a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 40c0a65425f8eb3573b1abd2a48292ca953c0a8590Alex Sakhartchouk void renderPrimitiveRange(const android::renderscript::Context *, 41c0a65425f8eb3573b1abd2a48292ca953c0a8590Alex Sakhartchouk uint32_t primIndex, uint32_t start, uint32_t len) const; 42a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 43c0a65425f8eb3573b1abd2a48292ca953c0a8590Alex Sakhartchouk bool init(const android::renderscript::Context *rsc); 44a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 45a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukprotected: 46a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk const android::renderscript::Mesh *mRSMesh; 47a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 48a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk uint32_t *mGLPrimitives; 49c0a65425f8eb3573b1abd2a48292ca953c0a8590Alex Sakhartchouk void updateGLPrimitives(const android::renderscript::Context *rsc); 50a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 51a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk bool isValidGLComponent(const android::renderscript::Element *elem, uint32_t fieldIdx); 52a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk // Attribues that allow us to map to GL 53a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk RsdVertexArray::Attrib *mAttribs; 54a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk // This allows us to figure out which allocation the attribute 55a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk // belongs to. In the event the allocation is uploaded to GL 56a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk // buffer, it lets us properly map it 57a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk uint32_t *mAttribAllocationIndex; 58a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk uint32_t mAttribCount; 59a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk}; 60a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 61a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk#endif //ANDROID_RSD_MESH_OBJ_H 62a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 63a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 64a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 65