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