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 20c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samsnamespace android { 21c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samsnamespace renderscript { 22c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 23a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass Context; 24a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 25a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk} 26a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk} 27a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 28a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk#include <utils/String8.h> 29c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 30c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams// An element is a group of Components that occupies one cell in a structure. 31a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass RsdVertexArray { 32c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samspublic: 33433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams class Attrib { 34433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams public: 35c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t buffer; 36760f1f7335ad0c5aee59ca829a40bbf6e3328a1bJason Sams const uint8_t * ptr; 37c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t offset; 38c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t type; 39c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t size; 40c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t stride; 41c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams bool normalized; 42a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk android::String8 name; 43433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams 44433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams Attrib(); 45433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams void clear(); 4654929cce0bf44090424b1f91b676529a2422378fAlex Sakhartchouk void set(uint32_t type, uint32_t size, uint32_t stride, bool normalized, uint32_t offset, const char *name); 47433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams }; 48c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 49a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk RsdVertexArray(const Attrib *attribs, uint32_t numAttribs); 50a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk virtual ~RsdVertexArray(); 51c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 52c19ff0177a7a0dadfc01b1990f822354fdc95991Alex Sakhartchouk void setup(const android::renderscript::Context *rsc) const; 53433eca30b2efe0cf84bbda33f2dfdfd6dcafaf59Jason Sams void logAttrib(uint32_t idx, uint32_t slot) const; 54c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 55c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samsprotected: 56be504f2d0c5db4485e6db5b406e9e8b8c390dea9Jason Sams void clear(uint32_t index); 57c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams uint32_t mActiveBuffer; 58760f1f7335ad0c5aee59ca829a40bbf6e3328a1bJason Sams const uint8_t * mActivePointer; 59be504f2d0c5db4485e6db5b406e9e8b8c390dea9Jason Sams uint32_t mCount; 60be504f2d0c5db4485e6db5b406e9e8b8c390dea9Jason Sams 6154929cce0bf44090424b1f91b676529a2422378fAlex Sakhartchouk const Attrib *mAttribs; 62c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams}; 63c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 64c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 65a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass RsdVertexArrayState { 66c460e55d78cbe8bee95c5c947dfe541218142a5bJason Samspublic: 67a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk RsdVertexArrayState(); 68a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk ~RsdVertexArrayState(); 69a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk void init(uint32_t maxAttrs); 70c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 712d791976a2b937017423519d9f9a4928fc31dae2Alex Sakhartchouk bool *mAttrsEnabled; 722d791976a2b937017423519d9f9a4928fc31dae2Alex Sakhartchouk uint32_t mAttrsEnabledSize; 73c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams}; 74c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 75c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 76a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk#endif //ANDROID_RSD_VERTEX_ARRAY_H 77c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 78c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 79c460e55d78cbe8bee95c5c947dfe541218142a5bJason Sams 80