rsdAllocation.h revision 733396b67724162844ea2785c7495115dc5ee8d8
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#include <rsAllocation.h> 23 24#include "../cpu_ref/rsd_cpu.h" 25#include "gui/CpuConsumer.h" 26 27#include <GLES/gl.h> 28#include <GLES2/gl2.h> 29 30class RsdFrameBufferObj; 31struct ANativeWindowBuffer; 32 33 34struct DrvAllocation { 35 // Is this a legal structure to be used as a texture source. 36 // Initially this will require 1D or 2D and color data 37 uint32_t textureID; 38 39 // Is this a legal structure to be used as a vertex source. 40 // Initially this will require 1D and x(yzw). Additional per element data 41 // is allowed. 42 uint32_t bufferID; 43 44 // Is this a legal structure to be used as an FBO render target 45 uint32_t renderTargetID; 46 47#ifndef RS_COMPATIBILITY_LIB 48 GLenum glTarget; 49 GLenum glType; 50 GLenum glFormat; 51#else 52 int glTarget; 53 int glType; 54 int glFormat; 55#endif 56 57 bool useUserProvidedPtr; 58 bool uploadDeferred; 59 60 RsdFrameBufferObj * readBackFBO; 61 ANativeWindow *wnd; 62 ANativeWindowBuffer *wndBuffer; 63 64 android::sp< android::CpuConsumer > cpuConsumer; 65 android::CpuConsumer::LockedBuffer lb; 66}; 67 68#ifndef RS_COMPATIBILITY_LIB 69GLenum rsdTypeToGLType(RsDataType t); 70GLenum rsdKindToGLFormat(RsDataKind k); 71#endif 72 73 74bool rsdAllocationInit(const android::renderscript::Context *rsc, 75 android::renderscript::Allocation *alloc, 76 bool forceZero); 77void rsdAllocationDestroy(const android::renderscript::Context *rsc, 78 android::renderscript::Allocation *alloc); 79 80void rsdAllocationResize(const android::renderscript::Context *rsc, 81 const android::renderscript::Allocation *alloc, 82 const android::renderscript::Type *newType, bool zeroNew); 83void rsdAllocationSyncAll(const android::renderscript::Context *rsc, 84 const android::renderscript::Allocation *alloc, 85 RsAllocationUsageType src); 86void rsdAllocationMarkDirty(const android::renderscript::Context *rsc, 87 const android::renderscript::Allocation *alloc); 88void* rsdAllocationGetSurface(const android::renderscript::Context *rsc, 89 const android::renderscript::Allocation *alloc); 90void rsdAllocationSetSurface(const android::renderscript::Context *rsc, 91 android::renderscript::Allocation *alloc, ANativeWindow *nw); 92void rsdAllocationIoSend(const android::renderscript::Context *rsc, 93 android::renderscript::Allocation *alloc); 94void rsdAllocationIoReceive(const android::renderscript::Context *rsc, 95 android::renderscript::Allocation *alloc); 96 97void rsdAllocationData1D(const android::renderscript::Context *rsc, 98 const android::renderscript::Allocation *alloc, 99 uint32_t xoff, uint32_t lod, uint32_t count, 100 const void *data, uint32_t sizeBytes); 101void rsdAllocationData2D(const android::renderscript::Context *rsc, 102 const android::renderscript::Allocation *alloc, 103 uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, 104 uint32_t w, uint32_t h, 105 const void *data, uint32_t sizeBytes, size_t stride); 106void rsdAllocationData3D(const android::renderscript::Context *rsc, 107 const android::renderscript::Allocation *alloc, 108 uint32_t xoff, uint32_t yoff, uint32_t zoff, 109 uint32_t lod, RsAllocationCubemapFace face, 110 uint32_t w, uint32_t h, uint32_t d, const void *data, uint32_t sizeBytes); 111 112void rsdAllocationRead1D(const android::renderscript::Context *rsc, 113 const android::renderscript::Allocation *alloc, 114 uint32_t xoff, uint32_t lod, uint32_t count, 115 void *data, uint32_t sizeBytes); 116void rsdAllocationRead2D(const android::renderscript::Context *rsc, 117 const android::renderscript::Allocation *alloc, 118 uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, 119 uint32_t w, uint32_t h, 120 void *data, uint32_t sizeBytes, size_t stride); 121void rsdAllocationRead3D(const android::renderscript::Context *rsc, 122 const android::renderscript::Allocation *alloc, 123 uint32_t xoff, uint32_t yoff, uint32_t zoff, 124 uint32_t lod, RsAllocationCubemapFace face, 125 uint32_t w, uint32_t h, uint32_t d, void *data, uint32_t sizeBytes); 126 127void * rsdAllocationLock1D(const android::renderscript::Context *rsc, 128 const android::renderscript::Allocation *alloc); 129void rsdAllocationUnlock1D(const android::renderscript::Context *rsc, 130 const android::renderscript::Allocation *alloc); 131 132 133void rsdAllocationData1D_alloc(const android::renderscript::Context *rsc, 134 const android::renderscript::Allocation *dstAlloc, 135 uint32_t dstXoff, uint32_t dstLod, uint32_t count, 136 const android::renderscript::Allocation *srcAlloc, 137 uint32_t srcXoff, uint32_t srcLod); 138void rsdAllocationData2D_alloc(const android::renderscript::Context *rsc, 139 const android::renderscript::Allocation *dstAlloc, 140 uint32_t dstXoff, uint32_t dstYoff, uint32_t dstLod, 141 RsAllocationCubemapFace dstFace, uint32_t w, uint32_t h, 142 const android::renderscript::Allocation *srcAlloc, 143 uint32_t srcXoff, uint32_t srcYoff, uint32_t srcLod, 144 RsAllocationCubemapFace srcFace); 145void rsdAllocationData3D_alloc(const android::renderscript::Context *rsc, 146 const android::renderscript::Allocation *dstAlloc, 147 uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff, 148 uint32_t dstLod, RsAllocationCubemapFace dstFace, 149 uint32_t w, uint32_t h, uint32_t d, 150 const android::renderscript::Allocation *srcAlloc, 151 uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, 152 uint32_t srcLod, RsAllocationCubemapFace srcFace); 153 154void rsdAllocationElementData1D(const android::renderscript::Context *rsc, 155 const android::renderscript::Allocation *alloc, 156 uint32_t x, 157 const void *data, uint32_t elementOff, uint32_t sizeBytes); 158void rsdAllocationElementData2D(const android::renderscript::Context *rsc, 159 const android::renderscript::Allocation *alloc, 160 uint32_t x, uint32_t y, 161 const void *data, uint32_t elementOff, uint32_t sizeBytes); 162 163void rsdAllocationGenerateMipmaps(const android::renderscript::Context *rsc, 164 const android::renderscript::Allocation *alloc); 165 166 167 168#endif 169