10f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/* 20f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Copyright (C) 2009 The Android Open Source Project 30f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 40f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 50f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * you may not use this file except in compliance with the License. 60f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * You may obtain a copy of the License at 70f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 80f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * http://www.apache.org/licenses/LICENSE-2.0 90f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Unless required by applicable law or agreed to in writing, software 110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See the License for the specific language governing permissions and 140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * limitations under the License. 150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#ifndef ANDROID_RS_ADAPTER_H 180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define ANDROID_RS_ADAPTER_H 190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsAllocation.h" 210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// --------------------------------------------------------------------------- 230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesnamespace android { 240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesnamespace renderscript { 250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesclass Adapter1D : public ObjectBase { 280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinespublic: 300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // By policy this allocation will hold a pointer to the type 310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // but will not destroy it on destruction. 320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Adapter1D(Context *); 330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Adapter1D(Context *, Allocation *); 340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void reset(); 350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void setAllocation(Allocation *a) {mAllocation.set(a);} 370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);} 390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const Type * getBaseType() const {return mAllocation->getType();} 410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines inline void setY(uint32_t y) {mY = y;} 430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines inline void setZ(uint32_t z) {mZ = z;} 440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines inline void setLOD(uint32_t lod) {mLOD = lod;} 450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines inline void setFace(RsAllocationCubemapFace face) {mFace = face;} 460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void data(Context *rsc, uint32_t xoff, uint32_t count, const void *data, size_t sizeBytes); 480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines virtual void serialize(Context *rsc, OStream *stream) const; 500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_ADAPTER_1D; } 510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines static Adapter1D *createFromStream(Context *rsc, IStream *stream); 520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesprotected: 540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ObjectBaseRef<Allocation> mAllocation; 550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t mY; 560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t mZ; 570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t mLOD; 580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RsAllocationCubemapFace mFace; 590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}; 600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesclass Adapter2D : public ObjectBase { 620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinespublic: 640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // By policy this allocation will hold a pointer to the type 650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // but will not destroy it on destruction. 660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Adapter2D(Context *); 670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Adapter2D(Context *, Allocation *); 680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void reset(); 690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);} 710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t getDimY() const {return mAllocation->getType()->getLODDimY(mLOD);} 720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const Type * getBaseType() const {return mAllocation->getType();} 730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void setAllocation(Allocation *a) {mAllocation.set(a);} 750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines inline void setZ(uint32_t z) {mZ = z;} 760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines inline void setLOD(uint32_t lod) {mLOD = lod;} 770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines inline void setFace(RsAllocationCubemapFace face) {mFace = face;} 780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void data(Context *rsc, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, 800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const void *data, size_t sizeBytes); 810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines virtual void serialize(Context *rsc, OStream *stream) const; 830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_ADAPTER_2D; } 840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines static Adapter2D *createFromStream(Context *rsc, IStream *stream); 850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesprotected: 870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ObjectBaseRef<Allocation> mAllocation; 880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t mZ; 890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t mLOD; 900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RsAllocationCubemapFace mFace; 910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}; 920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#endif 960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 97