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