1f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/*
2f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Copyright (C) 2012 The Android Open Source Project
3f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams *
4f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * you may not use this file except in compliance with the License.
6f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * You may obtain a copy of the License at
7f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams *
8f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams *
10f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Unless required by applicable law or agreed to in writing, software
11f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * See the License for the specific language governing permissions and
14f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * limitations under the License.
15f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */
16f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
17f70bb04346707c49f31d5ac4853a6fce555b715eJason Samspackage android.renderscript;
18f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
19f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
20f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/**
21c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Intrinsic kernels for blending two {@link android.renderscript.Allocation} objects.
22f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams **/
23f70bb04346707c49f31d5ac4853a6fce555b715eJason Samspublic class ScriptIntrinsicBlend extends ScriptIntrinsic {
24460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray    ScriptIntrinsicBlend(long id, RenderScript rs) {
25f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        super(id, rs);
26f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
27f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
28f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
29c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Supported elements types are {@link Element#U8_4}
30f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
31c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * @param rs The RenderScript context
32c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * @param e Element type for inputs and outputs
33f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
34f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return ScriptIntrinsicBlend
35f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
36f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public static ScriptIntrinsicBlend create(RenderScript rs, Element e) {
3774478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray        // 7 comes from RS_SCRIPT_INTRINSIC_ID_BLEND in rsDefines.h
38460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray        long id = rs.nScriptIntrinsicCreate(7, e.getID(rs));
39f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return new ScriptIntrinsicBlend(id, rs);
40f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
41f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
42f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
436f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    private void blend(int id, Allocation ain, Allocation aout, Script.LaunchOptions opt) {
4474478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray        if (!ain.getElement().isCompatible(Element.U8_4(mRS))) {
4574478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray            throw new RSIllegalArgumentException("Input is not of expected format.");
46f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        }
4774478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray        if (!aout.getElement().isCompatible(Element.U8_4(mRS))) {
4874478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray            throw new RSIllegalArgumentException("Output is not of expected format.");
49f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        }
506f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEach(id, ain, aout, null, opt);
51f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
52f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
53f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
54c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = {0, 0, 0, 0}
55f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
56f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
57f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
58f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
59f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachClear(Allocation ain, Allocation aout) {
606f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachClear(ain, aout, null);
616f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
626f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
636f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
646f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = {0, 0, 0, 0}
656f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
666f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
676f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
686f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
696f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
706f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachClear(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
716f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(0, ain, aout, opt);
72f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
73f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
74f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
75f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the Clear kernel.
76f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
77f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
78f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
79f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDClear() {
80f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(0, 3, null, null);
81f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
82f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
83f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
84f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
85c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = src
86f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
87f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
88f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
89f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
90f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSrc(Allocation ain, Allocation aout) {
916f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachSrc(ain, aout, null);
926f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
936f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
946f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
956f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = src
966f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
976f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
986f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
996f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
1006f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
1016f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachSrc(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
1028fdcf4a08af75d91ca8611b867e57cdf73c4bc49Tim Murray        blend(1, ain, aout, null);
103f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
104f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
105f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
106f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the Src kernel.
107f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
108f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
109f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
110f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDSrc() {
111f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(1, 3, null, null);
112f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
113f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
114f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
115c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = dst
116c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     *
117c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * This is a NOP.
118f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
119f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
120f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
121f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
122f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachDst(Allocation ain, Allocation aout) {
123f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        // NOP
124f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
125f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
126f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
1276f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = dst
1286f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
1296f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * This is a NOP.
1306f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
1316f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
1326f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
1336f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
1346f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
1356f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachDst(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
1366f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        // N, optOP
1376f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
1386f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
1396f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
140f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the Dst kernel.
141f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
142f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
143f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
144f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDDst() {
145f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(2, 3, null, null);
146f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
147f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
148f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
149c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = src + dst * (1.0 - src.a)
150f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
151f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
152f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
153f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
154f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSrcOver(Allocation ain, Allocation aout) {
1556f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachSrcOver(ain, aout, null);
1566f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
1576f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
1586f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
1596f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = src + dst * (1.0 - src.a)
1606f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
1616f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
1626f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
1636f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
1646f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
1656f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachSrcOver(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
1666f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(3, ain, aout, opt);
167f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
168f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
169f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
170f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the SrcOver kernel.
171f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
172f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
173f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
174f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDSrcOver() {
175f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(3, 3, null, null);
176f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
177f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
178f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
179c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = dst + src * (1.0 - dst.a)
180f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
181f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
182f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
183f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
184f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachDstOver(Allocation ain, Allocation aout) {
1856f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachDstOver(ain, aout, null);
1866f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
1876f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
1886f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
1896f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = dst + src * (1.0 - dst.a)
1906f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
1916f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
1926f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
1936f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
1946f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
1956f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachDstOver(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
1966f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(4, ain, aout, opt);
197f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
198f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
199f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
200f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the DstOver kernel.
201f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
202f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
203f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
204f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDDstOver() {
205f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(4, 3, null, null);
206f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
207f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
208f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
209c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = src * dst.a
210f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
211f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
212f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
213f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
214f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSrcIn(Allocation ain, Allocation aout) {
2156f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachSrcIn(ain, aout, null);
2166f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
2176f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
2186f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
2196f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = src * dst.a
2206f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
2216f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
2226f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
2236f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
2246f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
2256f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachSrcIn(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
2266f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(5, ain, aout, opt);
227f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
228f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
229f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
230f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the SrcIn kernel.
231f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
232f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
233f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
234f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDSrcIn() {
235f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(5, 3, null, null);
236f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
237f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
238f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
239c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = dst * src.a
240f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
241f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
242f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
243f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
244f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachDstIn(Allocation ain, Allocation aout) {
2456f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachDstIn(ain, aout, null);
2466f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
2476f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
2486f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
2496f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = dst * src.a
2506f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
2516f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
2526f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
2536f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
2546f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
2556f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachDstIn(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
2566f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(6, ain, aout, opt);
257f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
258f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
259f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
260f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the DstIn kernel.
261f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
262f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
263f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
264f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDDstIn() {
265f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(6, 3, null, null);
266f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
267f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
268f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
269c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = src * (1.0 - dst.a)
270f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
271f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
272f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
273f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
274f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSrcOut(Allocation ain, Allocation aout) {
2756f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachSrcOut(ain, aout, null);
2766f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
2776f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
2786f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
2796f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = src * (1.0 - dst.a)
2806f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
2816f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
2826f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
2836f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
2846f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
2856f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachSrcOut(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
2866f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(7, ain, aout, opt);
287f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
288f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
289f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
290f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the SrcOut kernel.
291f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
292f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
293f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
294f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDSrcOut() {
295f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(7, 3, null, null);
296f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
297f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
298f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
299c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = dst * (1.0 - src.a)
300f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
301f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
302f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
303f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
304f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachDstOut(Allocation ain, Allocation aout) {
3056f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachDstOut(ain, aout, null);
3066f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
3076f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
3086f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
3096f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = dst * (1.0 - src.a)
3106f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
3116f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
3126f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
3136f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
3146f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
3156f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachDstOut(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
3166f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(8, ain, aout, opt);
317f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
318f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
319f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
320f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the DstOut kernel.
321f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
322f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
323f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
324f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDDstOut() {
325f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(8, 3, null, null);
326f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
327f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
328f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
329f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * dst.rgb = src.rgb * dst.a + (1.0 - src.a) * dst.rgb
330f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * dst.a = dst.a
331f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
332f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
333f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
334f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
335f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSrcAtop(Allocation ain, Allocation aout) {
3366f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachSrcAtop(ain, aout, null);
3376f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
3386f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
3396f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
3406f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * dst.rgb = src.rgb * dst.a + (1.0 - src.a) * dst.rgb
3416f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * dst.a = dst.a
3426f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
3436f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
3446f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
3456f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
3466f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
3476f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachSrcAtop(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
3486f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(9, ain, aout, opt);
349f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
350f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
351f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
352f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the SrcAtop kernel.
353f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
354f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
355f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
356f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDSrcAtop() {
357f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(9, 3, null, null);
358f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
359f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
360f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
361f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * dst = dst.rgb * src.a + (1.0 - dst.a) * src.rgb
362f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * dst.a = src.a
363f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
364f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
365f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
366f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
367f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachDstAtop(Allocation ain, Allocation aout) {
3686f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachDstAtop(ain, aout, null);
3696f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
3706f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
3716f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
3726f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * dst = dst.rgb * src.a + (1.0 - dst.a) * src.rgb
3736f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * dst.a = src.a
3746f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
3756f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
3766f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
3776f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
3786f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
3796f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachDstAtop(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
3806f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(10, ain, aout, opt);
381f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
382f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
383f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
384f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the DstAtop kernel.
385f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
386f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
387f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
388f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDDstAtop() {
389f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(10, 3, null, null);
390f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
391f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
392f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
393c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = {src.r ^ dst.r, src.g ^ dst.g, src.b ^ dst.b, src.a ^ dst.a}
394f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
395f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
396f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
397f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
398f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachXor(Allocation ain, Allocation aout) {
3996f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachXor(ain, aout, null);
4006f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
4016f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
4026f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
4036f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = {src.r ^ dst.r, src.g ^ dst.g, src.b ^ dst.b, src.a ^ dst.a}
4046f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
4056f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
4066f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
4076f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
4086f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
4096f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachXor(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
4106f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(11, ain, aout, opt);
411f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
412f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
413f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
414f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the Xor kernel.
415f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
416f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
417f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
418f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDXor() {
419f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(11, 3, null, null);
420f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
421f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
422f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    ////////
423f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/*
424f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachNormal(Allocation ain, Allocation aout) {
425f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(12, ain, aout);
426f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
427f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
428f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachAverage(Allocation ain, Allocation aout) {
429f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(13, ain, aout);
430f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
431f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams*/
432f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
433c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = src * dst
434f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
435f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
436f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
437f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
438f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachMultiply(Allocation ain, Allocation aout) {
4396f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachMultiply(ain, aout, null);
4406f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
4416f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
4426f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
4436f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = src * dst
4446f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
4456f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
4466f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
4476f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
4486f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
4496f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachMultiply(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
4506f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(14, ain, aout, opt);
451f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
452f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
453f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
454f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the Multiply kernel.
455f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
456f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
457f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
458f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDMultiply() {
459f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(14, 3, null, null);
460f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
461f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
462f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/*
463f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachScreen(Allocation ain, Allocation aout) {
464f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(15, ain, aout);
465f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
466f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
467f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachDarken(Allocation ain, Allocation aout) {
468f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(16, ain, aout);
469f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
470f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
471f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachLighten(Allocation ain, Allocation aout) {
472f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(17, ain, aout);
473f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
474f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
475f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachOverlay(Allocation ain, Allocation aout) {
476f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(18, ain, aout);
477f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
478f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
479f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachHardlight(Allocation ain, Allocation aout) {
480f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(19, ain, aout);
481f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
482f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
483f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSoftlight(Allocation ain, Allocation aout) {
484f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(20, ain, aout);
485f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
486f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
487f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachDifference(Allocation ain, Allocation aout) {
488f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(21, ain, aout);
489f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
490f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
491f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachNegation(Allocation ain, Allocation aout) {
492f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(22, ain, aout);
493f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
494f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
495f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachExclusion(Allocation ain, Allocation aout) {
496f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(23, ain, aout);
497f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
498f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
499f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachColorDodge(Allocation ain, Allocation aout) {
500f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(24, ain, aout);
501f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
502f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
503f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachInverseColorDodge(Allocation ain, Allocation aout) {
504f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(25, ain, aout);
505f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
506f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
507f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSoftDodge(Allocation ain, Allocation aout) {
508f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(26, ain, aout);
509f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
510f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
511f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachColorBurn(Allocation ain, Allocation aout) {
512f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(27, ain, aout);
513f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
514f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
515f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachInverseColorBurn(Allocation ain, Allocation aout) {
516f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(28, ain, aout);
517f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
518f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
519f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSoftBurn(Allocation ain, Allocation aout) {
520f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(29, ain, aout);
521f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
522f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
523f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachReflect(Allocation ain, Allocation aout) {
524f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(30, ain, aout);
525f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
526f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
527f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachGlow(Allocation ain, Allocation aout) {
528f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(31, ain, aout);
529f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
530f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
531f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachFreeze(Allocation ain, Allocation aout) {
532f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(32, ain, aout);
533f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
534f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
535f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachHeat(Allocation ain, Allocation aout) {
536f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(33, ain, aout);
537f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
538f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams*/
539f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
540c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = min(src + dst, 1.0)
541f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
542f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
543f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
544f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
545f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachAdd(Allocation ain, Allocation aout) {
5466f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachAdd(ain, aout, null);
5476f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
5486f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
5496f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
5506f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = min(src + dst, 1.0)
5516f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
5526f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
5536f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
5546f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
5556f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
5566f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachAdd(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
5576f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(34, ain, aout, opt);
558f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
559f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
560f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
561f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the Add kernel.
562f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
563f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
564f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
565f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDAdd() {
566f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(34, 3, null, null);
567f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
568f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
569f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
570c11e25c4e653124def1fb18e203b894f42106cbeTim Murray     * Sets dst = max(dst - src, 0.0)
571f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
572f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param ain The source buffer
573f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @param aout The destination buffer
574f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
575f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSubtract(Allocation ain, Allocation aout) {
5766f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        forEachSubtract(ain, aout, null);
5776f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    }
5786f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray
5796f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    /**
5806f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * Sets dst = max(dst - src, 0.0)
5816f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     *
5826f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param ain The source buffer
5836f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param aout The destination buffer
5846f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     * @param opt LaunchOptions for clipping
5856f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray     */
5866f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray    public void forEachSubtract(Allocation ain, Allocation aout, Script.LaunchOptions opt) {
5876f842ac8aa37dd855fbffdc09f5491bd85ab3c9aTim Murray        blend(35, ain, aout, opt);
588f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
589f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
590f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    /**
591f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * Get a KernelID for the Subtract kernel.
592f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     *
593f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     * @return Script.KernelID The KernelID object.
594f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams     */
595f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public Script.KernelID getKernelIDSubtract() {
596f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        return createKernelID(35, 3, null, null);
597f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
598f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
599f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/*
600f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachStamp(Allocation ain, Allocation aout) {
601f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(36, ain, aout);
602f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
603f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
604f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachRed(Allocation ain, Allocation aout) {
605f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(37, ain, aout);
606f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
607f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
608f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachGreen(Allocation ain, Allocation aout) {
609f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(38, ain, aout);
610f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
611f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
612f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachBlue(Allocation ain, Allocation aout) {
613f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(39, ain, aout);
614f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
615f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
616f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachHue(Allocation ain, Allocation aout) {
617f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(40, ain, aout);
618f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
619f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
620f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachSaturation(Allocation ain, Allocation aout) {
621f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(41, ain, aout);
622f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
623f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
624f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachColor(Allocation ain, Allocation aout) {
625f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(42, ain, aout);
626f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
627f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
628f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    public void forEachLuminosity(Allocation ain, Allocation aout) {
629f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams        blend(43, ain, aout);
630f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams    }
631f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams*/
632f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams}
633f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams
634