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 27dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Samsusing namespace android; 28dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Samsusing namespace android::renderscript; 29dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 30dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 31709a0978ae141198018ca9769f8d96292a8928e6Jason Samsbool rsdScriptGroupInit(const Context *rsc, ScriptGroup *sg) { 32709a0978ae141198018ca9769f8d96292a8928e6Jason Sams RsdHal *dc = (RsdHal *)rsc->mHal.drv; 33dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 34709a0978ae141198018ca9769f8d96292a8928e6Jason Sams sg->mHal.drv = dc->mCpuRef->createScriptGroup(sg); 35709a0978ae141198018ca9769f8d96292a8928e6Jason Sams return sg->mHal.drv != NULL; 36dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams} 37dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 38709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsdScriptGroupSetInput(const Context *rsc, const ScriptGroup *sg, 39709a0978ae141198018ca9769f8d96292a8928e6Jason Sams const ScriptKernelID *kid, Allocation *) { 40dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams} 41dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 42709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsdScriptGroupSetOutput(const Context *rsc, const ScriptGroup *sg, 43709a0978ae141198018ca9769f8d96292a8928e6Jason Sams const ScriptKernelID *kid, Allocation *) { 44bee28c6b56d0c399402014cd58cea426da2b98c1Jason Sams} 45bee28c6b56d0c399402014cd58cea426da2b98c1Jason Sams 46709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsdScriptGroupExecute(const Context *rsc, const ScriptGroup *sg) { 47709a0978ae141198018ca9769f8d96292a8928e6Jason Sams RsdCpuReference::CpuScriptGroup *sgi = (RsdCpuReference::CpuScriptGroup *)sg->mHal.drv; 48709a0978ae141198018ca9769f8d96292a8928e6Jason Sams sgi->execute(); 49dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams} 50dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 51709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsdScriptGroupDestroy(const Context *rsc, const ScriptGroup *sg) { 52709a0978ae141198018ca9769f8d96292a8928e6Jason Sams RsdCpuReference::CpuScriptGroup *sgi = (RsdCpuReference::CpuScriptGroup *)sg->mHal.drv; 53709a0978ae141198018ca9769f8d96292a8928e6Jason Sams delete sgi; 54dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams} 55dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 56a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid rsdScriptGroupUpdateCachedObject(const Context *rsc, 57a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams const ScriptGroup *sg, 58a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams rs_script_group *obj) 59a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams{ 60a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams obj->p = sg; 61a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams#ifdef __LP64__ 62a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams obj->r = NULL; 63a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams if (sg != NULL) { 64a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams obj->v1 = sg->mHal.drv; 65a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams } else { 66a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams obj->v1 = NULL; 67a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams } 68a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams obj->v2 = NULL; 69a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams#endif 70a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams} 71a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams 72dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 73