1dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams/* 2709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * Copyright (C) 2011-2012 The Android Open Source Project 3dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * 4dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * you may not use this file except in compliance with the License. 6dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * You may obtain a copy of the License at 7dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * 8dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * 10dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * Unless required by applicable law or agreed to in writing, software 11dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * See the License for the specific language governing permissions and 14dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams * limitations under the License. 15dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams */ 16dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 17dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams#include "rsdCore.h" 18709a0978ae141198018ca9769f8d96292a8928e6Jason Sams#include "../cpu_ref/rsd_cpu.h" 19dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 20dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 21dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams#include "rsScript.h" 22dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams#include "rsScriptGroup.h" 23dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams#include "rsdScriptGroup.h" 24dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams#include "rsdBcc.h" 25bee28c6b56d0c399402014cd58cea426da2b98c1Jason Sams#include "rsdAllocation.h" 26dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 27e939ce7e3b609ee53d73c2b48c5ff8f03b4579a3Chih-Hung Hsiehusing android::renderscript::Allocation; 28e939ce7e3b609ee53d73c2b48c5ff8f03b4579a3Chih-Hung Hsiehusing android::renderscript::Context; 29e939ce7e3b609ee53d73c2b48c5ff8f03b4579a3Chih-Hung Hsiehusing android::renderscript::RsdCpuReference; 30e939ce7e3b609ee53d73c2b48c5ff8f03b4579a3Chih-Hung Hsiehusing android::renderscript::ScriptGroup; 31e939ce7e3b609ee53d73c2b48c5ff8f03b4579a3Chih-Hung Hsiehusing android::renderscript::ScriptGroupBase; 32e939ce7e3b609ee53d73c2b48c5ff8f03b4579a3Chih-Hung Hsiehusing android::renderscript::ScriptKernelID; 33e939ce7e3b609ee53d73c2b48c5ff8f03b4579a3Chih-Hung Hsiehusing android::renderscript::rs_script_group; 34dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 351ffd86b448d78366190c540f98f8b6d641cdb6cfYang Nibool rsdScriptGroupInit(const Context *rsc, ScriptGroupBase *sg) { 36709a0978ae141198018ca9769f8d96292a8928e6Jason Sams RsdHal *dc = (RsdHal *)rsc->mHal.drv; 37dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 38709a0978ae141198018ca9769f8d96292a8928e6Jason Sams sg->mHal.drv = dc->mCpuRef->createScriptGroup(sg); 3944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes return sg->mHal.drv != nullptr; 40dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams} 41dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 42709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsdScriptGroupSetInput(const Context *rsc, const ScriptGroup *sg, 43709a0978ae141198018ca9769f8d96292a8928e6Jason Sams const ScriptKernelID *kid, Allocation *) { 44dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams} 45dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 46709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsdScriptGroupSetOutput(const Context *rsc, const ScriptGroup *sg, 47709a0978ae141198018ca9769f8d96292a8928e6Jason Sams const ScriptKernelID *kid, Allocation *) { 48bee28c6b56d0c399402014cd58cea426da2b98c1Jason Sams} 49bee28c6b56d0c399402014cd58cea426da2b98c1Jason Sams 501ffd86b448d78366190c540f98f8b6d641cdb6cfYang Nivoid rsdScriptGroupExecute(const Context *rsc, const ScriptGroupBase *sg) { 511ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni RsdCpuReference::CpuScriptGroupBase *sgi = 521ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni (RsdCpuReference::CpuScriptGroupBase *)sg->mHal.drv; 53709a0978ae141198018ca9769f8d96292a8928e6Jason Sams sgi->execute(); 54dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams} 55dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 561ffd86b448d78366190c540f98f8b6d641cdb6cfYang Nivoid rsdScriptGroupDestroy(const Context *rsc, const ScriptGroupBase *sg) { 571ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni RsdCpuReference::CpuScriptGroupBase *sgi = 581ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni (RsdCpuReference::CpuScriptGroupBase *)sg->mHal.drv; 59709a0978ae141198018ca9769f8d96292a8928e6Jason Sams delete sgi; 60dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams} 61dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 62a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid rsdScriptGroupUpdateCachedObject(const Context *rsc, 63a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams const ScriptGroup *sg, 64a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams rs_script_group *obj) 65a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams{ 66a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams obj->p = sg; 67a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams#ifdef __LP64__ 68700e68883c4324c15b380ff6724249f39d4f498cI-Jui (Ray) Sung obj->unused1 = nullptr; 69700e68883c4324c15b380ff6724249f39d4f498cI-Jui (Ray) Sung obj->unused2 = nullptr; 70700e68883c4324c15b380ff6724249f39d4f498cI-Jui (Ray) Sung obj->unused3 = nullptr; 71a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams#endif 72a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams} 73