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
311ffd86b448d78366190c540f98f8b6d641cdb6cfYang Nibool rsdScriptGroupInit(const Context *rsc, ScriptGroupBase *sg) {
32709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    RsdHal *dc = (RsdHal *)rsc->mHal.drv;
33dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams
34709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    sg->mHal.drv = dc->mCpuRef->createScriptGroup(sg);
3544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return sg->mHal.drv != nullptr;
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
461ffd86b448d78366190c540f98f8b6d641cdb6cfYang Nivoid rsdScriptGroupExecute(const Context *rsc, const ScriptGroupBase *sg) {
471ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni    RsdCpuReference::CpuScriptGroupBase *sgi =
481ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni        (RsdCpuReference::CpuScriptGroupBase *)sg->mHal.drv;
49709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    sgi->execute();
50dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams}
51dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams
521ffd86b448d78366190c540f98f8b6d641cdb6cfYang Nivoid rsdScriptGroupDestroy(const Context *rsc, const ScriptGroupBase *sg) {
531ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni    RsdCpuReference::CpuScriptGroupBase *sgi =
541ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni        (RsdCpuReference::CpuScriptGroupBase *)sg->mHal.drv;
55709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    delete sgi;
56dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams}
57dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams
58a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid rsdScriptGroupUpdateCachedObject(const Context *rsc,
59a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                      const ScriptGroup *sg,
60a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                      rs_script_group *obj)
61a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams{
62a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    obj->p = sg;
63a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams#ifdef __LP64__
6444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    obj->r = nullptr;
6544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (sg != nullptr) {
66a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        obj->v1 = sg->mHal.drv;
67a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    } else {
6844bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        obj->v1 = nullptr;
69a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    }
7044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    obj->v2 = nullptr;
71a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams#endif
72a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams}
73