ScriptIntrinsics.cpp revision 7f0d56899840f071c81bbbcbebfbd880ac31c043
17f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray/* 27f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * Copyright (C) 2008-2012 The Android Open Source Project 37f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * 47f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * Licensed under the Apache License, Version 2.0 (the "License"); 57f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * you may not use this file except in compliance with the License. 67f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * You may obtain a copy of the License at 77f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * 87f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * http://www.apache.org/licenses/LICENSE-2.0 97f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * 107f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * Unless required by applicable law or agreed to in writing, software 117f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * distributed under the License is distributed on an "AS IS" BASIS, 127f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * See the License for the specific language governing permissions and 147f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray * limitations under the License. 157f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray */ 167f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 177f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray#include <utils/Log.h> 187f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray#include <malloc.h> 197f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 207f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray#include "RenderScript.h" 217f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray#include "rsDefines.h" 227f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 237f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayusing namespace android; 247f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayusing namespace renderscriptCpp; 257f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 267f0d56899840f071c81bbbcbebfbd880ac31c043Tim MurrayScriptIntrinsic::ScriptIntrinsic(sp<RS> rs, int id, Element *e) 277f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray : Script(NULL, rs) { 287f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray mID = rsScriptIntrinsicCreate(rs->getContext(), id, e); 297f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 307f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 317f0d56899840f071c81bbbcbebfbd880ac31c043Tim MurrayScriptIntrinsicBlend::ScriptIntrinsicBlend(sp<RS> rs, Element *e) 327f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_BLEND, e) { 337f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 347f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 357f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 367f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendClear(sp<Allocation> in, sp<Allocation> out) { 377f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(0, in, out, NULL, 0); 387f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 397f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 407f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendSrc(sp<Allocation> in, sp<Allocation> out) { 417f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(1, in, out, NULL, 0); 427f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 437f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 447f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendDst(sp<Allocation> in, sp<Allocation> out) { 457f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(2, in, out, NULL, 0); 467f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 477f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 487f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendSrcOver(sp<Allocation> in, sp<Allocation> out) { 497f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(3, in, out, NULL, 0); 507f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 517f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 527f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendDstOver(sp<Allocation> in, sp<Allocation> out) { 537f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(4, in, out, NULL, 0); 547f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 557f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 567f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendSrcIn(sp<Allocation> in, sp<Allocation> out) { 577f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(5, in, out, NULL, 0); 587f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 597f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 607f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendDstIn(sp<Allocation> in, sp<Allocation> out) { 617f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(6, in, out, NULL, 0); 627f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 637f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 647f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendSrcOut(sp<Allocation> in, sp<Allocation> out) { 657f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(7, in, out, NULL, 0); 667f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 677f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 687f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendDstOut(sp<Allocation> in, sp<Allocation> out) { 697f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(8, in, out, NULL, 0); 707f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 717f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 727f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendSrcAtop(sp<Allocation> in, sp<Allocation> out) { 737f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(9, in, out, NULL, 0); 747f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 757f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 767f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendDstAtop(sp<Allocation> in, sp<Allocation> out) { 777f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(10, in, out, NULL, 0); 787f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 797f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 807f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendXor(sp<Allocation> in, sp<Allocation> out) { 817f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(11, in, out, NULL, 0); 827f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 837f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 847f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray// Numbering jumps here 857f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendMultiply(sp<Allocation> in, sp<Allocation> out) { 867f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(14, in, out, NULL, 0); 877f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 887f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 897f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray// Numbering jumps here 907f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendAdd(sp<Allocation> in, sp<Allocation> out) { 917f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(34, in, out, NULL, 0); 927f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 937f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 947f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murrayvoid ScriptIntrinsicBlend::blendSubtract(sp<Allocation> in, sp<Allocation> out) { 957f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray Script::forEach(35, in, out, NULL, 0); 967f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray} 977f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 987f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 997f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 1007f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 1017f0d56899840f071c81bbbcbebfbd880ac31c043Tim Murray 102