rs_hal.h revision da6d34a5a6ece8c30d20673b9b6ff07d8c91768b
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 RS_HAL_H 18#define RS_HAL_H 19 20#include <RenderScriptDefines.h> 21#include <ui/egl/android_natives.h> 22 23namespace android { 24namespace renderscript { 25 26class Context; 27class ObjectBase; 28class Element; 29class Type; 30class Allocation; 31class Script; 32class ScriptC; 33class Program; 34class ProgramStore; 35class ProgramRaster; 36class ProgramVertex; 37class ProgramFragment; 38class Mesh; 39class Sampler; 40class FBOCache; 41 42typedef void *(*RsHalSymbolLookupFunc)(void *usrptr, char const *symbolName); 43 44/** 45 * Script management functions 46 */ 47typedef struct { 48 bool (*initGraphics)(const Context *); 49 void (*shutdownGraphics)(const Context *); 50 bool (*setSurface)(const Context *, uint32_t w, uint32_t h, ANativeWindow *); 51 void (*swap)(const Context *); 52 53 void (*shutdownDriver)(Context *); 54 void (*getVersion)(unsigned int *major, unsigned int *minor); 55 void (*setPriority)(const Context *, int32_t priority); 56 57 58 59 struct { 60 bool (*init)(const Context *rsc, ScriptC *s, 61 char const *resName, 62 char const *cacheDir, 63 uint8_t const *bitcode, 64 size_t bitcodeSize, 65 uint32_t flags); 66 67 void (*invokeFunction)(const Context *rsc, Script *s, 68 uint32_t slot, 69 const void *params, 70 size_t paramLength); 71 int (*invokeRoot)(const Context *rsc, Script *s); 72 void (*invokeForEach)(const Context *rsc, 73 Script *s, 74 const Allocation * ain, 75 Allocation * aout, 76 const void * usr, 77 uint32_t usrLen, 78 const RsScriptCall *sc); 79 void (*invokeInit)(const Context *rsc, Script *s); 80 81 void (*setGlobalVar)(const Context *rsc, const Script *s, 82 uint32_t slot, 83 void *data, 84 size_t dataLength); 85 void (*setGlobalBind)(const Context *rsc, const Script *s, 86 uint32_t slot, 87 void *data); 88 void (*setGlobalObj)(const Context *rsc, const Script *s, 89 uint32_t slot, 90 ObjectBase *data); 91 92 void (*destroy)(const Context *rsc, Script *s); 93 } script; 94 95 struct { 96 bool (*init)(const Context *rsc, const ProgramStore *ps); 97 void (*setActive)(const Context *rsc, const ProgramStore *ps); 98 void (*destroy)(const Context *rsc, const ProgramStore *ps); 99 } store; 100 101 struct { 102 bool (*init)(const Context *rsc, const ProgramRaster *ps); 103 void (*setActive)(const Context *rsc, const ProgramRaster *ps); 104 void (*destroy)(const Context *rsc, const ProgramRaster *ps); 105 } raster; 106 107 struct { 108 bool (*init)(const Context *rsc, const ProgramVertex *pv, 109 const char* shader, uint32_t shaderLen); 110 void (*setActive)(const Context *rsc, const ProgramVertex *pv); 111 void (*destroy)(const Context *rsc, const ProgramVertex *pv); 112 } vertex; 113 114 struct { 115 bool (*init)(const Context *rsc, const ProgramFragment *pf, 116 const char* shader, uint32_t shaderLen); 117 void (*setActive)(const Context *rsc, const ProgramFragment *pf); 118 void (*destroy)(const Context *rsc, const ProgramFragment *pf); 119 } fragment; 120 121 struct { 122 bool (*init)(const Context *rsc, const Mesh *m); 123 void (*draw)(const Context *rsc, const Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len); 124 void (*destroy)(const Context *rsc, const Mesh *m); 125 } mesh; 126 127 struct { 128 bool (*init)(const Context *rsc, const Sampler *m); 129 void (*destroy)(const Context *rsc, const Sampler *m); 130 } sampler; 131 132 struct { 133 bool (*init)(const Context *rsc, const FBOCache *fb); 134 void (*setActive)(const Context *rsc, const FBOCache *fb); 135 void (*destroy)(const Context *rsc, const FBOCache *fb); 136 } framebuffer; 137 138} RsdHalFunctions; 139 140 141} 142} 143 144 145bool rsdHalInit(android::renderscript::Context *, uint32_t version_major, uint32_t version_minor); 146 147#endif 148 149