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