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