Home | History | Annotate | Download | only in rs
      1 /*
      2  * Copyright (C) 2009 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef ANDROID_RS_ADAPTER_H
     18 #define ANDROID_RS_ADAPTER_H
     19 
     20 #include "rsAllocation.h"
     21 
     22 // ---------------------------------------------------------------------------
     23 namespace android {
     24 namespace renderscript {
     25 
     26 
     27 class Adapter1D : public ObjectBase {
     28 
     29 public:
     30     // By policy this allocation will hold a pointer to the type
     31     // but will not destroy it on destruction.
     32     Adapter1D(Context *);
     33     Adapter1D(Context *, Allocation *);
     34     void reset();
     35 
     36     void setAllocation(Allocation *a) {mAllocation.set(a);}
     37 
     38     uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);}
     39 
     40     const Type * getBaseType() const {return mAllocation->getType();}
     41 
     42     inline void setY(uint32_t y) {mY = y;}
     43     inline void setZ(uint32_t z) {mZ = z;}
     44     inline void setLOD(uint32_t lod) {mLOD = lod;}
     45     inline void setFace(RsAllocationCubemapFace face) {mFace = face;}
     46 
     47     void data(Context *rsc, uint32_t xoff, uint32_t count, const void *data, size_t sizeBytes);
     48 
     49     virtual void serialize(Context *rsc, OStream *stream) const;
     50     virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_ADAPTER_1D; }
     51     static Adapter1D *createFromStream(Context *rsc, IStream *stream);
     52 
     53 protected:
     54     ObjectBaseRef<Allocation> mAllocation;
     55     uint32_t mY;
     56     uint32_t mZ;
     57     uint32_t mLOD;
     58     RsAllocationCubemapFace mFace;
     59 };
     60 
     61 class Adapter2D : public ObjectBase {
     62 
     63 public:
     64     // By policy this allocation will hold a pointer to the type
     65     // but will not destroy it on destruction.
     66     Adapter2D(Context *);
     67     Adapter2D(Context *, Allocation *);
     68     void reset();
     69 
     70     uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);}
     71     uint32_t getDimY() const {return mAllocation->getType()->getLODDimY(mLOD);}
     72     const Type * getBaseType() const {return mAllocation->getType();}
     73 
     74     void setAllocation(Allocation *a) {mAllocation.set(a);}
     75     inline void setZ(uint32_t z) {mZ = z;}
     76     inline void setLOD(uint32_t lod) {mLOD = lod;}
     77     inline void setFace(RsAllocationCubemapFace face) {mFace = face;}
     78 
     79     void data(Context *rsc, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h,
     80               const void *data, size_t sizeBytes);
     81 
     82     virtual void serialize(Context *rsc, OStream *stream) const;
     83     virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_ADAPTER_2D; }
     84     static Adapter2D *createFromStream(Context *rsc, IStream *stream);
     85 
     86 protected:
     87     ObjectBaseRef<Allocation> mAllocation;
     88     uint32_t mZ;
     89     uint32_t mLOD;
     90     RsAllocationCubemapFace mFace;
     91 };
     92 
     93 }
     94 }
     95 #endif
     96 
     97