1ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams/*
2ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Copyright (C) 2012 The Android Open Source Project
3ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams *
4ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * you may not use this file except in compliance with the License.
6ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * You may obtain a copy of the License at
7ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams *
8ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams *
10ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Unless required by applicable law or agreed to in writing, software
11ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * See the License for the specific language governing permissions and
14ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * limitations under the License.
15ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams */
16ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
17ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
18ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#include "rsdCore.h"
19ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#include "rsdIntrinsics.h"
20ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#include "rsdAllocation.h"
21ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
22ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsusing namespace android;
23ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsusing namespace android::renderscript;
24ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
25ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid * rsdIntrinsic_InitBlur(const Context *, Script *, RsdIntriniscFuncs_t *);
26ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid * rsdIntrinsic_InitConvolve3x3(const Context *, Script *, RsdIntriniscFuncs_t *);
27ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid * rsdIntrinsic_InitConvolve5x5(const Context *, Script *, RsdIntriniscFuncs_t *);
28ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid * rsdIntrinsic_InitColorMatrix(const Context *, Script *, RsdIntriniscFuncs_t *);
29ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid * rsdIntrinsic_InitLUT(const Context *, Script *, RsdIntriniscFuncs_t *);
30ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid * rsdIntrinsic_InitYuvToRGB(const Context *, Script *, RsdIntriniscFuncs_t *);
31ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid * rsdIntrinsic_InitBlend(const Context *, Script *, RsdIntriniscFuncs_t *);
32ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
33ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsstatic void Bind(const Context *, const Script *, void *, uint32_t, Allocation *) {
34ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    rsAssert(!"Intrinsic_Bind unexpectedly called");
35ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams}
36ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
37ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsstatic void SetVar(const Context *, const Script *, void *, uint32_t, void *, size_t) {
38ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    rsAssert(!"Intrinsic_Bind unexpectedly called");
39ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams}
40ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
41ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsstatic void Destroy(const Context *dc, const Script *script, void * intrinsicData) {
42ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    free(intrinsicData);
43ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams}
44ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
45ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid * rsdIntrinsic_Init(const android::renderscript::Context *dc,
46ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams                       android::renderscript::Script *script,
47ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams                       RsScriptIntrinsicID iid,
48ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams                       RsdIntriniscFuncs_t *funcs) {
49ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
50ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    funcs->bind = Bind;
51ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    funcs->setVar = SetVar;
52ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    funcs->destroy = Destroy;
53ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
54ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    switch(iid) {
55ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    case RS_SCRIPT_INTRINSIC_ID_CONVOLVE_3x3:
56ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams        return rsdIntrinsic_InitConvolve3x3(dc, script, funcs);
57ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    case RS_SCRIPT_INTRINSIC_ID_CONVOLVE_5x5:
58ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams        return rsdIntrinsic_InitConvolve5x5(dc, script, funcs);
59ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    case RS_SCRIPT_INTRINSIC_ID_COLOR_MATRIX:
60ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams        return rsdIntrinsic_InitColorMatrix(dc, script, funcs);
61ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    case RS_SCRIPT_INTRINSIC_ID_LUT:
62ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams        return rsdIntrinsic_InitLUT(dc, script, funcs);
63ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    case RS_SCRIPT_INTRINSIC_ID_BLUR:
64ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams        return rsdIntrinsic_InitBlur(dc, script, funcs);
65ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    case RS_SCRIPT_INTRINSIC_ID_YUV_TO_RGB:
66ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams        return rsdIntrinsic_InitYuvToRGB(dc, script, funcs);
67ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    case RS_SCRIPT_INTRINSIC_ID_BLEND:
68ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams        return rsdIntrinsic_InitBlend(dc, script, funcs);
69ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
70ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    default:
71ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams        return NULL;
72ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    }
73ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    return NULL;
74ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams}
75ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
76ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
77ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
78