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