1326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams/* 2326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Copyright (C) 2009 The Android Open Source Project 3326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 4326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * you may not use this file except in compliance with the License. 6326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * You may obtain a copy of the License at 7326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 8326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 10326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Unless required by applicable law or agreed to in writing, software 11326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * See the License for the specific language governing permissions and 14326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * limitations under the License. 15326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams */ 16326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 17326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#ifndef ANDROID_RS_ADAPTER_H 18326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#define ANDROID_RS_ADAPTER_H 19326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 20326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsAllocation.h" 21326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 22326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams// --------------------------------------------------------------------------- 23326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 24326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 25326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 26e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams 27afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukclass Adapter1D : public ObjectBase { 28326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 29326e0ddf89e8df2837752fbfd7a014814b32082cJason Samspublic: 30326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams // By policy this allocation will hold a pointer to the type 31326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams // but will not destroy it on destruction. 32e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams Adapter1D(Context *); 33e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams Adapter1D(Context *, Allocation *); 34326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void reset(); 35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 36326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void setAllocation(Allocation *a) {mAllocation.set(a);} 37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);} 39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 40326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams const Type * getBaseType() const {return mAllocation->getType();} 41326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams inline void setY(uint32_t y) {mY = y;} 43326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams inline void setZ(uint32_t z) {mZ = z;} 44326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams inline void setLOD(uint32_t lod) {mLOD = lod;} 45a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams inline void setFace(RsAllocationCubemapFace face) {mFace = face;} 46326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 47a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams void data(Context *rsc, uint32_t xoff, uint32_t count, const void *data, size_t sizeBytes); 48b825f67adb5d1e1751fe108e6dbf9c6f2555c283Alex Sakhartchouk 49e3150cfb3edb028407669e4a65e087eae77e718cJason Sams virtual void serialize(Context *rsc, OStream *stream) const; 50b825f67adb5d1e1751fe108e6dbf9c6f2555c283Alex Sakhartchouk virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_ADAPTER_1D; } 51fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk static Adapter1D *createFromStream(Context *rsc, IStream *stream); 52326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 53326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsprotected: 54326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ObjectBaseRef<Allocation> mAllocation; 55326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t mY; 56326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t mZ; 57326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t mLOD; 58a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams RsAllocationCubemapFace mFace; 59326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}; 60326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 61afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukclass Adapter2D : public ObjectBase { 62326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 63326e0ddf89e8df2837752fbfd7a014814b32082cJason Samspublic: 64326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams // By policy this allocation will hold a pointer to the type 65326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams // but will not destroy it on destruction. 66e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams Adapter2D(Context *); 67e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams Adapter2D(Context *, Allocation *); 68326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void reset(); 69326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 70326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);} 71326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t getDimY() const {return mAllocation->getType()->getLODDimY(mLOD);} 72326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams const Type * getBaseType() const {return mAllocation->getType();} 73326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 74326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void setAllocation(Allocation *a) {mAllocation.set(a);} 75326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams inline void setZ(uint32_t z) {mZ = z;} 76326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams inline void setLOD(uint32_t lod) {mLOD = lod;} 77a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams inline void setFace(RsAllocationCubemapFace face) {mFace = face;} 78326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 79a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams void data(Context *rsc, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, 80a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams const void *data, size_t sizeBytes); 81b825f67adb5d1e1751fe108e6dbf9c6f2555c283Alex Sakhartchouk 82e3150cfb3edb028407669e4a65e087eae77e718cJason Sams virtual void serialize(Context *rsc, OStream *stream) const; 83b825f67adb5d1e1751fe108e6dbf9c6f2555c283Alex Sakhartchouk virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_ADAPTER_2D; } 84fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk static Adapter2D *createFromStream(Context *rsc, IStream *stream); 85326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 86326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsprotected: 87326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ObjectBaseRef<Allocation> mAllocation; 88326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t mZ; 89326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t mLOD; 90a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams RsAllocationCubemapFace mFace; 91326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}; 92326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 93326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 94326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 95326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#endif 96326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 97