rs_hal.h revision bad807405b2b9764372af1ad24bcfd4fb1f33d8e
1bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams/* 2bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * Copyright (C) 2011 The Android Open Source Project 3bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * 4bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * you may not use this file except in compliance with the License. 6bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * You may obtain a copy of the License at 7bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * 8bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * 10bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * Unless required by applicable law or agreed to in writing, software 11bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * See the License for the specific language governing permissions and 14bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * limitations under the License. 15bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams */ 16bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 17bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams#ifndef RS_HAL_H 18bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams#define RS_HAL_H 19bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 20bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams#include <RenderScriptDefines.h> 21bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 22bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsnamespace android { 23bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsnamespace renderscript { 24bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 25bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Context; 26bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass ObjectBase; 27bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Element; 28bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Type; 29bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Allocation; 30bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Script; 31bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass ScriptC; 32bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 33bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 34bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samstypedef struct RsHalRec RsHal; 35bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 36bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samstypedef void *(*RsHalSymbolLookupFunc)(void *usrptr, char const *symbolName); 37bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 38bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 39bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 40bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams/** 41bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * Script management functions 42bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams */ 43bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samstypedef struct { 44bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*shutdownDriver)(RsHal dc); 45bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*getVersion)(unsigned int *major, unsigned int *minor); 46bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 47bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 48bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 49bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams struct { 50bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams bool (*scriptInit)(const Context *rsc, ScriptC *s, 51bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams char const *resName, 52bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams char const *cacheDir, 53bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint8_t const *bitcode, 54bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams size_t bitcodeSize, 55bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t flags, 56bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams RsHalSymbolLookupFunc lookupFunc); 57bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 58bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*invokeFunction)(const Context *rsc, const Script *s, 59bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 60bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams const void *params, 61bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams size_t paramLength); 62bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams int (*invokeRoot)(const Context *rsc, const Script *s); 63bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*invokeInit)(const Context *rsc, const Script *s); 64bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 65bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*setGlobalVar)(const Context *rsc, const Script *s, 66bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 67bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void *data, 68bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams size_t dataLength); 69bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*setGlobalBind)(const Context *rsc, const Script *s, 70bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 71bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void *data); 72bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*setGlobalObj)(const Context *rsc, const Script *s, 73bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 74bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams ObjectBase *data); 75bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 76bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*destroy)(const Context *rsc, Script *s); 77bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams } script; 78bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 79bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 80bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 81bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams} RsdHalFunctions; 82bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 83bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsvoid rsiSetObject(ObjectBase **vdst, ObjectBase * vsrc); 84bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsvoid rsiClearObject(ObjectBase **vdst); 85bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsbool rsiIsObject(const ObjectBase *vdst); 86bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 87bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams} 88bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams} 89bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 90bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 91bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsbool rsdHalInit(android::renderscript::Context *, uint32_t version_major, uint32_t version_minor); 92bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 93bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams#endif 94bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 95