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