• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
setAllocation(Allocation * a)36     void setAllocation(Allocation *a) {mAllocation.set(a);}
37 
getDimX()38     uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);}
39 
getBaseType()40     const Type * getBaseType() const {return mAllocation->getType();}
41 
setY(uint32_t y)42     inline void setY(uint32_t y) {mY = y;}
setZ(uint32_t z)43     inline void setZ(uint32_t z) {mZ = z;}
setLOD(uint32_t lod)44     inline void setLOD(uint32_t lod) {mLOD = lod;}
setFace(RsAllocationCubemapFace face)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;
getClassId()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 
getDimX()70     uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);}
getDimY()71     uint32_t getDimY() const {return mAllocation->getType()->getLODDimY(mLOD);}
getBaseType()72     const Type * getBaseType() const {return mAllocation->getType();}
73 
setAllocation(Allocation * a)74     void setAllocation(Allocation *a) {mAllocation.set(a);}
setZ(uint32_t z)75     inline void setZ(uint32_t z) {mZ = z;}
setLOD(uint32_t lod)76     inline void setLOD(uint32_t lod) {mLOD = lod;}
setFace(RsAllocationCubemapFace face)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;
getClassId()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