diff options
author | Tim Murray <timmurray@google.com> | 2013-07-29 14:30:02 -0700 |
---|---|---|
committer | Tim Murray <timmurray@google.com> | 2013-08-01 14:14:07 -0700 |
commit | 89daad6bae798779e57f252e9da4fe4e62337124 (patch) | |
tree | c55735f278a67b2fe5b74b42581cbfae9c99846c /cpp/ScriptIntrinsics.cpp | |
parent | dcfaa3c0bf151da7be31463bb3fa4e2b4aea6b8c (diff) | |
download | rs-89daad6bae798779e57f252e9da4fe4e62337124.tar.gz |
Add basic support for intrinsics. Move sp<> into RScpp.
Change-Id: I74cdee7069a624ded5091d53db3a4b8ce9894033
Diffstat (limited to 'cpp/ScriptIntrinsics.cpp')
-rw-r--r-- | cpp/ScriptIntrinsics.cpp | 104 |
1 files changed, 101 insertions, 3 deletions
diff --git a/cpp/ScriptIntrinsics.cpp b/cpp/ScriptIntrinsics.cpp index 44c5bb63..76328c43 100644 --- a/cpp/ScriptIntrinsics.cpp +++ b/cpp/ScriptIntrinsics.cpp @@ -17,8 +17,6 @@ #include <malloc.h> #include "RenderScript.h" -#include <rs.h> -#include "rsDefines.h" using namespace android; using namespace RSC; @@ -28,9 +26,19 @@ ScriptIntrinsic::ScriptIntrinsic(sp<RS> rs, int id, sp<const Element> e) mID = RS::dispatch->ScriptIntrinsicCreate(rs->getContext(), id, e->getID()); } +ScriptIntrinsic3DLUT::ScriptIntrinsic3DLUT(sp<RS> rs, sp<const Element> e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_3DLUT, e) { + +} +void ScriptIntrinsic3DLUT::forEach(sp<Allocation> ain, sp<Allocation> aout) { + Script::forEach(0, ain, aout, NULL, 0); +} +void ScriptIntrinsic3DLUT::setLUT(sp<Allocation> lut) { + Script::setVar(0, lut); +} + ScriptIntrinsicBlend::ScriptIntrinsicBlend(sp<RS> rs, sp<const Element> e) : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_BLEND, e) { - } void ScriptIntrinsicBlend::blendClear(sp<Allocation> in, sp<Allocation> out) { @@ -95,6 +103,9 @@ void ScriptIntrinsicBlend::blendSubtract(sp<Allocation> in, sp<Allocation> out) Script::forEach(35, in, out, NULL, 0); } + + + ScriptIntrinsicBlur::ScriptIntrinsicBlur(sp<RS> rs, sp<const Element> e) : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_BLUR, e) { @@ -108,3 +119,90 @@ void ScriptIntrinsicBlur::blur(sp<Allocation> in, sp<Allocation> out) { void ScriptIntrinsicBlur::setRadius(float radius) { Script::setVar(0, &radius, sizeof(float)); } + + + +ScriptIntrinsicColorMatrix::ScriptIntrinsicColorMatrix(sp<RS> rs, sp<const Element> e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_COLOR_MATRIX, e) { + +} + +void ScriptIntrinsicColorMatrix::forEach(sp<Allocation> in, sp<Allocation> out) { + Script::forEach(0, in, out, NULL, 0); +} + + +void ScriptIntrinsicColorMatrix::setColorMatrix3(float* m) { + Script::setVar(0, (void*)m, sizeof(float) * 9); +} + + +void ScriptIntrinsicColorMatrix::setColorMatrix4(float* m) { + Script::setVar(0, (void*)m, sizeof(float) * 16); +} + + +void ScriptIntrinsicColorMatrix::setGreyscale() { + float matrix[] = {0.299f, 0.587f, 0.114f, 0.299f, 0.587f, 0.114f, 0.299f, 0.587f, 0.114f}; + setColorMatrix3(matrix); +} + + +void ScriptIntrinsicColorMatrix::setRGBtoYUV() { + float matrix[] = {0.299f,0.587f,0.114f,-0.14713f,-0.28886f,0.436f,0.615f,-0.51499f,-0.10001f}; + setColorMatrix3(matrix); +} + + +void ScriptIntrinsicColorMatrix::setYUVtoRGB() { + float matrix[] = {1.f,0.f,1.13983f,1.f,-0.39465f,-0.5806f,1.f,2.03211f,0.f}; + setColorMatrix3(matrix); +} + +ScriptIntrinsicConvolve3x3::ScriptIntrinsicConvolve3x3(sp<RS> rs, sp<const Element> e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_CONVOLVE_3x3, e) { + +} + +void ScriptIntrinsicConvolve3x3::setInput(sp<Allocation> in) { + Script::setVar(1, in); +} + +void ScriptIntrinsicConvolve3x3::forEach(sp<Allocation> out) { + Script::forEach(0, NULL, out, NULL, 0); +} + +void ScriptIntrinsicConvolve3x3::setCoefficients(float* v) { + Script::setVar(0, (void*)v, sizeof(float) * 9); +} + +ScriptIntrinsicConvolve5x5::ScriptIntrinsicConvolve5x5(sp<RS> rs, sp<const Element> e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_CONVOLVE_5x5, e) { + +} + +void ScriptIntrinsicConvolve5x5::setInput(sp<Allocation> in) { + Script::setVar(1, in); +} + +void ScriptIntrinsicConvolve5x5::forEach(sp<Allocation> out) { + Script::forEach(0, NULL, out, NULL, 0); +} + +void ScriptIntrinsicConvolve5x5::setCoefficients(float* v) { + Script::setVar(0, (void*)v, sizeof(float) * 25); +} + +/*ScriptIntrinsicLUT::ScriptIntrinsicLUT(sp<RS> rs, sp<const Element> e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_LUT, e) { + +} + +void ScriptIntrinsicLUT::forEach(sp<Allocation> ain, sp<Allocation> aout) { + +} + +void ScriptIntrinsicLUT::setLUT(sp<Allocation> lut) { + +}*/ + |