1c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams/* 2a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project 3c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * 4c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * you may not use this file except in compliance with the License. 6c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * You may obtain a copy of the License at 7c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * 8c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * 10c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * Unless required by applicable law or agreed to in writing, software 11c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * See the License for the specific language governing permissions and 14c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams * limitations under the License. 15c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams */ 16c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 17a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk#ifndef ANDROID_RSD_VERTEX_ARRAY_H 18a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk#define ANDROID_RSD_VERTEX_ARRAY_H 19c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 200b575de8ed0b628d84d256f5846500b0385979bdTim Murray#include "rsUtils.h" 210b575de8ed0b628d84d256f5846500b0385979bdTim Murray 2282e135c4bbe18855d8ed02632bb074f8da0b96e0Miao Wang#include <string> 2382e135c4bbe18855d8ed02632bb074f8da0b96e0Miao Wang 24c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samsnamespace android { 25c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samsnamespace renderscript { 26c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 27a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass Context; 28a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 297974fc03e11f3a8dd40f794f3b33b4889483090cRahul Chaudhry} // namespace renderscript 307974fc03e11f3a8dd40f794f3b33b4889483090cRahul Chaudhry} // namespace android 31a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 32c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams// An element is a group of Components that occupies one cell in a structure. 33a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass RsdVertexArray { 34c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samspublic: 35433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams class Attrib { 36433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams public: 37c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t buffer; 38760f1f7335ad0c5aee59ca829a40bbf6e3328a1bJason Sams const uint8_t * ptr; 39e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray size_t offset; 40c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t type; 41c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t size; 42c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t stride; 43c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams bool normalized; 4482e135c4bbe18855d8ed02632bb074f8da0b96e0Miao Wang std::string name; 45433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams 46433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams Attrib(); 47433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams void clear(); 48e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray void set(uint32_t type, uint32_t size, uint32_t stride, bool normalized, size_t offset, const char *name); 49433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams }; 50c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 51a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk RsdVertexArray(const Attrib *attribs, uint32_t numAttribs); 52a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk virtual ~RsdVertexArray(); 53c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 54c19ff0177a7a0dadfc01b1990f822354fdc95991Alex Sakhartchouk void setup(const android::renderscript::Context *rsc) const; 55433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams void logAttrib(uint32_t idx, uint32_t slot) const; 56c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 57c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samsprotected: 58be504f2d0c5db4485e6db5b406e9e8b8c390dea9Jason Sams void clear(uint32_t index); 59c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t mActiveBuffer; 60760f1f7335ad0c5aee59ca829a40bbf6e3328a1bJason Sams const uint8_t * mActivePointer; 61be504f2d0c5db4485e6db5b406e9e8b8c390dea9Jason Sams uint32_t mCount; 62be504f2d0c5db4485e6db5b406e9e8b8c390dea9Jason Sams 6354929cce0bf44090424b1f91b676529a2422378fAlex Sakhartchouk const Attrib *mAttribs; 64c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams}; 65c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 66c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 67a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass RsdVertexArrayState { 68c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samspublic: 69a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk RsdVertexArrayState(); 70a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk ~RsdVertexArrayState(); 71a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk void init(uint32_t maxAttrs); 72c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 732d791976a2b937017423519d9f9a4928fc31dae2Alex Sakhartchouk bool *mAttrsEnabled; 742d791976a2b937017423519d9f9a4928fc31dae2Alex Sakhartchouk uint32_t mAttrsEnabledSize; 75c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams}; 76c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 77c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 78a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk#endif //ANDROID_RSD_VERTEX_ARRAY_H 79b8353c5943f4038fd7f08db3d958390ce9418798Yang Ni 80b8353c5943f4038fd7f08db3d958390ce9418798Yang Ni 81b8353c5943f4038fd7f08db3d958390ce9418798Yang Ni 82