1709a0978ae141198018ca9769f8d96292a8928e6Jason Sams/*
2709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * Copyright (C) 2011-2012 The Android Open Source Project
3709a0978ae141198018ca9769f8d96292a8928e6Jason Sams *
4709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * you may not use this file except in compliance with the License.
6709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * You may obtain a copy of the License at
7709a0978ae141198018ca9769f8d96292a8928e6Jason Sams *
8709a0978ae141198018ca9769f8d96292a8928e6Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9709a0978ae141198018ca9769f8d96292a8928e6Jason Sams *
10709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * Unless required by applicable law or agreed to in writing, software
11709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * See the License for the specific language governing permissions and
14709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * limitations under the License.
15709a0978ae141198018ca9769f8d96292a8928e6Jason Sams */
16709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
17709a0978ae141198018ca9769f8d96292a8928e6Jason Sams#ifndef RSD_SCRIPT_GROUP_H
18709a0978ae141198018ca9769f8d96292a8928e6Jason Sams#define RSD_SCRIPT_GROUP_H
19709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
2093eacc7ce0aad4314b4cb41a281f59ce54bb3286Jason Sams#include "rsd_cpu.h"
21709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
22709a0978ae141198018ca9769f8d96292a8928e6Jason Samsnamespace android {
23709a0978ae141198018ca9769f8d96292a8928e6Jason Samsnamespace renderscript {
24709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
25709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
26709a0978ae141198018ca9769f8d96292a8928e6Jason Samsclass CpuScriptGroupImpl : public RsdCpuReference::CpuScriptGroup {
27709a0978ae141198018ca9769f8d96292a8928e6Jason Samspublic:
28709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    virtual void setInput(const ScriptKernelID *kid, Allocation *);
29709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    virtual void setOutput(const ScriptKernelID *kid, Allocation *);
30709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    virtual void execute();
31709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    virtual ~CpuScriptGroupImpl();
32709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
33709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    CpuScriptGroupImpl(RsdCpuReferenceImpl *ctx, const ScriptGroup *sg);
34709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    bool init();
35709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
36709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    static void scriptGroupRoot(const RsForEachStubParamStruct *p,
37709a0978ae141198018ca9769f8d96292a8928e6Jason Sams                                uint32_t xstart, uint32_t xend,
38709a0978ae141198018ca9769f8d96292a8928e6Jason Sams                                uint32_t instep, uint32_t outstep);
39709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
40709a0978ae141198018ca9769f8d96292a8928e6Jason Samsprotected:
41709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    struct ScriptList {
42709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        size_t count;
43709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        Allocation *const* ins;
44709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        bool const* inExts;
45709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        Allocation *const* outs;
46709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        bool const* outExts;
47709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        const void *const* usrPtrs;
48709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        size_t const *usrSizes;
49709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        uint32_t const *sigs;
50709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        const void *const* fnPtrs;
51709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
52709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        const ScriptKernelID *const* kernels;
53709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    };
54709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    ScriptList mSl;
55709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const ScriptGroup *mSG;
56709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    RsdCpuReferenceImpl *mCtx;
57709a0978ae141198018ca9769f8d96292a8928e6Jason Sams};
58709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
59709a0978ae141198018ca9769f8d96292a8928e6Jason Sams}
60709a0978ae141198018ca9769f8d96292a8928e6Jason Sams}
61709a0978ae141198018ca9769f8d96292a8928e6Jason Sams
62709a0978ae141198018ca9769f8d96292a8928e6Jason Sams#endif // RSD_SCRIPT_GROUP_H
63