android_renderscript_RenderScript.cpp revision 8a64743f37ed35af7c2204acd18bb3d62d8f66d5
1d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams/* 2d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Copyright (C) 2006 The Android Open Source Project 3d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 4d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * you may not use this file except in compliance with the License. 6d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * You may obtain a copy of the License at 7d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 8d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 10d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Unless required by applicable law or agreed to in writing, software 11d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * See the License for the specific language governing permissions and 14d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * limitations under the License. 15d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams */ 16d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 17f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams#define LOG_TAG "libRS_jni" 18f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 19d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <stdlib.h> 20d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <stdio.h> 21d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <fcntl.h> 22d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <unistd.h> 23d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <math.h> 24d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <utils/misc.h> 25d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 26000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/Surface.h> 27d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 28ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams#include <core/SkBitmap.h> 29650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkPixelRef.h> 30650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkStream.h> 31650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkTemplates.h> 32650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <images/SkImageDecoder.h> 33ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 34650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <utils/Asset.h> 35650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <utils/ResourceTypes.h> 36f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 37d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "jni.h" 38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "JNIHelp.h" 39d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "android_runtime/AndroidRuntime.h" 40d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 41e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScript.h> 42e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScriptEnv.h> 43d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 44d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams//#define LOG_API LOGE 45d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define LOG_API(...) 46d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 47d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android; 48d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 50d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 51d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void doThrow(JNIEnv* env, const char* exc, const char* msg = NULL) 52d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 53d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jclass npeClazz = env->FindClass(exc); 54d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams env->ThrowNew(npeClazz, msg); 55d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 56d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 57ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gContextId = 0; 58ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gNativeBitmapID = 0; 5943ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic jfieldID gTypeNativeCache = 0; 60d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 61ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement g_A_8 = NULL; 62ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement g_RGBA_4444 = NULL; 63ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement g_RGBA_8888 = NULL; 64ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement g_RGB_565 = NULL; 65ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 66d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void _nInit(JNIEnv *_env, jclass _this) 67d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 68d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams gContextId = _env->GetFieldID(_this, "mContext", "I"); 69ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 70ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); 71ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I"); 7243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 7343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jclass typeClass = _env->FindClass("android/renderscript/Type"); 7443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams gTypeNativeCache = _env->GetFieldID(typeClass, "mNativeCache", "I"); 75d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 76d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 77ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic void nInitElements(JNIEnv *_env, jobject _this, jint a8, jint rgba4444, jint rgba8888, jint rgb565) 78ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams{ 79ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams g_A_8 = reinterpret_cast<RsElement>(a8); 80ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams g_RGBA_4444 = reinterpret_cast<RsElement>(rgba4444); 81ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams g_RGBA_8888 = reinterpret_cast<RsElement>(rgba8888); 82ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams g_RGB_565 = reinterpret_cast<RsElement>(rgb565); 83ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams} 84d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 85d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 86d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 873eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsstatic void 883eaa338e11a3b0d6b87d705e5bb95625e82347bdJason SamsnAssignName(JNIEnv *_env, jobject _this, jint obj, jbyteArray str) 893eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{ 903eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 9107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAssignName, con(%p), obj(%p)", con, (void *)obj); 923eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 933eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jint len = _env->GetArrayLength(str); 943eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 95bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAssignName(con, (void *)obj, (const char *)cptr, len); 963eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 973eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams} 983eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 997ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 1007ce033d797e5df5e2131e2ed459fba181eaf4658Jason SamsnObjDestroy(JNIEnv *_env, jobject _this, jint obj) 1017ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 1027ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1037ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj); 1047ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams rsObjDestroy(con, (void *)obj); 1057ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 1067ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 107730ee65d4ddb307898053b623120bad1655fadadJason Samsstatic void 108730ee65d4ddb307898053b623120bad1655fadadJason SamsnObjDestroyOOB(JNIEnv *_env, jobject _this, jint obj) 109730ee65d4ddb307898053b623120bad1655fadadJason Sams{ 110730ee65d4ddb307898053b623120bad1655fadadJason Sams // This function only differs from nObjDestroy in that it calls the 111730ee65d4ddb307898053b623120bad1655fadadJason Sams // special Out Of Band version of ObjDestroy which is thread safe. 112730ee65d4ddb307898053b623120bad1655fadadJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 113730ee65d4ddb307898053b623120bad1655fadadJason Sams LOG_API("nObjDestroyOOB, con(%p) obj(%p)", con, (void *)obj); 114730ee65d4ddb307898053b623120bad1655fadadJason Sams rsObjDestroyOOB(con, (void *)obj); 115730ee65d4ddb307898053b623120bad1655fadadJason Sams} 1163eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 11764676f3c21a07d650069315572811570cbf8f728Jason Samsstatic jint 11864676f3c21a07d650069315572811570cbf8f728Jason SamsnFileOpen(JNIEnv *_env, jobject _this, jbyteArray str) 11964676f3c21a07d650069315572811570cbf8f728Jason Sams{ 12064676f3c21a07d650069315572811570cbf8f728Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 12164676f3c21a07d650069315572811570cbf8f728Jason Sams LOG_API("nFileOpen, con(%p)", con); 12264676f3c21a07d650069315572811570cbf8f728Jason Sams 12364676f3c21a07d650069315572811570cbf8f728Jason Sams jint len = _env->GetArrayLength(str); 12464676f3c21a07d650069315572811570cbf8f728Jason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 125bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams jint ret = (jint)rsFileOpen(con, (const char *)cptr, len); 12664676f3c21a07d650069315572811570cbf8f728Jason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 12764676f3c21a07d650069315572811570cbf8f728Jason Sams return ret; 12864676f3c21a07d650069315572811570cbf8f728Jason Sams} 12964676f3c21a07d650069315572811570cbf8f728Jason Sams 1303eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 1313eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 132d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 133d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 134d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 135d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 136d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsDeviceCreate(); 137d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 138d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 139d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 140d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) 141d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 142d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 143d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 144d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 145d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 146ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 147ebfb436a49673693b98469683451bd9ede797557Jason SamsnDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value) 148ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 149ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value); 150ebfb436a49673693b98469683451bd9ede797557Jason Sams return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value); 151ebfb436a49673693b98469683451bd9ede797557Jason Sams} 152ebfb436a49673693b98469683451bd9ede797557Jason Sams 153d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 154704ff64b099406bb328898a7443921f22dbffd6dJason SamsnContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver) 155d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 156d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 157704ff64b099406bb328898a7443921f22dbffd6dJason Sams return (jint)rsContextCreate((RsDevice)dev, ver); 158704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 159704ff64b099406bb328898a7443921f22dbffd6dJason Sams 160704ff64b099406bb328898a7443921f22dbffd6dJason Samsstatic jint 161704ff64b099406bb328898a7443921f22dbffd6dJason SamsnContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, jboolean useDepth) 162704ff64b099406bb328898a7443921f22dbffd6dJason Sams{ 163704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nContextCreateGL"); 164704ff64b099406bb328898a7443921f22dbffd6dJason Sams return (jint)rsContextCreateGL((RsDevice)dev, ver, useDepth); 165d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 166d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 167d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1687d787b4722eaeb79cab42c36060336e092b77b5fJason SamsnContextSetPriority(JNIEnv *_env, jobject _this, jint p) 1697d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{ 1707d787b4722eaeb79cab42c36060336e092b77b5fJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1717d787b4722eaeb79cab42c36060336e092b77b5fJason Sams LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p); 1727d787b4722eaeb79cab42c36060336e092b77b5fJason Sams rsContextSetPriority(con, p); 1737d787b4722eaeb79cab42c36060336e092b77b5fJason Sams} 1747d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1757d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1767d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1777d787b4722eaeb79cab42c36060336e092b77b5fJason Samsstatic void 1783bc47d438171dce294e816366d53bc9eca772c5bJason SamsnContextSetSurface(JNIEnv *_env, jobject _this, jint width, jint height, jobject wnd) 179efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 180efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1813bc47d438171dce294e816366d53bc9eca772c5bJason Sams LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)wnd); 182efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 183efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams Surface * window = NULL; 184efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 185efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 186efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 187efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams jclass surface_class = _env->FindClass("android/view/Surface"); 188efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams jfieldID surfaceFieldID = _env->GetFieldID(surface_class, "mSurface", "I"); 189efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams window = (Surface*)_env->GetIntField(wnd, surfaceFieldID); 190efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 191efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 1923bc47d438171dce294e816366d53bc9eca772c5bJason Sams rsContextSetSurface(con, width, height, window); 193efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 194efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 195efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 196d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextDestroy(JNIEnv *_env, jobject _this, jint con) 197d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 198d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextDestroy, con(%p)", (RsContext)con); 199715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDestroy((RsContext)con); 200d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 201d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 202715333b832fb448c32165c7d97d408a3fa43f7cbJason Samsstatic void 203715333b832fb448c32165c7d97d408a3fa43f7cbJason SamsnContextDump(JNIEnv *_env, jobject _this, jint bits) 204715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{ 205715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 206715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits); 207715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDump((RsContext)con, bits); 208715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams} 209d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 210d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 21165e7aa56f56097418d617663683544c25b3988eaJason SamsnContextPause(JNIEnv *_env, jobject _this) 21265e7aa56f56097418d617663683544c25b3988eaJason Sams{ 21365e7aa56f56097418d617663683544c25b3988eaJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 21465e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextPause, con(%p)", con); 21565e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextPause(con); 21665e7aa56f56097418d617663683544c25b3988eaJason Sams} 21765e7aa56f56097418d617663683544c25b3988eaJason Sams 21865e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 21965e7aa56f56097418d617663683544c25b3988eaJason SamsnContextResume(JNIEnv *_env, jobject _this) 22065e7aa56f56097418d617663683544c25b3988eaJason Sams{ 22165e7aa56f56097418d617663683544c25b3988eaJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 22265e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextResume, con(%p)", con); 22365e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextResume(con); 22465e7aa56f56097418d617663683544c25b3988eaJason Sams} 22565e7aa56f56097418d617663683544c25b3988eaJason Sams 226516c31911578db8ce53529483c3ded918ac7dc6bJason Samsstatic jint 227516c31911578db8ce53529483c3ded918ac7dc6bJason SamsnContextGetMessage(JNIEnv *_env, jobject _this, jintArray data, jboolean wait) 228516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 229516c31911578db8ce53529483c3ded918ac7dc6bJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 230516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 231516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextGetMessage, con(%p), len(%i)", con, len); 232516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 233516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 234516c31911578db8ce53529483c3ded918ac7dc6bJason Sams int id = rsContextGetMessage(con, ptr, &receiveLen, len * 4, wait); 235516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 236516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOGE("message receive buffer too small. %i", receiveLen); 237516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 238516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 239516c31911578db8ce53529483c3ded918ac7dc6bJason Sams return id; 240516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 241516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 242516c31911578db8ce53529483c3ded918ac7dc6bJason Samsstatic void nContextInitToClient(JNIEnv *_env, jobject _this) 243516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 244516c31911578db8ce53529483c3ded918ac7dc6bJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 245516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextInitToClient, con(%p)", con); 246516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextInitToClient(con); 247516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 248516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 249516c31911578db8ce53529483c3ded918ac7dc6bJason Samsstatic void nContextDeinitToClient(JNIEnv *_env, jobject _this) 250516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 251516c31911578db8ce53529483c3ded918ac7dc6bJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 252516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextDeinitToClient, con(%p)", con); 253516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextDeinitToClient(con); 254516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 255516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 256516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 257718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 258718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason SamsnElementCreate(JNIEnv *_env, jobject _this, jint type, jint kind, jboolean norm, jint size) 259d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 260d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 261718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size); 262718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)rsElementCreate(con, (RsDataType)type, (RsDataKind)kind, norm, size); 263d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 264d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 265718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 266718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason SamsnElementCreate2(JNIEnv *_env, jobject _this, jintArray _ids, jobjectArray _names) 267d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 268718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams int fieldCount = _env->GetArrayLength(_ids); 269d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 270704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nElementCreate2, con(%p)", con); 271718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 272718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jint *ids = _env->GetIntArrayElements(_ids, NULL); 273718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams const char ** nameArray = (const char **)calloc(fieldCount, sizeof(char *)); 274718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams size_t* sizeArray = (size_t*)calloc(fieldCount, sizeof(size_t)); 275718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 276718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 277718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 278718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams nameArray[ct] = _env->GetStringUTFChars(s, NULL); 279718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams sizeArray[ct] = _env->GetStringUTFLength(s); 28043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 281718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jint id = (jint)rsElementCreate2(con, fieldCount, (RsElement *)ids, nameArray, sizeArray); 282718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 283718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 284718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseStringUTFChars(s, nameArray[ct]); 28543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 286718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseIntArrayElements(_ids, ids, JNI_ABORT); 287718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(nameArray); 288718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(sizeArray); 289718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)id; 290d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 291d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 292d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 293d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 294d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 295d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeBegin(JNIEnv *_env, jobject _this, jint eID) 296d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 297d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 298d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeBegin, con(%p) e(%p)", con, (RsElement)eID); 299bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeBegin(con, (RsElement)eID); 300d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 301d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 302d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 303d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeAdd(JNIEnv *_env, jobject _this, jint dim, jint val) 304d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 305d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 306d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeAdd, con(%p) dim(%i), val(%i)", con, dim, val); 307bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeAdd(con, (RsDimension)dim, val); 308d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 309d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 310d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 311d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeCreate(JNIEnv *_env, jobject _this) 312d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 313d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 314d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeCreate, con(%p)", con); 315bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsTypeCreate(con); 316d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 317d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 31843ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadInt(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 31943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 32043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int32_t *)buffer)[0] = _env->GetIntField(_obj, _field); 32143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 4; 32243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 32343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 32443ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadShort(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 32543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 32643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int16_t *)buffer)[0] = _env->GetShortField(_obj, _field); 32743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 2; 32843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 32943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 33043ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadByte(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 33143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 33243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int8_t *)buffer)[0] = _env->GetByteField(_obj, _field); 33343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 1; 33443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 33543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 33643ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadFloat(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 33743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 33843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((float *)buffer)[0] = _env->GetFloatField(_obj, _field); 33943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 4; 34043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 34143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 3425f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveInt(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 3435f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 3445f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetIntField(_obj, _field, ((int32_t *)buffer)[0]); 3455f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 4; 3465f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 3475f43fd289abbd5380b6068766daf721b555d0053Jason Sams 3485f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveShort(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 3495f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 3505f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetShortField(_obj, _field, ((int16_t *)buffer)[0]); 3515f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 2; 3525f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 3535f43fd289abbd5380b6068766daf721b555d0053Jason Sams 3545f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveByte(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 3555f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 3565f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetByteField(_obj, _field, ((int8_t *)buffer)[0]); 3575f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 1; 3585f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 3595f43fd289abbd5380b6068766daf721b555d0053Jason Sams 3605f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveFloat(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 3615f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 3625f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetFloatField(_obj, _field, ((float *)buffer)[0]); 3635f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 4; 3645f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 3655f43fd289abbd5380b6068766daf721b555d0053Jason Sams 36643ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstruct TypeFieldCache { 36743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jfieldID field; 36843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int bits; 36943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * (*ptr)(JNIEnv *, jobject, jfieldID, void *buffer); 3705f43fd289abbd5380b6068766daf721b555d0053Jason Sams void * (*readPtr)(JNIEnv *, jobject, jfieldID, void *buffer); 37143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams}; 37243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 37343ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstruct TypeCache { 37443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int fieldCount; 37543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int size; 37643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeFieldCache fields[1]; 37743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams}; 37843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 37943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams//{"nTypeFinalDestroy", "(Landroid/renderscript/Type;)V", (void*)nTypeFinalDestroy }, 38043ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 38143ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnTypeFinalDestroy(JNIEnv *_env, jobject _this, jobject _type) 38243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 38343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 38443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams free(tc); 38543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 38643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 38743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams// native void nTypeSetupFields(Type t, int[] types, int[] bits, Field[] IDs); 38843ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 38943ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnTypeSetupFields(JNIEnv *_env, jobject _this, jobject _type, jintArray _types, jintArray _bits, jobjectArray _IDs) 39043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 39143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int fieldCount = _env->GetArrayLength(_types); 39243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams size_t structSize = sizeof(TypeCache) + (sizeof(TypeFieldCache) * (fieldCount-1)); 39343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeCache *tc = (TypeCache *)malloc(structSize); 39443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams memset(tc, 0, structSize); 39543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 39643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeFieldCache *tfc = &tc->fields[0]; 39743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tc->fieldCount = fieldCount; 39843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->SetIntField(_type, gTypeNativeCache, (jint)tc); 39943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 40043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jint *fType = _env->GetIntArrayElements(_types, NULL); 40143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jint *fBits = _env->GetIntArrayElements(_bits, NULL); 40243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams for (int ct=0; ct < fieldCount; ct++) { 40343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jobject field = _env->GetObjectArrayElement(_IDs, ct); 40443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].field = _env->FromReflectedField(field); 40543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].bits = fBits[ct]; 40643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 40743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams switch(fType[ct]) { 408718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams case RS_TYPE_FLOAT_32: 40943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].ptr = SF_LoadFloat; 4105f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].readPtr = SF_SaveFloat; 41143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams break; 412718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams case RS_TYPE_UNSIGNED_32: 413718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams case RS_TYPE_SIGNED_32: 414718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams tfc[ct].ptr = SF_LoadInt; 415718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams tfc[ct].readPtr = SF_SaveInt; 416718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams break; 417718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams case RS_TYPE_UNSIGNED_16: 418718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams case RS_TYPE_SIGNED_16: 419718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams tfc[ct].ptr = SF_LoadShort; 420718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams tfc[ct].readPtr = SF_SaveShort; 421718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams break; 422718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams case RS_TYPE_UNSIGNED_8: 423718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams case RS_TYPE_SIGNED_8: 424718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams tfc[ct].ptr = SF_LoadByte; 425718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams tfc[ct].readPtr = SF_SaveByte; 42643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams break; 42743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 42843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tc->size += 4; 42943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 43043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 43143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseIntArrayElements(_types, fType, JNI_ABORT); 43243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseIntArrayElements(_bits, fBits, JNI_ABORT); 43343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 43443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 43543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 436d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 437d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 438d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 439d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, jint e) 440d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 441d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 442d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationCreateTyped, con(%p), e(%p)", con, (RsElement)e); 443bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsAllocationCreateTyped(con, (RsElement)e); 444d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 445d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 446d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 447c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason SamsnAllocationUploadToTexture(JNIEnv *_env, jobject _this, jint a, jboolean genMip, jint mip) 448d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 449d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 450c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams LOG_API("nAllocationUploadToTexture, con(%p), a(%p), genMip(%i), mip(%i)", con, (RsAllocation)a, genMip, mip); 451c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams rsAllocationUploadToTexture(con, (RsAllocation)a, genMip, mip); 452d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 453d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 45407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Samsstatic void 45507ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationUploadToBufferObject(JNIEnv *_env, jobject _this, jint a) 45607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{ 45707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 45807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAllocationUploadToBufferObject, con(%p), a(%p)", con, (RsAllocation)a); 45907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocationUploadToBufferObject(con, (RsAllocation)a); 46007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams} 46107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 462ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement SkBitmapToPredefined(SkBitmap::Config cfg) 463ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{ 464ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams switch (cfg) { 465ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kA8_Config: 466ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_A_8; 467ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_4444_Config: 468ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_4444; 469ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_8888_Config: 470ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_8888; 471ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kRGB_565_Config: 472ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGB_565; 473ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 474ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams default: 475ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams break; 476ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 477ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams // If we don't have a conversion mark it as a user type. 478ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams LOGE("Unsupported bitmap type"); 479ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return NULL; 480ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 481ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 482fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 483ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap) 484fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 485fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 486ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 487ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 488ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 489ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap::Config config = bitmap.getConfig(); 490fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 491ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 492ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 493ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.lockPixels(); 494ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int w = bitmap.width(); 495ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int h = bitmap.height(); 496ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const void* ptr = bitmap.getPixels(); 497ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 498ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.unlockPixels(); 499ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return id; 500ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 501ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return 0; 502ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 503fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 5048a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Samsstatic void ReleaseBitmapCallback(void *bmp) 5058a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 5068a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; 5078a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams nativeBitmap->unlockPixels(); 5088a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 5098a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5108a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Samsstatic int 5118a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason SamsnAllocationCreateBitmapRef(JNIEnv *_env, jobject _this, jint type, jobject jbitmap) 5128a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 5138a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 5148a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams SkBitmap * nativeBitmap = 5158a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams (SkBitmap *)_env->GetIntField(jbitmap, gNativeBitmapID); 5168a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5178a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5188a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams nativeBitmap->lockPixels(); 5198a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams void* ptr = nativeBitmap->getPixels(); 5208a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams jint id = (jint)rsAllocationCreateBitmapRef(con, (RsType)type, ptr, nativeBitmap, ReleaseBitmapCallback); 5218a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return id; 5228a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 5238a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 524b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Samsstatic int 525650a3eb7d621dc8e81573142a4498bbd07bcde27Romain GuynAllocationCreateFromAssetStream(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jint native_asset) 526650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 527650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 528650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 529650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy Asset* asset = reinterpret_cast<Asset*>(native_asset); 530650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap bitmap; 531650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkImageDecoder::DecodeMemory(asset->getBuffer(false), asset->getLength(), 532650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy &bitmap, SkBitmap::kNo_Config, SkImageDecoder::kDecodePixels_Mode); 533650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 534650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap::Config config = bitmap.getConfig(); 535650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 536ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 537650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 538ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 539650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.lockPixels(); 540650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int w = bitmap.width(); 541650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int h = bitmap.height(); 542650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const void* ptr = bitmap.getPixels(); 543ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 544650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.unlockPixels(); 545650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return id; 546650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } 547650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return 0; 548650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 549650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 550650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guystatic int 551b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason SamsnAllocationCreateFromBitmapBoxed(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap) 552b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams{ 553b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 554b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap const * nativeBitmap = 555b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 556b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const SkBitmap& bitmap(*nativeBitmap); 557b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap::Config config = bitmap.getConfig(); 558b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 559ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 560b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 561ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 562b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.lockPixels(); 563b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int w = bitmap.width(); 564b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int h = bitmap.height(); 565b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const void* ptr = bitmap.getPixels(); 566ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmapBoxed(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 567b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.unlockPixels(); 568b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return id; 569b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams } 570b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return 0; 571b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams} 572b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 573fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 574d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 575768bc02d815a94ad29146f1ed60c847d1af118ccJason SamsnAllocationSubData1D_i(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jintArray data, int sizeBytes) 576d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 577d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 578d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 579768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 580d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 581768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 582d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 583d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 584d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 585d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 586768bc02d815a94ad29146f1ed60c847d1af118ccJason SamsnAllocationSubData1D_s(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jshortArray data, int sizeBytes) 587d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 588d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 589d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 590768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 591768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 592768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 593768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 594d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 595d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 596d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 597768bc02d815a94ad29146f1ed60c847d1af118ccJason SamsnAllocationSubData1D_b(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jbyteArray data, int sizeBytes) 598d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 599d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 600d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 601768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 602768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 60307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 604768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 605d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 606d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 607d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 60807ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData1D_f(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jfloatArray data, int sizeBytes) 609d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 610d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 611d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 612768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 613d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 61407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 615d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 616d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 617d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 618d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 61907ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData2D_i(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data, int sizeBytes) 620d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 621d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 622d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 623d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocation2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 624d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 62507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 626d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 627d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 628d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 629d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 63007ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData2D_f(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data, int sizeBytes) 631d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 632d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 633d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 634d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocation2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 635d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 63607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 637d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 638d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 639d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 64040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 64140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, jint alloc, jintArray data) 64240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 64340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 64440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 64540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 64640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 647bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 648ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 64940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 65040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 65140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 65240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, jint alloc, jfloatArray data) 65340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 65440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 65540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 656a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 65740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 658bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 659ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 66040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 661d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 662d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 66343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams//{"nAllocationDataFromObject", "(ILandroid/renderscript/Type;Ljava/lang/Object;)V", (void*)nAllocationDataFromObject }, 66443ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 6652525a815220652b37e2e390fe8c62394a6d0e574Jason SamsnAllocationSubDataFromObject(JNIEnv *_env, jobject _this, jint alloc, jobject _type, jint offset, jobject _o) 66643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 66743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 66843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams LOG_API("nAllocationDataFromObject con(%p), alloc(%p)", con, (RsAllocation)alloc); 66943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 67043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 67143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 67243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * bufAlloc = malloc(tc->size); 67343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * buf = bufAlloc; 67443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams for (int ct=0; ct < tc->fieldCount; ct++) { 67543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const TypeFieldCache *tfc = &tc->fields[ct]; 67643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams buf = tfc->ptr(_env, _o, tfc->field, buf); 67743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 6782525a815220652b37e2e390fe8c62394a6d0e574Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, 1, bufAlloc, tc->size); 6795f43fd289abbd5380b6068766daf721b555d0053Jason Sams free(bufAlloc); 6805f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 6815f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6825f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void 6835f43fd289abbd5380b6068766daf721b555d0053Jason SamsnAllocationSubReadFromObject(JNIEnv *_env, jobject _this, jint alloc, jobject _type, jint offset, jobject _o) 6845f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 6855f43fd289abbd5380b6068766daf721b555d0053Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 6865f43fd289abbd5380b6068766daf721b555d0053Jason Sams LOG_API("nAllocationReadFromObject con(%p), alloc(%p)", con, (RsAllocation)alloc); 6875f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6885f43fd289abbd5380b6068766daf721b555d0053Jason Sams assert(offset == 0); 6895f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6905f43fd289abbd5380b6068766daf721b555d0053Jason Sams const TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 6915f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6925f43fd289abbd5380b6068766daf721b555d0053Jason Sams void * bufAlloc = malloc(tc->size); 6935f43fd289abbd5380b6068766daf721b555d0053Jason Sams void * buf = bufAlloc; 6945f43fd289abbd5380b6068766daf721b555d0053Jason Sams rsAllocationRead(con, (RsAllocation)alloc, bufAlloc); 6955f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6965f43fd289abbd5380b6068766daf721b555d0053Jason Sams for (int ct=0; ct < tc->fieldCount; ct++) { 6975f43fd289abbd5380b6068766daf721b555d0053Jason Sams const TypeFieldCache *tfc = &tc->fields[ct]; 6985f43fd289abbd5380b6068766daf721b555d0053Jason Sams buf = tfc->readPtr(_env, _o, tfc->field, buf); 6995f43fd289abbd5380b6068766daf721b555d0053Jason Sams } 70043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams free(bufAlloc); 70143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 70243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 703d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 704d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 705d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 706d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 707d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) 708d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 709d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 710d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter1D)adapter, (RsAllocation)alloc); 711bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DBindAllocation(con, (RsAdapter1D)adapter, (RsAllocation)alloc); 712d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 713d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 714d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 715d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) 716d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 717d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 718d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter1D)adapter, dim, value); 719bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSetConstraint(con, (RsAdapter1D)adapter, (RsDimension)dim, value); 720d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 721d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 722d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 723d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) 724d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 725d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 726d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 727d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 728d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 729bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 730d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 731d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 732d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 733d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 734d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jintArray data) 735d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 736d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 737d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 738d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 739d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 740bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 741d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 742d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 743d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 744d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 745d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) 746d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 747d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 748d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 749d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 750d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 751bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 752d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 753d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 754d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 755d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 756d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jfloatArray data) 757d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 758d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 759d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 760d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 761d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 762bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 763d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 764d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 765d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 766d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 767d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DCreate(JNIEnv *_env, jobject _this) 768d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 769d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 770d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DCreate, con(%p)", con); 771bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter1DCreate(con); 772d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 773d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 774d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 775d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 776d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 777bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) 778bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 779bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 780bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter2D)adapter, (RsAllocation)alloc); 781bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DBindAllocation(con, (RsAdapter2D)adapter, (RsAllocation)alloc); 782bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 783bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 784bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 785bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) 786bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 787bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 788bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter2D)adapter, dim, value); 789bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSetConstraint(con, (RsAdapter2D)adapter, (RsDimension)dim, value); 790bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 791bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 792bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 793bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) 794bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 795bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 796bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 797bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 798bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 799bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 800bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 801bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 802bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 803bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 804bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) 805bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 806bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 807bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 808bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 809bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 810bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 811bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 812bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 813bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 814bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 815bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jintArray data) 816bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 817bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 818bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 819bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 820bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 821bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 822bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter2D)adapter, xoff, yoff, w, h, ptr); 823bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 824bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 825bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 826bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 827bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jfloatArray data) 828bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 829bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 830bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 831bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_f, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 832bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 833bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 834bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter1D)adapter, xoff, yoff, w, h, ptr); 835bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 836bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 837bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 838bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic jint 839bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DCreate(JNIEnv *_env, jobject _this) 840bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 841bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 842bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DCreate, con(%p)", con); 843bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter2DCreate(con); 844bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 845bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 846bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 847bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 848bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 849d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, jint script, jint alloc, jint slot) 850d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 851d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 852d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 853bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 854d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 855d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 856d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 85722534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearColor(JNIEnv *_env, jobject _this, jint script, jfloat r, jfloat g, jfloat b, jfloat a) 858d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 859d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 86007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptSetClearColor, con(%p), s(%p), r(%f), g(%f), b(%f), a(%f)", con, (void *)script, r, g, b, a); 861bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearColor(con, (RsScript)script, r, g, b, a); 862d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 863d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 864d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 86522534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearDepth(JNIEnv *_env, jobject _this, jint script, jfloat d) 866d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 867d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 86807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetClearDepth, con(%p), s(%p), depth(%f)", con, (void *)script, d); 869bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearDepth(con, (RsScript)script, d); 870d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 871d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 872d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 87322534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearStencil(JNIEnv *_env, jobject _this, jint script, jint stencil) 874d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 875d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 87607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetClearStencil, con(%p), s(%p), stencil(%i)", con, (void *)script, stencil); 877bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearStencil(con, (RsScript)script, stencil); 878d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 879d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 880d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 88122534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, jint script, jbyteArray timeZone) 882584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 883584a375df68ed7d62b38389078c6804edf228f9cRomain Guy RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 88407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 885584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 886584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 887584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 888584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 889584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 890bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 891584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 892584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 893584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 894584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 895584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 896584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 89722534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 898334ea0c98f051b5a6b85bc616c93304651854298Jason SamsnScriptSetType(JNIEnv *_env, jobject _this, jint type, jboolean writable, jstring _str, jint slot) 89922534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 90022534176fb5c1257130ef4ee589739ca42766a32Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 901334ea0c98f051b5a6b85bc616c93304651854298Jason Sams LOG_API("nScriptCAddType, con(%p), type(%p), writable(%i), slot(%i)", con, (RsType)type, writable, slot); 902fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams const char* n = NULL; 903fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams if (_str) { 904fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams n = _env->GetStringUTFChars(_str, NULL); 905fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams } 906bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetType(con, (RsType)type, slot, writable, n); 907fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams if (n) { 908fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams _env->ReleaseStringUTFChars(_str, n); 909fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams } 91022534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 91122534176fb5c1257130ef4ee589739ca42766a32Jason Sams 912584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 913be2e84193f709419634de4cc3ba0e67acf6976f3Jason SamsnScriptSetInvoke(JNIEnv *_env, jobject _this, jstring _str, jint slot) 914be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 915be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 916be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams LOG_API("nScriptSetInvoke, con(%p)", con); 917be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams const char* n = NULL; 918be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams if (_str) { 919be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams n = _env->GetStringUTFChars(_str, NULL); 920be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams } 921be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams rsScriptSetInvoke(con, n, slot); 922be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams if (n) { 923be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams _env->ReleaseStringUTFChars(_str, n); 924be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams } 925be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 926be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 927be2e84193f709419634de4cc3ba0e67acf6976f3Jason Samsstatic void 928be2e84193f709419634de4cc3ba0e67acf6976f3Jason SamsnScriptInvoke(JNIEnv *_env, jobject _this, jint obj, jint slot) 929be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 930be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 931be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 932be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 933be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 934be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 935be2e84193f709419634de4cc3ba0e67acf6976f3Jason Samsstatic void 936fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason SamsnScriptSetRoot(JNIEnv *_env, jobject _this, jboolean isRoot) 937d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 938d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 939fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCSetRoot, con(%p), isRoot(%i)", con, isRoot); 940bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetRoot(con, isRoot); 941d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 942d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 943fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 944fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 945d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 946fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason SamsnScriptCBegin(JNIEnv *_env, jobject _this) 947d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 948d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 949fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCBegin, con(%p)", con); 950bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCBegin(con); 951d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 952d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 953d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 95443702d8925c54360ad5f9f66b0d35d61d59f6910Jack PalevichnScriptCSetScript(JNIEnv *_env, jobject _this, jbyteArray scriptRef, 95543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint offset, jint length) 956d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 957d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 958d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("!!! nScriptCSetScript, con(%p)", con); 95943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 96043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 96143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_base = 0; 96243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_ptr; 96343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 96443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 96543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "script == null"); 96643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 96743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 96843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (offset < 0) { 96943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 97043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "offset < 0"); 97143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 97243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 97343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 97443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 97543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length < 0"); 97643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 97743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 97843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich remaining = _env->GetArrayLength(scriptRef) - offset; 97943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 98043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 98143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length > script.length - offset"); 98243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 98343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 98443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_base = (jbyte *) 98543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 98643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_ptr = script_base + offset; 98743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 988bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetText(con, (const char *)script_ptr, length); 98939ddc950c9064129ead5de04b200106c0659f937Jason Sams 99043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 99143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (script_base) { 99243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->ReleasePrimitiveArrayCritical(scriptRef, script_base, 99343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 99443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 995d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 996d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 997d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 998d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnScriptCCreate(JNIEnv *_env, jobject _this) 999d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1000d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1001d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 1002bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsScriptCCreate(con); 1003d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1004d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1005d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 1006d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonScriptCAddDefineI32(JNIEnv *_env, jobject _this, jstring name, jint value) 1007d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 1008d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1009d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 1010d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineI32, con(%p) name(%s) value(%d)", con, n, value); 1011bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetDefineI32(con, n, value); 1012d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 1013d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 1014d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 1015d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 1016d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonScriptCAddDefineF(JNIEnv *_env, jobject _this, jstring name, jfloat value) 1017d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 1018d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1019d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 1020d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineF, con(%p) name(%s) value(%f)", con, n, value); 1021bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetDefineF(con, n, value); 1022d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 1023d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 1024d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 1025d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1026d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1027d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1028d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreBegin(JNIEnv *_env, jobject _this, jint in, jint out) 1029d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1030d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1031d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 1032bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreBegin(con, (RsElement)in, (RsElement)out); 1033d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1034d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1035d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1036d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDepthFunc(JNIEnv *_env, jobject _this, jint func) 1037d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1038d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1039d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDepthFunc, con(%p), func(%i)", con, func); 1040bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDepthFunc(con, (RsDepthFunc)func); 1041d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1042d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1043d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1044d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDepthMask(JNIEnv *_env, jobject _this, jboolean enable) 1045d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1046d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1047d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDepthMask, con(%p), enable(%i)", con, enable); 1048bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDepthMask(con, enable); 1049d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1050d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1051d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1052d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreColorMask(JNIEnv *_env, jobject _this, jboolean r, jboolean g, jboolean b, jboolean a) 1053d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1054d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1055d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreColorMask, con(%p), r(%i), g(%i), b(%i), a(%i)", con, r, g, b, a); 1056bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreColorMask(con, r, g, b, a); 1057d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1058d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1059d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1060d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreBlendFunc(JNIEnv *_env, jobject _this, int src, int dst) 1061d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1062d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1063d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreBlendFunc, con(%p), src(%i), dst(%i)", con, src, dst); 1064bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreBlendFunc(con, (RsBlendSrcFunc)src, (RsBlendDstFunc)dst); 1065d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1066d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1067d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1068d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDither(JNIEnv *_env, jobject _this, jboolean enable) 1069d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1070d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1071d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDither, con(%p), enable(%i)", con, enable); 1072bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDither(con, enable); 1073d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1074d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1075d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 1076d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreCreate(JNIEnv *_env, jobject _this) 1077d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1078d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1079d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreCreate, con(%p)", con); 10803eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 1081bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramFragmentStoreCreate(con); 1082d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1083d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10840011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 10850011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 10860011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 10870011bcf57ff711a221a3a4c73f2a79125111647dJason SamsnProgramBindConstants(JNIEnv *_env, jobject _this, jint vpv, jint slot, jint a) 10880011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 10890011bcf57ff711a221a3a4c73f2a79125111647dJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 10900011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 10910011bcf57ff711a221a3a4c73f2a79125111647dJason Sams rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a); 10920011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 109354c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 1094d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 109568afd01ec9fd37774d8291192952a25e5605b6fbJason SamsnProgramBindTexture(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) 109654c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 109754c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 109868afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 109968afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 110054c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 110154c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 110254c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 110368afd01ec9fd37774d8291192952a25e5605b6fbJason SamsnProgramBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) 1104d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1105d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 110668afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 110768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1108d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1109d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 111068afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 1111d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 111268afd01ec9fd37774d8291192952a25e5605b6fbJason Samsstatic jint 111368afd01ec9fd37774d8291192952a25e5605b6fbJason SamsnProgramFragmentCreate(JNIEnv *_env, jobject _this, jintArray params) 1114d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1115d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 111668afd01ec9fd37774d8291192952a25e5605b6fbJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 111768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams jint paramLen = _env->GetArrayLength(params); 1118d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1119704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, paramLen); 1120d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 112168afd01ec9fd37774d8291192952a25e5605b6fbJason Sams jint ret = (jint)rsProgramFragmentCreate(con, (uint32_t *)paramPtr, paramLen); 112268afd01ec9fd37774d8291192952a25e5605b6fbJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 112368afd01ec9fd37774d8291192952a25e5605b6fbJason Sams return ret; 1124d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1125d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 11267e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Samsstatic jint 11277e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason SamsnProgramFragmentCreate2(JNIEnv *_env, jobject _this, jstring shader, jintArray params) 11287e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 11297e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11307e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 11317e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint shaderLen = _env->GetStringUTFLength(shader); 11327e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 11337e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 11347e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 11357e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams LOG_API("nProgramFragmentCreate2, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 11367e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 11377e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint ret = (jint)rsProgramFragmentCreate2(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 11387e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 11397e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 11407e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 11417e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 11427e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 11437e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 11441fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 11451fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 11460011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 11470011bcf57ff711a221a3a4c73f2a79125111647dJason SamsnProgramVertexCreate(JNIEnv *_env, jobject _this, jboolean texMat) 11481fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 11491fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11500011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramVertexCreate, con(%p), texMat(%i)", con, texMat); 11510011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return (jint)rsProgramVertexCreate(con, texMat); 11521fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11531fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 11540011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 11550011bcf57ff711a221a3a4c73f2a79125111647dJason SamsnProgramVertexCreate2(JNIEnv *_env, jobject _this, jstring shader, jintArray params) 11561fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 11571fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11580011bcf57ff711a221a3a4c73f2a79125111647dJason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 11590011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint shaderLen = _env->GetStringUTFLength(shader); 11600011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 11610011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 11621fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 11630011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramVertexCreate2, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 1164ee41112e1539de95596600fd2c6dada5d275217fJason Sams 11650011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint ret = (jint)rsProgramVertexCreate2(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 11660011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 11670011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 11680011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 11691fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11701fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1171ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1172ebfb436a49673693b98469683451bd9ede797557Jason Sams 1173ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 1174ebfb436a49673693b98469683451bd9ede797557Jason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, jint in, jint out, 1175ebfb436a49673693b98469683451bd9ede797557Jason Sams jboolean pointSmooth, jboolean lineSmooth, jboolean pointSprite) 1176ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1177ebfb436a49673693b98469683451bd9ede797557Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1178ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterCreate, con(%p), in(%p), out(%p), pointSmooth(%i), lineSmooth(%i), pointSprite(%i)", 1179ebfb436a49673693b98469683451bd9ede797557Jason Sams con, (RsElement)in, (RsElement)out, pointSmooth, lineSmooth, pointSprite); 1180ebfb436a49673693b98469683451bd9ede797557Jason Sams return (jint)rsProgramRasterCreate(con, (RsElement)in, (RsElement)out, pointSmooth, lineSmooth, pointSprite); 1181ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1182ebfb436a49673693b98469683451bd9ede797557Jason Sams 1183ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 1184ebfb436a49673693b98469683451bd9ede797557Jason SamsnProgramRasterSetPointSize(JNIEnv *_env, jobject _this, jint vpr, jfloat v) 1185ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1186ebfb436a49673693b98469683451bd9ede797557Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1187ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterSetPointSize, con(%p), vpf(%p), value(%f)", con, (RsProgramRaster)vpr, v); 1188ebfb436a49673693b98469683451bd9ede797557Jason Sams rsProgramRasterSetPointSize(con, (RsProgramFragment)vpr, v); 1189ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1190ebfb436a49673693b98469683451bd9ede797557Jason Sams 1191ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 1192ebfb436a49673693b98469683451bd9ede797557Jason SamsnProgramRasterSetLineWidth(JNIEnv *_env, jobject _this, jint vpr, jfloat v) 1193ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1194ebfb436a49673693b98469683451bd9ede797557Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1195ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterSetLineWidth, con(%p), vpf(%p), value(%f)", con, (RsProgramRaster)vpr, v); 1196ebfb436a49673693b98469683451bd9ede797557Jason Sams rsProgramRasterSetLineWidth(con, (RsProgramFragment)vpr, v); 1197ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1198ebfb436a49673693b98469683451bd9ede797557Jason Sams 1199d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1200d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1201d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1202d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1203d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, jint script) 1204d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1205d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1206d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1207bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1208d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1209d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1210d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1211d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindProgramFragmentStore(JNIEnv *_env, jobject _this, jint pfs) 1212d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1213d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1214d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragmentStore, con(%p), pfs(%p)", con, (RsProgramFragmentStore)pfs); 1215bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragmentStore(con, (RsProgramFragmentStore)pfs); 1216d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1217d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1218d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1219d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, jint pf) 1220d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1221d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1222d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1223bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1224d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1225d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 12260826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 12270826a6f90f049bf94fc39fb23ad3a736a14b96ebJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, jint pf) 12280826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 12290826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 12300826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1231bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 12320826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 12330826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1234d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 1235ebfb436a49673693b98469683451bd9ede797557Jason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, jint pf) 1236ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1237ebfb436a49673693b98469683451bd9ede797557Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1238ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 1239ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 1240ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1241ebfb436a49673693b98469683451bd9ede797557Jason Sams 1242d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 124302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 124402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 124502fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 124602fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerBegin(JNIEnv *_env, jobject _this) 124702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 124802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 124902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerBegin, con(%p)", con); 1250bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerBegin(con); 125102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 125202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 125302fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 125402fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerSet(JNIEnv *_env, jobject _this, jint p, jint v) 125502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 125602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 125702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerSet, con(%p), param(%i), value(%i)", con, p, v); 1258bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerSet(con, (RsSamplerParam)p, (RsSamplerValue)v); 125902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 126002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 126102fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 126202fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerCreate(JNIEnv *_env, jobject _this) 126302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 126402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1265bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1266bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsSamplerCreate(con); 126702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 126802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1269bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1270bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1271bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1272bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightBegin(JNIEnv *_env, jobject _this) 1273bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1274bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1275bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightBegin, con(%p)", con); 1276bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightBegin(con); 1277bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1278bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1279bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1280bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetIsMono(JNIEnv *_env, jobject _this, jboolean isMono) 1281bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1282bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1283bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetIsMono, con(%p), isMono(%i)", con, isMono); 1284bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetMonochromatic(con, isMono); 1285bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1286bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1287bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1288bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetIsLocal(JNIEnv *_env, jobject _this, jboolean isLocal) 1289bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1290bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1291bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetIsLocal, con(%p), isLocal(%i)", con, isLocal); 1292bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetLocal(con, isLocal); 1293bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1294bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1295bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic jint 1296bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightCreate(JNIEnv *_env, jobject _this) 1297bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1298bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1299bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightCreate, con(%p)", con); 1300bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsLightCreate(con); 1301bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1302bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1303bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1304bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetColor(JNIEnv *_env, jobject _this, jint light, float r, float g, float b) 1305bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1306bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1307bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetColor, con(%p), light(%p), r(%f), g(%f), b(%f)", con, (RsLight)light, r, g, b); 1308bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetColor(con, (RsLight)light, r, g, b); 1309bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1310bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1311bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1312bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetPosition(JNIEnv *_env, jobject _this, jint light, float x, float y, float z) 1313bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1314bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1315bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetPosition, con(%p), light(%p), x(%f), y(%f), z(%f)", con, (RsLight)light, x, y, z); 1316bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetPosition(con, (RsLight)light, x, y, z); 1317bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1318d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1319d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1320d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 13211bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 13221bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshCreate(JNIEnv *_env, jobject _this, jint batchID, jint indexID, jintArray vtxIDs, jint primID) 13231bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 13241bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 13251bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams jint len = _env->GetArrayLength(vtxIDs); 13261bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshCreate, con(%p), batchID(%i), indexID(%i), vtxIDs.len(%i), primID(%i)", 13271bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams con, batchID, indexID, len, primID); 13281bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams jint *ptr = _env->GetIntArrayElements(vtxIDs, NULL); 1329bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams int id = (int)rsSimpleMeshCreate(con, (void *)batchID, (void *)indexID, (void **)ptr, len, primID); 13301bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams _env->ReleaseIntArrayElements(vtxIDs, ptr, 0/*JNI_ABORT*/); 13311bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams return id; 13321bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 13331bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 13341bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic void 13351bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshBindVertex(JNIEnv *_env, jobject _this, jint s, jint alloc, jint slot) 13361bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 13371bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 13381bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshBindVertex, con(%p), SimpleMesh(%p), Alloc(%p), slot(%i)", con, (RsSimpleMesh)s, (RsAllocation)alloc, slot); 1339bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSimpleMeshBindVertex(con, (RsSimpleMesh)s, (RsAllocation)alloc, slot); 13401bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 13411bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 13421bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic void 13431bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshBindIndex(JNIEnv *_env, jobject _this, jint s, jint alloc) 13441bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 13451bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 13461bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshBindIndex, con(%p), SimpleMesh(%p), Alloc(%p)", con, (RsSimpleMesh)s, (RsAllocation)alloc); 1347bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSimpleMeshBindIndex(con, (RsSimpleMesh)s, (RsAllocation)alloc); 13481bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 13491bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 13501bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams// --------------------------------------------------------------------------- 13511bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 1352d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 135394d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1354d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1355d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 1356d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"_nInit", "()V", (void*)_nInit }, 1357ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams{"nInitElements", "(IIII)V", (void*)nInitElements }, 1358ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 1359d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 1360d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 1361ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 1362704ff64b099406bb328898a7443921f22dbffd6dJason Sams{"nContextCreate", "(II)I", (void*)nContextCreate }, 1363704ff64b099406bb328898a7443921f22dbffd6dJason Sams{"nContextCreateGL", "(IIZ)I", (void*)nContextCreateGL }, 13647d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{"nContextSetPriority", "(I)V", (void*)nContextSetPriority }, 13653bc47d438171dce294e816366d53bc9eca772c5bJason Sams{"nContextSetSurface", "(IILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1366d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextDestroy", "(I)V", (void*)nContextDestroy }, 1367715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{"nContextDump", "(I)V", (void*)nContextDump }, 136865e7aa56f56097418d617663683544c25b3988eaJason Sams{"nContextPause", "()V", (void*)nContextPause }, 136965e7aa56f56097418d617663683544c25b3988eaJason Sams{"nContextResume", "()V", (void*)nContextResume }, 13703eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{"nAssignName", "(I[B)V", (void*)nAssignName }, 13717ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{"nObjDestroy", "(I)V", (void*)nObjDestroy }, 1372730ee65d4ddb307898053b623120bad1655fadadJason Sams{"nObjDestroyOOB", "(I)V", (void*)nObjDestroyOOB }, 1373516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{"nContextGetMessage", "([IZ)I", (void*)nContextGetMessage }, 1374516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{"nContextInitToClient", "()V", (void*)nContextInitToClient }, 1375516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{"nContextDeinitToClient", "()V", (void*)nContextDeinitToClient }, 1376d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 137764676f3c21a07d650069315572811570cbf8f728Jason Sams{"nFileOpen", "([B)I", (void*)nFileOpen }, 137864676f3c21a07d650069315572811570cbf8f728Jason Sams 1379718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams{"nElementCreate", "(IIZI)I", (void*)nElementCreate }, 1380718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams{"nElementCreate2", "([I[Ljava/lang/String;)I", (void*)nElementCreate2 }, 1381d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1382d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeBegin", "(I)V", (void*)nTypeBegin }, 1383d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeAdd", "(II)V", (void*)nTypeAdd }, 1384d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeCreate", "()I", (void*)nTypeCreate }, 138543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nTypeFinalDestroy", "(Landroid/renderscript/Type;)V", (void*)nTypeFinalDestroy }, 138643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nTypeSetupFields", "(Landroid/renderscript/Type;[I[I[Ljava/lang/reflect/Field;)V", (void*)nTypeSetupFields }, 1387d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1388d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationCreateTyped", "(I)I", (void*)nAllocationCreateTyped }, 1389ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{"nAllocationCreateFromBitmap", "(IZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap }, 13908a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{"nAllocationCreateBitmapRef", "(ILandroid/graphics/Bitmap;)I", (void*)nAllocationCreateBitmapRef }, 139107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationCreateFromBitmapBoxed","(IZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmapBoxed }, 1392650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{"nAllocationCreateFromAssetStream","(IZI)I", (void*)nAllocationCreateFromAssetStream }, 1393c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams{"nAllocationUploadToTexture", "(IZI)V", (void*)nAllocationUploadToTexture }, 139407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationUploadToBufferObject","(I)V", (void*)nAllocationUploadToBufferObject }, 139507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData1D", "(III[II)V", (void*)nAllocationSubData1D_i }, 1396768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams{"nAllocationSubData1D", "(III[SI)V", (void*)nAllocationSubData1D_s }, 1397768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams{"nAllocationSubData1D", "(III[BI)V", (void*)nAllocationSubData1D_b }, 139807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData1D", "(III[FI)V", (void*)nAllocationSubData1D_f }, 139907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData2D", "(IIIII[II)V", (void*)nAllocationSubData2D_i }, 140007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData2D", "(IIIII[FI)V", (void*)nAllocationSubData2D_f }, 140140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{"nAllocationRead", "(I[I)V", (void*)nAllocationRead_i }, 140240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{"nAllocationRead", "(I[F)V", (void*)nAllocationRead_f }, 14032525a815220652b37e2e390fe8c62394a6d0e574Jason Sams{"nAllocationSubDataFromObject", "(ILandroid/renderscript/Type;ILjava/lang/Object;)V", (void*)nAllocationSubDataFromObject }, 14045f43fd289abbd5380b6068766daf721b555d0053Jason Sams{"nAllocationSubReadFromObject", "(ILandroid/renderscript/Type;ILjava/lang/Object;)V", (void*)nAllocationSubReadFromObject }, 1405d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1406d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DBindAllocation", "(II)V", (void*)nAdapter1DBindAllocation }, 1407d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DSetConstraint", "(III)V", (void*)nAdapter1DSetConstraint }, 1408d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DData", "(I[I)V", (void*)nAdapter1DData_i }, 1409d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DData", "(I[F)V", (void*)nAdapter1DData_f }, 1410bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter1DSubData", "(III[I)V", (void*)nAdapter1DSubData_i }, 1411d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DSubData", "(III[F)V", (void*)nAdapter1DSubData_f }, 1412d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DCreate", "()I", (void*)nAdapter1DCreate }, 1413d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1414bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DBindAllocation", "(II)V", (void*)nAdapter2DBindAllocation }, 1415bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSetConstraint", "(III)V", (void*)nAdapter2DSetConstraint }, 1416bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DData", "(I[I)V", (void*)nAdapter2DData_i }, 1417bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DData", "(I[F)V", (void*)nAdapter2DData_f }, 1418bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSubData", "(IIIII[I)V", (void*)nAdapter2DSubData_i }, 1419bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSubData", "(IIIII[F)V", (void*)nAdapter2DSubData_f }, 1420bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DCreate", "()I", (void*)nAdapter2DCreate }, 1421bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 1422d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptBindAllocation", "(III)V", (void*)nScriptBindAllocation }, 142322534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearColor", "(IFFFF)V", (void*)nScriptSetClearColor }, 142422534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearDepth", "(IF)V", (void*)nScriptSetClearDepth }, 142522534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearStencil", "(II)V", (void*)nScriptSetClearStencil }, 142622534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetTimeZone", "(I[B)V", (void*)nScriptSetTimeZone }, 1427334ea0c98f051b5a6b85bc616c93304651854298Jason Sams{"nScriptSetType", "(IZLjava/lang/String;I)V", (void*)nScriptSetType }, 1428fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams{"nScriptSetRoot", "(Z)V", (void*)nScriptSetRoot }, 1429be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{"nScriptSetInvokable", "(Ljava/lang/String;I)V", (void*)nScriptSetInvoke }, 1430be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{"nScriptInvoke", "(II)V", (void*)nScriptInvoke }, 143122534176fb5c1257130ef4ee589739ca42766a32Jason Sams 1432d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptCBegin", "()V", (void*)nScriptCBegin }, 143343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich{"nScriptCSetScript", "([BII)V", (void*)nScriptCSetScript }, 1434d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptCCreate", "()I", (void*)nScriptCCreate }, 1435d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{"nScriptCAddDefineI32", "(Ljava/lang/String;I)V", (void*)nScriptCAddDefineI32 }, 1436d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{"nScriptCAddDefineF", "(Ljava/lang/String;F)V", (void*)nScriptCAddDefineF }, 1437d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1438d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreBegin", "(II)V", (void*)nProgramFragmentStoreBegin }, 1439d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDepthFunc", "(I)V", (void*)nProgramFragmentStoreDepthFunc }, 1440d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDepthMask", "(Z)V", (void*)nProgramFragmentStoreDepthMask }, 1441d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreColorMask", "(ZZZZ)V", (void*)nProgramFragmentStoreColorMask }, 1442d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreBlendFunc", "(II)V", (void*)nProgramFragmentStoreBlendFunc }, 1443d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDither", "(Z)V", (void*)nProgramFragmentStoreDither }, 1444d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreCreate", "()I", (void*)nProgramFragmentStoreCreate }, 1445d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 14460011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{"nProgramBindConstants", "(III)V", (void*)nProgramBindConstants }, 144768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams{"nProgramBindTexture", "(III)V", (void*)nProgramBindTexture }, 144868afd01ec9fd37774d8291192952a25e5605b6fbJason Sams{"nProgramBindSampler", "(III)V", (void*)nProgramBindSampler }, 14490011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 145068afd01ec9fd37774d8291192952a25e5605b6fbJason Sams{"nProgramFragmentCreate", "([I)I", (void*)nProgramFragmentCreate }, 14517e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{"nProgramFragmentCreate2", "(Ljava/lang/String;[I)I", (void*)nProgramFragmentCreate2 }, 1452d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1453ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nProgramRasterCreate", "(IIZZZ)I", (void*)nProgramRasterCreate }, 1454ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nProgramRasterSetPointSize", "(IF)V", (void*)nProgramRasterSetPointSize }, 1455ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nProgramRasterSetLineWidth", "(IF)V", (void*)nProgramRasterSetLineWidth }, 1456ebfb436a49673693b98469683451bd9ede797557Jason Sams 14570011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{"nProgramVertexCreate", "(Z)I", (void*)nProgramVertexCreate }, 14580011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{"nProgramVertexCreate2", "(Ljava/lang/String;[I)I", (void*)nProgramVertexCreate2 }, 14591fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1460bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightBegin", "()V", (void*)nLightBegin }, 1461bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetIsMono", "(Z)V", (void*)nLightSetIsMono }, 1462bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetIsLocal", "(Z)V", (void*)nLightSetIsLocal }, 1463bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightCreate", "()I", (void*)nLightCreate }, 1464bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetColor", "(IFFF)V", (void*)nLightSetColor }, 1465bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetPosition", "(IFFF)V", (void*)nLightSetPosition }, 1466bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1467d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindRootScript", "(I)V", (void*)nContextBindRootScript }, 1468d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindProgramFragmentStore","(I)V", (void*)nContextBindProgramFragmentStore }, 1469d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindProgramFragment", "(I)V", (void*)nContextBindProgramFragment }, 14700826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{"nContextBindProgramVertex", "(I)V", (void*)nContextBindProgramVertex }, 1471ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nContextBindProgramRaster", "(I)V", (void*)nContextBindProgramRaster }, 1472d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 147302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerBegin", "()V", (void*)nSamplerBegin }, 147402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerSet", "(II)V", (void*)nSamplerSet }, 147502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerCreate", "()I", (void*)nSamplerCreate }, 147602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 14771bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshCreate", "(II[II)I", (void*)nSimpleMeshCreate }, 14781bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshBindVertex", "(III)V", (void*)nSimpleMeshBindVertex }, 14791bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshBindIndex", "(II)V", (void*)nSimpleMeshBindIndex }, 14801bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 1481d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1482d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1483d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1484d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1485d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1486d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1487d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1488d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1489d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1490d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1491d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1492d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1493d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1494d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1495d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1496d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1497d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1498d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1499d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1500d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1501d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1502d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1503d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1504d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1505d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1506d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1507d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1508d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1509d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1510d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1511d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1512d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1513