rs_hal.h revision 721acc495b859c6d884725a4f9b5523583dd11c7
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; 328feea4e0dec48ea03bd6d32706d058b86dddc5baJason Samsclass ProgramStore; 33721acc495b859c6d884725a4f9b5523583dd11c7Jason Samsclass ProgramRaster; 34bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 35bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samstypedef void *(*RsHalSymbolLookupFunc)(void *usrptr, char const *symbolName); 36bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 37cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Samstypedef struct ScriptTLSStructRec { 38cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams Context * mContext; 39cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams Script * mScript; 40cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams} ScriptTLSStruct; 41bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 42bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 43bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams/** 44bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * Script management functions 45bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams */ 46bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samstypedef struct { 47cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*shutdownDriver)(Context *); 48bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*getVersion)(unsigned int *major, unsigned int *minor); 49cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*setPriority)(const Context *, int32_t priority); 50bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 51bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 52bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 53bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams struct { 548feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool (*init)(const Context *rsc, ScriptC *s, 558feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams char const *resName, 568feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams char const *cacheDir, 578feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams uint8_t const *bitcode, 588feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams size_t bitcodeSize, 598feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams uint32_t flags, 608feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams RsHalSymbolLookupFunc lookupFunc); 61bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 62cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*invokeFunction)(const Context *rsc, Script *s, 63bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 64bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams const void *params, 65bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams size_t paramLength); 66cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams int (*invokeRoot)(const Context *rsc, Script *s); 67cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*invokeForEach)(const Context *rsc, 68cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams Script *s, 69cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams const Allocation * ain, 70cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams Allocation * aout, 71cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams const void * usr, 72cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams uint32_t usrLen, 73cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams const RsScriptCall *sc); 74cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*invokeInit)(const Context *rsc, Script *s); 75bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 76bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*setGlobalVar)(const Context *rsc, const Script *s, 77bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 78bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void *data, 79bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams size_t dataLength); 80bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*setGlobalBind)(const Context *rsc, const Script *s, 81bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 82bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void *data); 83bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*setGlobalObj)(const Context *rsc, const Script *s, 84bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 85bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams ObjectBase *data); 86bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 87bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*destroy)(const Context *rsc, Script *s); 88bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams } script; 89bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 90bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 918feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams struct { 928feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool (*init)(const Context *rsc, const ProgramStore *ps); 938feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams void (*setActive)(const Context *rsc, const ProgramStore *ps); 948feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams void (*destroy)(const Context *rsc, const ProgramStore *ps); 958feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams } store; 968feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 97721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams struct { 98721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams bool (*init)(const Context *rsc, const ProgramRaster *ps); 99721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams void (*setActive)(const Context *rsc, const ProgramRaster *ps); 100721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams void (*destroy)(const Context *rsc, const ProgramRaster *ps); 101721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams } raster; 1028feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 103bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 104bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams} RsdHalFunctions; 105bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 106bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsvoid rsiSetObject(ObjectBase **vdst, ObjectBase * vsrc); 107bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsvoid rsiClearObject(ObjectBase **vdst); 108bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsbool rsiIsObject(const ObjectBase *vdst); 109bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 110bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams} 111bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams} 112bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 113bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 114bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsbool rsdHalInit(android::renderscript::Context *, uint32_t version_major, uint32_t version_minor); 115bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 116bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams#endif 117bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 118