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