175f0d3110b04346b901771f96ce15cdbe907278fYang Ni/* 275f0d3110b04346b901771f96ce15cdbe907278fYang Ni * Copyright (C) 2016 The Android Open Source Project 375f0d3110b04346b901771f96ce15cdbe907278fYang Ni * 475f0d3110b04346b901771f96ce15cdbe907278fYang Ni * Licensed under the Apache License, Version 2.0 (the "License"); 575f0d3110b04346b901771f96ce15cdbe907278fYang Ni * you may not use this file except in compliance with the License. 675f0d3110b04346b901771f96ce15cdbe907278fYang Ni * You may obtain a copy of the License at 775f0d3110b04346b901771f96ce15cdbe907278fYang Ni * 875f0d3110b04346b901771f96ce15cdbe907278fYang Ni * http://www.apache.org/licenses/LICENSE-2.0 975f0d3110b04346b901771f96ce15cdbe907278fYang Ni * 1075f0d3110b04346b901771f96ce15cdbe907278fYang Ni * Unless required by applicable law or agreed to in writing, software 1175f0d3110b04346b901771f96ce15cdbe907278fYang Ni * distributed under the License is distributed on an "AS IS" BASIS, 1275f0d3110b04346b901771f96ce15cdbe907278fYang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1375f0d3110b04346b901771f96ce15cdbe907278fYang Ni * See the License for the specific language governing permissions and 1475f0d3110b04346b901771f96ce15cdbe907278fYang Ni * limitations under the License. 1575f0d3110b04346b901771f96ce15cdbe907278fYang Ni */ 1675f0d3110b04346b901771f96ce15cdbe907278fYang Ni 1775f0d3110b04346b901771f96ce15cdbe907278fYang Ni#ifndef RSOV_ALLOCATION_H 1875f0d3110b04346b901771f96ce15cdbe907278fYang Ni#define RSOV_ALLOCATION_H 1975f0d3110b04346b901771f96ce15cdbe907278fYang Ni 2075f0d3110b04346b901771f96ce15cdbe907278fYang Ni#include <vulkan/vulkan.h> 2175f0d3110b04346b901771f96ce15cdbe907278fYang Ni 2275f0d3110b04346b901771f96ce15cdbe907278fYang Ni#include "rsDefines.h" 2375f0d3110b04346b901771f96ce15cdbe907278fYang Ni#include "rs_hal.h" 2475f0d3110b04346b901771f96ce15cdbe907278fYang Ni#include "system/window.h" 2575f0d3110b04346b901771f96ce15cdbe907278fYang Ni 2675f0d3110b04346b901771f96ce15cdbe907278fYang Ninamespace android { 2775f0d3110b04346b901771f96ce15cdbe907278fYang Ninamespace renderscript { 2875f0d3110b04346b901771f96ce15cdbe907278fYang Ni 2975f0d3110b04346b901771f96ce15cdbe907278fYang Niclass Allocation; 3075f0d3110b04346b901771f96ce15cdbe907278fYang Niclass Context; 3175f0d3110b04346b901771f96ce15cdbe907278fYang Niclass Type; 3275f0d3110b04346b901771f96ce15cdbe907278fYang Ni 3375f0d3110b04346b901771f96ce15cdbe907278fYang Ninamespace rsov { 3475f0d3110b04346b901771f96ce15cdbe907278fYang Ni 3575f0d3110b04346b901771f96ce15cdbe907278fYang Niclass RSoVContext; 36a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung// Abstraction for a Vulkan Buffer 37a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sungclass RSoVBuffer { 3875f0d3110b04346b901771f96ce15cdbe907278fYang Ni public: 39a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung RSoVBuffer(RSoVContext *context, size_t bufferSize); 40a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung ~RSoVBuffer(); 4175f0d3110b04346b901771f96ce15cdbe907278fYang Ni 42f15ce3de10aa8edf30d9c2dca60237a3d24eddccYang Ni const VkDescriptorBufferInfo *getBufferInfo() const { return &mBufferInfo; } 4375f0d3110b04346b901771f96ce15cdbe907278fYang Ni char *getHostPtr() const { return mPtr; } 4475f0d3110b04346b901771f96ce15cdbe907278fYang Ni 4575f0d3110b04346b901771f96ce15cdbe907278fYang Ni private: 4630dfb1368d0a3440cfedc882c27cc236d799f77cYang Ni void InitBuffer(size_t); 4775f0d3110b04346b901771f96ce15cdbe907278fYang Ni 48a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung char *mPtr; // Host pointer to mmapped device memory for the Buffer 4975f0d3110b04346b901771f96ce15cdbe907278fYang Ni RSoVContext *mRSoV; 5075f0d3110b04346b901771f96ce15cdbe907278fYang Ni VkDevice mDevice; 5175f0d3110b04346b901771f96ce15cdbe907278fYang Ni 5275f0d3110b04346b901771f96ce15cdbe907278fYang Ni VkDeviceMemory mMem; 53f15ce3de10aa8edf30d9c2dca60237a3d24eddccYang Ni VkBuffer mBuf; 54f15ce3de10aa8edf30d9c2dca60237a3d24eddccYang Ni VkDescriptorBufferInfo mBufferInfo; 5575f0d3110b04346b901771f96ce15cdbe907278fYang Ni}; 5675f0d3110b04346b901771f96ce15cdbe907278fYang Ni 57a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sungclass RSoVAllocation { 58a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung public: 59a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung RSoVAllocation(RSoVContext *context, const Type *type, size_t bufferSize); 60a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung ~RSoVAllocation() { delete mBuffer; } 61a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung 62a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung const Type *getType() const { return mType; } 63a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung uint32_t getWidth() const { return mWidth; } 64a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung uint32_t getHeight() const { return mHeight; } 65a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung uint32_t getDepth() const { return mDepth; } 66a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung RSoVBuffer *getBuffer() const { return mBuffer; } 67a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung char *getHostPtr() const { return mBuffer->getHostPtr(); } 68a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung 69a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung private: 70a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung RSoVBuffer *mBuffer; 71a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung const Type *mType; 72a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung const uint32_t mWidth; 73a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung const uint32_t mHeight; 74a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung const uint32_t mDepth; 75a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung}; 76a456a6e0672896ef7b8d312d8013208ae4086ab2I-Jui (Ray) Sung 7775f0d3110b04346b901771f96ce15cdbe907278fYang Ni} // namespace rsov 7875f0d3110b04346b901771f96ce15cdbe907278fYang Ni} // namespace renderscript 7975f0d3110b04346b901771f96ce15cdbe907278fYang Ni} // namespace android 8075f0d3110b04346b901771f96ce15cdbe907278fYang Ni 8175f0d3110b04346b901771f96ce15cdbe907278fYang Niextern bool rsovAllocationInit(const android::renderscript::Context *rsc, 8275f0d3110b04346b901771f96ce15cdbe907278fYang Ni android::renderscript::Allocation *alloc, 8375f0d3110b04346b901771f96ce15cdbe907278fYang Ni bool forceZero); 8475f0d3110b04346b901771f96ce15cdbe907278fYang Ni 8575f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationDestroy(const android::renderscript::Context *rsc, 8675f0d3110b04346b901771f96ce15cdbe907278fYang Ni android::renderscript::Allocation *alloc); 8775f0d3110b04346b901771f96ce15cdbe907278fYang Ni 8875f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationData1D(const android::renderscript::Context *rsc, 8975f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, 9075f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t xoff, uint32_t lod, size_t count, 9175f0d3110b04346b901771f96ce15cdbe907278fYang Ni const void *data, size_t sizeBytes); 9275f0d3110b04346b901771f96ce15cdbe907278fYang Ni 9375f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationData2D(const android::renderscript::Context *rsc, 9475f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, 9575f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t xoff, uint32_t yoff, uint32_t lod, 9675f0d3110b04346b901771f96ce15cdbe907278fYang Ni RsAllocationCubemapFace face, uint32_t w, 9775f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t h, const void *data, size_t sizeBytes, 9875f0d3110b04346b901771f96ce15cdbe907278fYang Ni size_t stride); 9975f0d3110b04346b901771f96ce15cdbe907278fYang Ni 10075f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationData3D(const android::renderscript::Context *rsc, 10175f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, 10275f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t xoff, uint32_t yoff, uint32_t zoff, 10375f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t lod, uint32_t w, uint32_t h, 10475f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t d, const void *data, size_t sizeBytes, 10575f0d3110b04346b901771f96ce15cdbe907278fYang Ni size_t stride); 10675f0d3110b04346b901771f96ce15cdbe907278fYang Ni 10775f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationRead1D(const android::renderscript::Context *rsc, 10875f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, 10975f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t xoff, uint32_t lod, size_t count, 11075f0d3110b04346b901771f96ce15cdbe907278fYang Ni void *data, size_t sizeBytes); 11175f0d3110b04346b901771f96ce15cdbe907278fYang Ni 11275f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationRead2D(const android::renderscript::Context *rsc, 11375f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, 11475f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t xoff, uint32_t yoff, uint32_t lod, 11575f0d3110b04346b901771f96ce15cdbe907278fYang Ni RsAllocationCubemapFace face, uint32_t w, 11675f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t h, void *data, size_t sizeBytes, 11775f0d3110b04346b901771f96ce15cdbe907278fYang Ni size_t stride); 11875f0d3110b04346b901771f96ce15cdbe907278fYang Ni 11975f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationRead3D(const android::renderscript::Context *rsc, 12075f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, 12175f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t xoff, uint32_t yoff, uint32_t zoff, 12275f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t lod, uint32_t w, uint32_t h, 12375f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t d, void *data, size_t sizeBytes, 12475f0d3110b04346b901771f96ce15cdbe907278fYang Ni size_t stride); 12575f0d3110b04346b901771f96ce15cdbe907278fYang Ni 12675f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void *rsovAllocationLock1D( 12775f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 12875f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc); 12975f0d3110b04346b901771f96ce15cdbe907278fYang Ni 13075f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationUnlock1D( 13175f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 13275f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc); 13375f0d3110b04346b901771f96ce15cdbe907278fYang Ni 13475f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationData1D_alloc( 13575f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 13675f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *dstAlloc, uint32_t dstXoff, 13775f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t dstLod, size_t count, 13875f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *srcAlloc, uint32_t srcXoff, 13975f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t srcLod); 14075f0d3110b04346b901771f96ce15cdbe907278fYang Ni 14175f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationData2D_alloc_script( 14275f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 14375f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *dstAlloc, uint32_t dstXoff, 14475f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t dstYoff, uint32_t dstLod, RsAllocationCubemapFace dstFace, 14575f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t w, uint32_t h, const android::renderscript::Allocation *srcAlloc, 14675f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t srcXoff, uint32_t srcYoff, uint32_t srcLod, 14775f0d3110b04346b901771f96ce15cdbe907278fYang Ni RsAllocationCubemapFace srcFace); 14875f0d3110b04346b901771f96ce15cdbe907278fYang Ni 14975f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationData2D_alloc( 15075f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 15175f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *dstAlloc, uint32_t dstXoff, 15275f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t dstYoff, uint32_t dstLod, RsAllocationCubemapFace dstFace, 15375f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t w, uint32_t h, const android::renderscript::Allocation *srcAlloc, 15475f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t srcXoff, uint32_t srcYoff, uint32_t srcLod, 15575f0d3110b04346b901771f96ce15cdbe907278fYang Ni RsAllocationCubemapFace srcFace); 15675f0d3110b04346b901771f96ce15cdbe907278fYang Ni 15775f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationData3D_alloc_script( 15875f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 15975f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *dstAlloc, uint32_t dstXoff, 16075f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t dstYoff, uint32_t dstZoff, uint32_t dstLod, uint32_t w, uint32_t h, 16175f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t d, const android::renderscript::Allocation *srcAlloc, 16275f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, uint32_t srcLod); 16375f0d3110b04346b901771f96ce15cdbe907278fYang Ni 16475f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationData3D_alloc( 16575f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 16675f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *dstAlloc, uint32_t dstXoff, 16775f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t dstYoff, uint32_t dstZoff, uint32_t dstLod, uint32_t w, uint32_t h, 16875f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t d, const android::renderscript::Allocation *srcAlloc, 16975f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, uint32_t srcLod); 17075f0d3110b04346b901771f96ce15cdbe907278fYang Ni 17175f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationAdapterOffset( 17275f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 17375f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc); 17475f0d3110b04346b901771f96ce15cdbe907278fYang Ni 17575f0d3110b04346b901771f96ce15cdbe907278fYang Niextern bool rsovAllocationAdapterInit(const android::renderscript::Context *rsc, 17675f0d3110b04346b901771f96ce15cdbe907278fYang Ni android::renderscript::Allocation *alloc); 17775f0d3110b04346b901771f96ce15cdbe907278fYang Ni 17875f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationSyncAll( 17975f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 18075f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, RsAllocationUsageType src); 18175f0d3110b04346b901771f96ce15cdbe907278fYang Ni 18275f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationMarkDirty( 18375f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 18475f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc); 18575f0d3110b04346b901771f96ce15cdbe907278fYang Ni 18675f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationResize(const android::renderscript::Context *rsc, 18775f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, 18875f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Type *newType, 18975f0d3110b04346b901771f96ce15cdbe907278fYang Ni bool zeroNew); 19075f0d3110b04346b901771f96ce15cdbe907278fYang Ni 19175f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationGenerateMipmaps( 19275f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 19375f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc); 19475f0d3110b04346b901771f96ce15cdbe907278fYang Ni 19575f0d3110b04346b901771f96ce15cdbe907278fYang Niextern uint32_t rsovAllocationGrallocBits( 19675f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 19775f0d3110b04346b901771f96ce15cdbe907278fYang Ni android::renderscript::Allocation *alloc); 19875f0d3110b04346b901771f96ce15cdbe907278fYang Ni 19975f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationUpdateCachedObject( 20075f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 20175f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, 20275f0d3110b04346b901771f96ce15cdbe907278fYang Ni android::renderscript::rs_allocation *obj); 20375f0d3110b04346b901771f96ce15cdbe907278fYang Ni 20475f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationSetSurface(const android::renderscript::Context *rsc, 20575f0d3110b04346b901771f96ce15cdbe907278fYang Ni android::renderscript::Allocation *alloc, 20675f0d3110b04346b901771f96ce15cdbe907278fYang Ni ANativeWindow *nw); 20775f0d3110b04346b901771f96ce15cdbe907278fYang Ni 20875f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationIoSend(const android::renderscript::Context *rsc, 20975f0d3110b04346b901771f96ce15cdbe907278fYang Ni android::renderscript::Allocation *alloc); 21075f0d3110b04346b901771f96ce15cdbe907278fYang Ni 21175f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationIoReceive(const android::renderscript::Context *rsc, 21275f0d3110b04346b901771f96ce15cdbe907278fYang Ni android::renderscript::Allocation *alloc); 21375f0d3110b04346b901771f96ce15cdbe907278fYang Ni 21475f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationElementData( 21575f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 21675f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, uint32_t x, uint32_t y, 21775f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t z, const void *data, uint32_t cIdx, size_t sizeBytes); 21875f0d3110b04346b901771f96ce15cdbe907278fYang Ni 21975f0d3110b04346b901771f96ce15cdbe907278fYang Niextern void rsovAllocationElementRead( 22075f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Context *rsc, 22175f0d3110b04346b901771f96ce15cdbe907278fYang Ni const android::renderscript::Allocation *alloc, uint32_t x, uint32_t y, 22275f0d3110b04346b901771f96ce15cdbe907278fYang Ni uint32_t z, void *data, uint32_t cIdx, size_t sizeBytes); 22375f0d3110b04346b901771f96ce15cdbe907278fYang Ni 22475f0d3110b04346b901771f96ce15cdbe907278fYang Ni#endif // RSOV_ALLOCATION_H 225