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