1eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams/* 2eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * Copyright (C) 2011 The Android Open Source Project 3eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * 4eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * you may not use this file except in compliance with the License. 6eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * You may obtain a copy of the License at 7eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * 8eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * 10eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * Unless required by applicable law or agreed to in writing, software 11eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * See the License for the specific language governing permissions and 14eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams * limitations under the License. 15eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams */ 16eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 17eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams#ifndef RSD_ALLOCATION_H 18eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams#define RSD_ALLOCATION_H 19eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 20eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams#include <rs_hal.h> 21eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams#include <rsRuntime.h> 22eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 23eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams#include <GLES/gl.h> 24eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams#include <GLES2/gl2.h> 25eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 26a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchoukclass RsdFrameBufferObj; 277ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Samsstruct ANativeWindowBuffer; 28a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 29eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsstruct DrvAllocation { 30eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams // Is this a legal structure to be used as a texture source. 31eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams // Initially this will require 1D or 2D and color data 32eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t textureID; 33eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 34eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams // Is this a legal structure to be used as a vertex source. 35eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams // Initially this will require 1D and x(yzw). Additional per element data 36eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams // is allowed. 37eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t bufferID; 38eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 39eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams // Is this a legal structure to be used as an FBO render target 40eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t renderTargetID; 41eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 42b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams uint32_t width; 43b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams uint32_t height; 44eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 45eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams GLenum glTarget; 46a614ae175bbf97201b5e18984d814a1d3e86faa8Jason Sams GLenum glType; 47a614ae175bbf97201b5e18984d814a1d3e86faa8Jason Sams GLenum glFormat; 48a614ae175bbf97201b5e18984d814a1d3e86faa8Jason Sams 49eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams bool uploadDeferred; 50a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk 51a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk RsdFrameBufferObj * readBackFBO; 52b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams ANativeWindow *wnd; 537ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Sams ANativeWindowBuffer *wndBuffer; 54eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams}; 55eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 56a614ae175bbf97201b5e18984d814a1d3e86faa8Jason SamsGLenum rsdTypeToGLType(RsDataType t); 57a614ae175bbf97201b5e18984d814a1d3e86faa8Jason SamsGLenum rsdKindToGLFormat(RsDataKind k); 58a614ae175bbf97201b5e18984d814a1d3e86faa8Jason Sams 59a614ae175bbf97201b5e18984d814a1d3e86faa8Jason Sams 60eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsbool rsdAllocationInit(const android::renderscript::Context *rsc, 61eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams android::renderscript::Allocation *alloc, 62eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams bool forceZero); 63eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsdAllocationDestroy(const android::renderscript::Context *rsc, 64eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams android::renderscript::Allocation *alloc); 65eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 66eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsdAllocationResize(const android::renderscript::Context *rsc, 67eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const android::renderscript::Allocation *alloc, 68eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const android::renderscript::Type *newType, bool zeroNew); 69eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsdAllocationSyncAll(const android::renderscript::Context *rsc, 70eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const android::renderscript::Allocation *alloc, 71eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams RsAllocationUsageType src); 72eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsdAllocationMarkDirty(const android::renderscript::Context *rsc, 73eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const android::renderscript::Allocation *alloc); 7441e373d91a60043afa0f9abd026218b49cbc1201Jason Samsint32_t rsdAllocationInitSurfaceTexture(const android::renderscript::Context *rsc, 7541e373d91a60043afa0f9abd026218b49cbc1201Jason Sams const android::renderscript::Allocation *alloc); 767ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Samsvoid rsdAllocationSetSurfaceTexture(const android::renderscript::Context *rsc, 777ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Sams android::renderscript::Allocation *alloc, ANativeWindow *nw); 787ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Samsvoid rsdAllocationIoSend(const android::renderscript::Context *rsc, 797ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Sams android::renderscript::Allocation *alloc); 807ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Samsvoid rsdAllocationIoReceive(const android::renderscript::Context *rsc, 817ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Sams android::renderscript::Allocation *alloc); 82eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 83eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsdAllocationData1D(const android::renderscript::Context *rsc, 84eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const android::renderscript::Allocation *alloc, 85eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t xoff, uint32_t lod, uint32_t count, 86eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const void *data, uint32_t sizeBytes); 87eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsdAllocationData2D(const android::renderscript::Context *rsc, 88eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const android::renderscript::Allocation *alloc, 89eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, 90eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t w, uint32_t h, 91eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const void *data, uint32_t sizeBytes); 92eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsdAllocationData3D(const android::renderscript::Context *rsc, 93eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const android::renderscript::Allocation *alloc, 94eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t xoff, uint32_t yoff, uint32_t zoff, 95eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t lod, RsAllocationCubemapFace face, 96eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t w, uint32_t h, uint32_t d, const void *data, uint32_t sizeBytes); 97eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 9874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukvoid rsdAllocationData1D_alloc(const android::renderscript::Context *rsc, 9974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const android::renderscript::Allocation *dstAlloc, 10074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstXoff, uint32_t dstLod, uint32_t count, 10174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const android::renderscript::Allocation *srcAlloc, 10274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcXoff, uint32_t srcLod); 10374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukvoid rsdAllocationData2D_alloc(const android::renderscript::Context *rsc, 10474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const android::renderscript::Allocation *dstAlloc, 10574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstXoff, uint32_t dstYoff, uint32_t dstLod, 10674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RsAllocationCubemapFace dstFace, uint32_t w, uint32_t h, 10774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const android::renderscript::Allocation *srcAlloc, 10874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcXoff, uint32_t srcYoff, uint32_t srcLod, 10974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RsAllocationCubemapFace srcFace); 11074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukvoid rsdAllocationData3D_alloc(const android::renderscript::Context *rsc, 11174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const android::renderscript::Allocation *dstAlloc, 11274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff, 11374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstLod, RsAllocationCubemapFace dstFace, 11474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t w, uint32_t h, uint32_t d, 11574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const android::renderscript::Allocation *srcAlloc, 11674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, 11774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcLod, RsAllocationCubemapFace srcFace); 11874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 119eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsdAllocationElementData1D(const android::renderscript::Context *rsc, 120eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const android::renderscript::Allocation *alloc, 121eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t x, 122eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const void *data, uint32_t elementOff, uint32_t sizeBytes); 123eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsdAllocationElementData2D(const android::renderscript::Context *rsc, 124eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const android::renderscript::Allocation *alloc, 125eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t x, uint32_t y, 126eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams const void *data, uint32_t elementOff, uint32_t sizeBytes); 127eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 128eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 129eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 130eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 131eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams#endif 132