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