1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef RSD_ALLOCATION_H 18 #define RSD_ALLOCATION_H 19 20 #include <rs_hal.h> 21 #include <rsRuntime.h> 22 23 #include <GLES/gl.h> 24 #include <GLES2/gl2.h> 25 26 class RsdFrameBufferObj; 27 28 struct DrvAllocation { 29 // Is this a legal structure to be used as a texture source. 30 // Initially this will require 1D or 2D and color data 31 uint32_t textureID; 32 33 // Is this a legal structure to be used as a vertex source. 34 // Initially this will require 1D and x(yzw). Additional per element data 35 // is allowed. 36 uint32_t bufferID; 37 38 // Is this a legal structure to be used as an FBO render target 39 uint32_t renderTargetID; 40 41 uint8_t * mallocPtr; 42 43 GLenum glTarget; 44 GLenum glType; 45 GLenum glFormat; 46 47 bool uploadDeferred; 48 49 RsdFrameBufferObj * readBackFBO; 50 }; 51 52 GLenum rsdTypeToGLType(RsDataType t); 53 GLenum rsdKindToGLFormat(RsDataKind k); 54 55 56 bool rsdAllocationInit(const android::renderscript::Context *rsc, 57 android::renderscript::Allocation *alloc, 58 bool forceZero); 59 void rsdAllocationDestroy(const android::renderscript::Context *rsc, 60 android::renderscript::Allocation *alloc); 61 62 void rsdAllocationResize(const android::renderscript::Context *rsc, 63 const android::renderscript::Allocation *alloc, 64 const android::renderscript::Type *newType, bool zeroNew); 65 void rsdAllocationSyncAll(const android::renderscript::Context *rsc, 66 const android::renderscript::Allocation *alloc, 67 RsAllocationUsageType src); 68 void rsdAllocationMarkDirty(const android::renderscript::Context *rsc, 69 const android::renderscript::Allocation *alloc); 70 71 void rsdAllocationData1D(const android::renderscript::Context *rsc, 72 const android::renderscript::Allocation *alloc, 73 uint32_t xoff, uint32_t lod, uint32_t count, 74 const void *data, uint32_t sizeBytes); 75 void rsdAllocationData2D(const android::renderscript::Context *rsc, 76 const android::renderscript::Allocation *alloc, 77 uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, 78 uint32_t w, uint32_t h, 79 const void *data, uint32_t sizeBytes); 80 void rsdAllocationData3D(const android::renderscript::Context *rsc, 81 const android::renderscript::Allocation *alloc, 82 uint32_t xoff, uint32_t yoff, uint32_t zoff, 83 uint32_t lod, RsAllocationCubemapFace face, 84 uint32_t w, uint32_t h, uint32_t d, const void *data, uint32_t sizeBytes); 85 86 void rsdAllocationData1D_alloc(const android::renderscript::Context *rsc, 87 const android::renderscript::Allocation *dstAlloc, 88 uint32_t dstXoff, uint32_t dstLod, uint32_t count, 89 const android::renderscript::Allocation *srcAlloc, 90 uint32_t srcXoff, uint32_t srcLod); 91 void rsdAllocationData2D_alloc(const android::renderscript::Context *rsc, 92 const android::renderscript::Allocation *dstAlloc, 93 uint32_t dstXoff, uint32_t dstYoff, uint32_t dstLod, 94 RsAllocationCubemapFace dstFace, uint32_t w, uint32_t h, 95 const android::renderscript::Allocation *srcAlloc, 96 uint32_t srcXoff, uint32_t srcYoff, uint32_t srcLod, 97 RsAllocationCubemapFace srcFace); 98 void rsdAllocationData3D_alloc(const android::renderscript::Context *rsc, 99 const android::renderscript::Allocation *dstAlloc, 100 uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff, 101 uint32_t dstLod, RsAllocationCubemapFace dstFace, 102 uint32_t w, uint32_t h, uint32_t d, 103 const android::renderscript::Allocation *srcAlloc, 104 uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, 105 uint32_t srcLod, RsAllocationCubemapFace srcFace); 106 107 void rsdAllocationElementData1D(const android::renderscript::Context *rsc, 108 const android::renderscript::Allocation *alloc, 109 uint32_t x, 110 const void *data, uint32_t elementOff, uint32_t sizeBytes); 111 void rsdAllocationElementData2D(const android::renderscript::Context *rsc, 112 const android::renderscript::Allocation *alloc, 113 uint32_t x, uint32_t y, 114 const void *data, uint32_t elementOff, uint32_t sizeBytes); 115 116 117 118 119 #endif 120