1221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams/* 269cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams * Copyright (C) 2012 The Android Open Source Project 3221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * 4221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * you may not use this file except in compliance with the License. 6221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * You may obtain a copy of the License at 7221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * 8221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * 10221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * Unless required by applicable law or agreed to in writing, software 11221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * See the License for the specific language governing permissions and 14221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * limitations under the License. 15221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams */ 16221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 17b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams#ifndef __ANDROID_ALLOCATION_H__ 18b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams#define __ANDROID_ALLOCATION_H__ 19221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 20221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include <pthread.h> 21221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include <rs.h> 22221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 23221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include "RenderScript.h" 24221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include "Type.h" 25221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include "Element.h" 26221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 2769cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsnamespace android { 2869cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsnamespace renderscriptCpp { 2969cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams 30b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Samsclass Allocation : public BaseObj { 31221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsprotected: 3269cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams android::sp<const Type> mType; 33221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mUsage; 3469cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams android::sp<Allocation> mAdaptedAllocation; 35221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 36221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mConstrainedLOD; 37221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mConstrainedFace; 38221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mConstrainedY; 39221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mConstrainedZ; 40221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mReadAllowed; 41221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mWriteAllowed; 42221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mSelectedY; 43221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mSelectedZ; 44221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mSelectedLOD; 45221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams RsAllocationCubemapFace mSelectedFace; 46221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 47221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mCurrentDimX; 48221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mCurrentDimY; 49221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mCurrentDimZ; 50221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mCurrentCount; 51221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 52221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 53221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void * getIDSafe() const; 5469cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams void updateCacheInfo(sp<const Type> t); 55221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 5669cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams Allocation(void *id, RenderScript *rs, sp<const Type> t, uint32_t usage); 57221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 58221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void validateIsInt32(); 59221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void validateIsInt16(); 60221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void validateIsInt8(); 61221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void validateIsFloat32(); 62221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void validateIsObject(); 63221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 64221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams virtual void updateFromNative(); 65221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 66221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void validate2DRange(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h); 67221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 68221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samspublic: 6969cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams android::sp<const Type> getType() { 70221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mType; 71221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 72221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 73221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void syncAll(RsAllocationUsageType srcLocation); 74221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void ioSendOutput(); 75221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void ioGetInput(); 76221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 77221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyFrom(BaseObj[] d); 78221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyFromUnchecked(int[] d); 79221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyFromUnchecked(short[] d); 80221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyFromUnchecked(byte[] d); 81221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyFromUnchecked(float[] d); 82221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyFrom(int[] d); 83221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyFrom(short[] d); 84221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyFrom(byte[] d); 85221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyFrom(float[] d); 86221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void setFromFieldPacker(int xoff, FieldPacker fp); 87221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void setFromFieldPacker(int xoff, int component_number, FieldPacker fp); 88221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void generateMipmaps(); 89221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy1DRangeFromUnchecked(uint32_t off, size_t count, const void *data, size_t dataLen); 90221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy1DRangeFrom(uint32_t off, size_t count, const int32_t* d, size_t dataLen); 91221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy1DRangeFrom(uint32_t off, size_t count, const int16_t* d, size_t dataLen); 92221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy1DRangeFrom(uint32_t off, size_t count, const int8_t* d, size_t dataLen); 93221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy1DRangeFrom(uint32_t off, size_t count, const float* d, size_t dataLen); 94221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy1DRangeFrom(uint32_t off, size_t count, const Allocation *data, uint32_t dataOff); 95221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 96221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy2DRangeFrom(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, 97221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams const int32_t *data, size_t dataLen); 98221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy2DRangeFrom(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, 99221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams const int16_t *data, size_t dataLen); 100221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy2DRangeFrom(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, 101221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams const int8_t *data, size_t dataLen); 102221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy2DRangeFrom(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, 103221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams const float *data, size_t dataLen); 104221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void copy2DRangeFrom(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, 105221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams const Allocation *data, size_t dataLen, 106221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t dataXoff, uint32_t dataYoff); 107221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 108221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyTo(byte[] d); 109221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyTo(short[] d); 110221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyTo(int[] d); 111221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void copyTo(float[] d); 112221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void resize(int dimX); 113221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void resize(int dimX, int dimY); 114221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 11569cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams static sp<Allocation> createTyped(RenderScript *rs, sp<const Type> type, 116221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams RsAllocationMipmapControl mips, uint32_t usage); 11769cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams static sp<Allocation> createTyped(RenderScript *rs, sp<const Type> type, 118221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams RsAllocationMipmapControl mips, uint32_t usage, void * pointer); 119221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 12069cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams static sp<Allocation> createTyped(RenderScript *rs, sp<const Type> type, 121221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t usage = RS_ALLOCATION_USAGE_SCRIPT); 12269cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams static sp<Allocation> createSized(RenderScript *rs, sp<const Element> e, size_t count, 123221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t usage = RS_ALLOCATION_USAGE_SCRIPT); 124221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //SurfaceTexture *getSurfaceTexture(); 125221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams //void setSurfaceTexture(SurfaceTexture *sur); 126221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 127221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams}; 128221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 12969cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams} 13069cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams} 13169cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams 132b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams#endif 133