android_renderscript_RenderScript.cpp revision efd9b6fb2e0f31b50db089352118e5daeb268879
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 26d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <ui/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 154b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason SamsnContextCreate(JNIEnv *_env, jobject _this, jint dev, jobject wnd, jint ver, jboolean useDepth) 155d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 156d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 157d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 158d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (wnd == NULL) { 159d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams not_valid_surface: 160d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams doThrow(_env, "java/lang/IllegalArgumentException", 161d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams "Make sure the SurfaceView or associated SurfaceHolder has a valid Surface"); 162d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return 0; 163d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 164d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jclass surface_class = _env->FindClass("android/view/Surface"); 165d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfieldID surfaceFieldID = _env->GetFieldID(surface_class, "mSurface", "I"); 166d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams Surface * window = (Surface*)_env->GetIntField(wnd, surfaceFieldID); 167d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (window == NULL) 168d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto not_valid_surface; 169d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 170b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams return (jint)rsContextCreate((RsDevice)dev, window, ver, useDepth); 171d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 172d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 173d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 174efd9b6fb2e0f31b50db089352118e5daeb268879Jason SamsnContextSetSurface(JNIEnv *_env, jobject _this, jobject wnd) 175efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 176efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 177efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams LOG_API("nContextSetSurface, con(%p), surface(%p)", con, (Surface *)wnd); 178efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 179efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams Surface * window = NULL; 180efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 181efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 182efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 183efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams jclass surface_class = _env->FindClass("android/view/Surface"); 184efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams jfieldID surfaceFieldID = _env->GetFieldID(surface_class, "mSurface", "I"); 185efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams window = (Surface*)_env->GetIntField(wnd, surfaceFieldID); 186efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 187efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 188efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams rsContextSetSurface(con, window); 189efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 190efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 191efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 192d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextDestroy(JNIEnv *_env, jobject _this, jint con) 193d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 194d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextDestroy, con(%p)", (RsContext)con); 195d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsContextDestroy((RsContext)con); 196d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 197d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 198d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 199d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 20065e7aa56f56097418d617663683544c25b3988eaJason SamsnContextPause(JNIEnv *_env, jobject _this) 20165e7aa56f56097418d617663683544c25b3988eaJason Sams{ 20265e7aa56f56097418d617663683544c25b3988eaJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 20365e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextPause, con(%p)", con); 20465e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextPause(con); 20565e7aa56f56097418d617663683544c25b3988eaJason Sams} 20665e7aa56f56097418d617663683544c25b3988eaJason Sams 20765e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 20865e7aa56f56097418d617663683544c25b3988eaJason SamsnContextResume(JNIEnv *_env, jobject _this) 20965e7aa56f56097418d617663683544c25b3988eaJason Sams{ 21065e7aa56f56097418d617663683544c25b3988eaJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 21165e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextResume, con(%p)", con); 21265e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextResume(con); 21365e7aa56f56097418d617663683544c25b3988eaJason Sams} 21465e7aa56f56097418d617663683544c25b3988eaJason Sams 215516c31911578db8ce53529483c3ded918ac7dc6bJason Samsstatic jint 216516c31911578db8ce53529483c3ded918ac7dc6bJason SamsnContextGetMessage(JNIEnv *_env, jobject _this, jintArray data, jboolean wait) 217516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 218516c31911578db8ce53529483c3ded918ac7dc6bJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 219516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 220516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextGetMessage, con(%p), len(%i)", con, len); 221516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 222516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 223516c31911578db8ce53529483c3ded918ac7dc6bJason Sams int id = rsContextGetMessage(con, ptr, &receiveLen, len * 4, wait); 224516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 225516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOGE("message receive buffer too small. %i", receiveLen); 226516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 227516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 228516c31911578db8ce53529483c3ded918ac7dc6bJason Sams return id; 229516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 230516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 231516c31911578db8ce53529483c3ded918ac7dc6bJason Samsstatic void nContextInitToClient(JNIEnv *_env, jobject _this) 232516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 233516c31911578db8ce53529483c3ded918ac7dc6bJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 234516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextInitToClient, con(%p)", con); 235516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextInitToClient(con); 236516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 237516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 238516c31911578db8ce53529483c3ded918ac7dc6bJason Samsstatic void nContextDeinitToClient(JNIEnv *_env, jobject _this) 239516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 240516c31911578db8ce53529483c3ded918ac7dc6bJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 241516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextDeinitToClient, con(%p)", con); 242516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextDeinitToClient(con); 243516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 244516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 245516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 24665e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 247d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnElementBegin(JNIEnv *_env, jobject _this) 248d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 249d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 250d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementBegin, con(%p)", con); 251bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsElementBegin(con); 252d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 253d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 254d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 255d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 256768bc02d815a94ad29146f1ed60c847d1af118ccJason SamsnElementAdd(JNIEnv *_env, jobject _this, jint kind, jint type, jboolean norm, jint bits, jstring name) 257d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 258d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 25943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const char* n = NULL; 26043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams if (name) { 26143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams n = _env->GetStringUTFChars(name, NULL); 26243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 263d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementAdd, con(%p), kind(%i), type(%i), norm(%i), bits(%i)", con, kind, type, norm, bits); 264bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsElementAdd(con, (RsDataKind)kind, (RsDataType)type, norm != 0, (size_t)bits, n); 26543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams if (n) { 26643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseStringUTFChars(name, n); 26743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 268d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 269d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 270d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 271d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnElementCreate(JNIEnv *_env, jobject _this) 272d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 273d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 274d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementCreate, con(%p)", con); 275bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsElementCreate(con); 276d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 277d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 278d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 279d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 280d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 281d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeBegin(JNIEnv *_env, jobject _this, jint eID) 282d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 283d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 284d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeBegin, con(%p) e(%p)", con, (RsElement)eID); 285bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeBegin(con, (RsElement)eID); 286d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 287d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 288d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 289d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeAdd(JNIEnv *_env, jobject _this, jint dim, jint val) 290d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 291d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 292d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeAdd, con(%p) dim(%i), val(%i)", con, dim, val); 293bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeAdd(con, (RsDimension)dim, val); 294d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 295d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 296d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 297d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeCreate(JNIEnv *_env, jobject _this) 298d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 299d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 300d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeCreate, con(%p)", con); 301bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsTypeCreate(con); 302d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 303d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 30443ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadInt(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 30543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 30643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int32_t *)buffer)[0] = _env->GetIntField(_obj, _field); 30743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 4; 30843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 30943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 31043ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadShort(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 31143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 31243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int16_t *)buffer)[0] = _env->GetShortField(_obj, _field); 31343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 2; 31443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 31543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 31643ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadByte(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 31743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 31843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int8_t *)buffer)[0] = _env->GetByteField(_obj, _field); 31943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 1; 32043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 32143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 32243ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadFloat(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 32343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 32443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((float *)buffer)[0] = _env->GetFloatField(_obj, _field); 32543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 4; 32643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 32743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 3285f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveInt(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 3295f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 3305f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetIntField(_obj, _field, ((int32_t *)buffer)[0]); 3315f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 4; 3325f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 3335f43fd289abbd5380b6068766daf721b555d0053Jason Sams 3345f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveShort(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 3355f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 3365f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetShortField(_obj, _field, ((int16_t *)buffer)[0]); 3375f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 2; 3385f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 3395f43fd289abbd5380b6068766daf721b555d0053Jason Sams 3405f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveByte(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 3415f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 3425f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetByteField(_obj, _field, ((int8_t *)buffer)[0]); 3435f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 1; 3445f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 3455f43fd289abbd5380b6068766daf721b555d0053Jason Sams 3465f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveFloat(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 3475f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 3485f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetFloatField(_obj, _field, ((float *)buffer)[0]); 3495f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 4; 3505f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 3515f43fd289abbd5380b6068766daf721b555d0053Jason Sams 35243ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstruct TypeFieldCache { 35343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jfieldID field; 35443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int bits; 35543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * (*ptr)(JNIEnv *, jobject, jfieldID, void *buffer); 3565f43fd289abbd5380b6068766daf721b555d0053Jason Sams void * (*readPtr)(JNIEnv *, jobject, jfieldID, void *buffer); 35743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams}; 35843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 35943ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstruct TypeCache { 36043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int fieldCount; 36143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int size; 36243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeFieldCache fields[1]; 36343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams}; 36443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 36543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams//{"nTypeFinalDestroy", "(Landroid/renderscript/Type;)V", (void*)nTypeFinalDestroy }, 36643ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 36743ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnTypeFinalDestroy(JNIEnv *_env, jobject _this, jobject _type) 36843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 36943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 37043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams free(tc); 37143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 37243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 37343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams// native void nTypeSetupFields(Type t, int[] types, int[] bits, Field[] IDs); 37443ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 37543ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnTypeSetupFields(JNIEnv *_env, jobject _this, jobject _type, jintArray _types, jintArray _bits, jobjectArray _IDs) 37643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 37743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int fieldCount = _env->GetArrayLength(_types); 37843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams size_t structSize = sizeof(TypeCache) + (sizeof(TypeFieldCache) * (fieldCount-1)); 37943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeCache *tc = (TypeCache *)malloc(structSize); 38043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams memset(tc, 0, structSize); 38143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 38243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeFieldCache *tfc = &tc->fields[0]; 38343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tc->fieldCount = fieldCount; 38443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->SetIntField(_type, gTypeNativeCache, (jint)tc); 38543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 38643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jint *fType = _env->GetIntArrayElements(_types, NULL); 38743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jint *fBits = _env->GetIntArrayElements(_bits, NULL); 38843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams for (int ct=0; ct < fieldCount; ct++) { 38943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jobject field = _env->GetObjectArrayElement(_IDs, ct); 39043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].field = _env->FromReflectedField(field); 39143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].bits = fBits[ct]; 39243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 39343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams switch(fType[ct]) { 39443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case RS_TYPE_FLOAT: 39543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].ptr = SF_LoadFloat; 3965f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].readPtr = SF_SaveFloat; 39743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams break; 39843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case RS_TYPE_UNSIGNED: 39943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case RS_TYPE_SIGNED: 40043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams switch(tfc[ct].bits) { 4015f43fd289abbd5380b6068766daf721b555d0053Jason Sams case 32: 4025f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].ptr = SF_LoadInt; 4035f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].readPtr = SF_SaveInt; 4045f43fd289abbd5380b6068766daf721b555d0053Jason Sams break; 4055f43fd289abbd5380b6068766daf721b555d0053Jason Sams case 16: 4065f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].ptr = SF_LoadShort; 4075f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].readPtr = SF_SaveShort; 4085f43fd289abbd5380b6068766daf721b555d0053Jason Sams break; 4095f43fd289abbd5380b6068766daf721b555d0053Jason Sams case 8: 4105f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].ptr = SF_LoadByte; 4115f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].readPtr = SF_SaveByte; 4125f43fd289abbd5380b6068766daf721b555d0053Jason Sams break; 41343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 41443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams break; 41543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 41643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tc->size += 4; 41743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 41843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 41943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseIntArrayElements(_types, fType, JNI_ABORT); 42043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseIntArrayElements(_bits, fBits, JNI_ABORT); 42143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 42243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 42343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 424d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 425d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 426d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 427d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, jint e) 428d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 429d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 430d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationCreateTyped, con(%p), e(%p)", con, (RsElement)e); 431bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsAllocationCreateTyped(con, (RsElement)e); 432d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 433d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 434d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 435d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationUploadToTexture(JNIEnv *_env, jobject _this, jint a, jint mip) 436d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 437d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 438d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationUploadToTexture, con(%p), a(%p), mip(%i)", con, (RsAllocation)a, mip); 439bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationUploadToTexture(con, (RsAllocation)a, mip); 440d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 441d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 44207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Samsstatic void 44307ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationUploadToBufferObject(JNIEnv *_env, jobject _this, jint a) 44407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{ 44507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 44607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAllocationUploadToBufferObject, con(%p), a(%p)", con, (RsAllocation)a); 44707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocationUploadToBufferObject(con, (RsAllocation)a); 44807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams} 44907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 450ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement SkBitmapToPredefined(SkBitmap::Config cfg) 451ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{ 452ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams switch (cfg) { 453ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kA8_Config: 454ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_A_8; 455ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_4444_Config: 456ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_4444; 457ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_8888_Config: 458ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_8888; 459ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kRGB_565_Config: 460ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGB_565; 461ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 462ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams default: 463ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams break; 464ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 465ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams // If we don't have a conversion mark it as a user type. 466ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams LOGE("Unsupported bitmap type"); 467ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return NULL; 468ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 469ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 470fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 471ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap) 472fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 473fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 474ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 475ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 476ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 477ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap::Config config = bitmap.getConfig(); 478fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 479ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 480ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 481ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.lockPixels(); 482ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int w = bitmap.width(); 483ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int h = bitmap.height(); 484ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const void* ptr = bitmap.getPixels(); 485ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 486ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.unlockPixels(); 487ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return id; 488ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 489ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return 0; 490ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 491fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 492b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Samsstatic int 493650a3eb7d621dc8e81573142a4498bbd07bcde27Romain GuynAllocationCreateFromAssetStream(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jint native_asset) 494650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 495650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 496650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 497650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy Asset* asset = reinterpret_cast<Asset*>(native_asset); 498650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap bitmap; 499650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkImageDecoder::DecodeMemory(asset->getBuffer(false), asset->getLength(), 500650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy &bitmap, SkBitmap::kNo_Config, SkImageDecoder::kDecodePixels_Mode); 501650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 502650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap::Config config = bitmap.getConfig(); 503650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 504ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 505650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 506ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 507650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.lockPixels(); 508650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int w = bitmap.width(); 509650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int h = bitmap.height(); 510650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const void* ptr = bitmap.getPixels(); 511ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 512650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.unlockPixels(); 513650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return id; 514650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } 515650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return 0; 516650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 517650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 518650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guystatic int 519b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason SamsnAllocationCreateFromBitmapBoxed(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap) 520b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams{ 521b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 522b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap const * nativeBitmap = 523b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 524b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const SkBitmap& bitmap(*nativeBitmap); 525b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap::Config config = bitmap.getConfig(); 526b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 527ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 528b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 529ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 530b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.lockPixels(); 531b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int w = bitmap.width(); 532b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int h = bitmap.height(); 533b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const void* ptr = bitmap.getPixels(); 534ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmapBoxed(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 535b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.unlockPixels(); 536b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return id; 537b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams } 538b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return 0; 539b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams} 540b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 541fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 542d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 543768bc02d815a94ad29146f1ed60c847d1af118ccJason SamsnAllocationSubData1D_i(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jintArray data, int sizeBytes) 544d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 545d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 546d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 547768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 548d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 549768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 550d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 551d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 552d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 553d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 554768bc02d815a94ad29146f1ed60c847d1af118ccJason SamsnAllocationSubData1D_s(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jshortArray data, int sizeBytes) 555d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 556d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 557d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 558768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 559768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 560768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 561768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 562d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 563d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 564d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 565768bc02d815a94ad29146f1ed60c847d1af118ccJason SamsnAllocationSubData1D_b(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jbyteArray data, int sizeBytes) 566d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 567d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 568d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 569768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 570768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 57107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 572768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 573d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 574d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 575d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 57607ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData1D_f(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jfloatArray data, int sizeBytes) 577d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 578d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 579d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 580768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 581d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 58207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 583d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 584d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 585d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 586d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 58707ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData2D_i(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data, int sizeBytes) 588d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 589d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 590d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 591d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 592d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 59307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 594d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 595d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 596d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 597d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 59807ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData2D_f(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data, int sizeBytes) 599d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 600d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 601d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 602d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 603d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 60407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 605d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 606d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 607d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 60840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 60940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, jint alloc, jintArray data) 61040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 61140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 61240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 61340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 61440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 615bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 616ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 61740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 61840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 61940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 62040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, jint alloc, jfloatArray data) 62140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 62240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 62340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 624a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 62540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 626bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 627ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 62840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 629d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 630d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 63143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams//{"nAllocationDataFromObject", "(ILandroid/renderscript/Type;Ljava/lang/Object;)V", (void*)nAllocationDataFromObject }, 63243ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 6332525a815220652b37e2e390fe8c62394a6d0e574Jason SamsnAllocationSubDataFromObject(JNIEnv *_env, jobject _this, jint alloc, jobject _type, jint offset, jobject _o) 63443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 63543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 63643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams LOG_API("nAllocationDataFromObject con(%p), alloc(%p)", con, (RsAllocation)alloc); 63743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 63843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 63943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 64043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * bufAlloc = malloc(tc->size); 64143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * buf = bufAlloc; 64243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams for (int ct=0; ct < tc->fieldCount; ct++) { 64343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const TypeFieldCache *tfc = &tc->fields[ct]; 64443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams buf = tfc->ptr(_env, _o, tfc->field, buf); 64543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 6462525a815220652b37e2e390fe8c62394a6d0e574Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, 1, bufAlloc, tc->size); 6475f43fd289abbd5380b6068766daf721b555d0053Jason Sams free(bufAlloc); 6485f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 6495f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6505f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void 6515f43fd289abbd5380b6068766daf721b555d0053Jason SamsnAllocationSubReadFromObject(JNIEnv *_env, jobject _this, jint alloc, jobject _type, jint offset, jobject _o) 6525f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 6535f43fd289abbd5380b6068766daf721b555d0053Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 6545f43fd289abbd5380b6068766daf721b555d0053Jason Sams LOG_API("nAllocationReadFromObject con(%p), alloc(%p)", con, (RsAllocation)alloc); 6555f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6565f43fd289abbd5380b6068766daf721b555d0053Jason Sams assert(offset == 0); 6575f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6585f43fd289abbd5380b6068766daf721b555d0053Jason Sams const TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 6595f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6605f43fd289abbd5380b6068766daf721b555d0053Jason Sams void * bufAlloc = malloc(tc->size); 6615f43fd289abbd5380b6068766daf721b555d0053Jason Sams void * buf = bufAlloc; 6625f43fd289abbd5380b6068766daf721b555d0053Jason Sams rsAllocationRead(con, (RsAllocation)alloc, bufAlloc); 6635f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6645f43fd289abbd5380b6068766daf721b555d0053Jason Sams for (int ct=0; ct < tc->fieldCount; ct++) { 6655f43fd289abbd5380b6068766daf721b555d0053Jason Sams const TypeFieldCache *tfc = &tc->fields[ct]; 6665f43fd289abbd5380b6068766daf721b555d0053Jason Sams buf = tfc->readPtr(_env, _o, tfc->field, buf); 6675f43fd289abbd5380b6068766daf721b555d0053Jason Sams } 66843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams free(bufAlloc); 66943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 67043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 671d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 672d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 673d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 674d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 675d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) 676d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 677d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 678d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter1D)adapter, (RsAllocation)alloc); 679bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DBindAllocation(con, (RsAdapter1D)adapter, (RsAllocation)alloc); 680d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 681d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 682d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 683d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) 684d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 685d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 686d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter1D)adapter, dim, value); 687bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSetConstraint(con, (RsAdapter1D)adapter, (RsDimension)dim, value); 688d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 689d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 690d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 691d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) 692d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 693d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 694d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 695d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 696d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 697bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 698d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 699d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 700d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 701d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 702d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jintArray data) 703d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 704d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 705d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 706d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 707d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 708bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 709d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 710d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 711d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 712d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 713d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) 714d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 715d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 716d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 717d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 718d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 719bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 720d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 721d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 722d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 723d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 724d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jfloatArray data) 725d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 726d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 727d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 728d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 729d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 730bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 731d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 732d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 733d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 734d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 735d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DCreate(JNIEnv *_env, jobject _this) 736d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 737d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 738d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DCreate, con(%p)", con); 739bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter1DCreate(con); 740d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 741d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 742d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 743d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 744d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 745bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) 746bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 747bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 748bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter2D)adapter, (RsAllocation)alloc); 749bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DBindAllocation(con, (RsAdapter2D)adapter, (RsAllocation)alloc); 750bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 751bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 752bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 753bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) 754bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 755bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 756bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter2D)adapter, dim, value); 757bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSetConstraint(con, (RsAdapter2D)adapter, (RsDimension)dim, value); 758bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 759bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 760bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 761bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) 762bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 763bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 764bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 765bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 766bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 767bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 768bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 769bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 770bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 771bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 772bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) 773bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 774bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 775bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 776bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 777bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 778bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 779bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 780bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 781bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 782bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 783bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jintArray data) 784bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 785bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 786bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 787bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 788bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 789bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 790bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter2D)adapter, xoff, yoff, w, h, ptr); 791bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 792bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 793bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 794bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 795bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jfloatArray data) 796bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 797bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 798bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 799bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_f, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 800bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 801bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 802bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter1D)adapter, xoff, yoff, w, h, ptr); 803bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 804bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 805bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 806bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic jint 807bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DCreate(JNIEnv *_env, jobject _this) 808bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 809bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 810bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DCreate, con(%p)", con); 811bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter2DCreate(con); 812bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 813bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 814bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 815bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 816bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 817d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, jint script, jint alloc, jint slot) 818d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 819d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 820d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 821bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 822d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 823d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 824d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 82522534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearColor(JNIEnv *_env, jobject _this, jint script, jfloat r, jfloat g, jfloat b, jfloat a) 826d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 827d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 82807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptSetClearColor, con(%p), s(%p), r(%f), g(%f), b(%f), a(%f)", con, (void *)script, r, g, b, a); 829bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearColor(con, (RsScript)script, r, g, b, a); 830d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 831d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 832d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 83322534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearDepth(JNIEnv *_env, jobject _this, jint script, jfloat d) 834d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 835d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 83607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetClearDepth, con(%p), s(%p), depth(%f)", con, (void *)script, d); 837bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearDepth(con, (RsScript)script, d); 838d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 839d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 840d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 84122534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearStencil(JNIEnv *_env, jobject _this, jint script, jint stencil) 842d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 843d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 84407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetClearStencil, con(%p), s(%p), stencil(%i)", con, (void *)script, stencil); 845bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearStencil(con, (RsScript)script, stencil); 846d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 847d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 848d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 84922534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, jint script, jbyteArray timeZone) 850584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 851584a375df68ed7d62b38389078c6804edf228f9cRomain Guy RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 85207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 853584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 854584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 855584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 856584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 857584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 858bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 859584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 860584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 861584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 862584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 863584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 864584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 86522534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 866334ea0c98f051b5a6b85bc616c93304651854298Jason SamsnScriptSetType(JNIEnv *_env, jobject _this, jint type, jboolean writable, jstring _str, jint slot) 86722534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 86822534176fb5c1257130ef4ee589739ca42766a32Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 869334ea0c98f051b5a6b85bc616c93304651854298Jason Sams LOG_API("nScriptCAddType, con(%p), type(%p), writable(%i), slot(%i)", con, (RsType)type, writable, slot); 870fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams const char* n = NULL; 871fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams if (_str) { 872fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams n = _env->GetStringUTFChars(_str, NULL); 873fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams } 874bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetType(con, (RsType)type, slot, writable, n); 875fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams if (n) { 876fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams _env->ReleaseStringUTFChars(_str, n); 877fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams } 87822534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 87922534176fb5c1257130ef4ee589739ca42766a32Jason Sams 880584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 881be2e84193f709419634de4cc3ba0e67acf6976f3Jason SamsnScriptSetInvoke(JNIEnv *_env, jobject _this, jstring _str, jint slot) 882be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 883be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 884be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams LOG_API("nScriptSetInvoke, con(%p)", con); 885be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams const char* n = NULL; 886be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams if (_str) { 887be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams n = _env->GetStringUTFChars(_str, NULL); 888be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams } 889be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams rsScriptSetInvoke(con, n, slot); 890be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams if (n) { 891be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams _env->ReleaseStringUTFChars(_str, n); 892be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams } 893be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 894be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 895be2e84193f709419634de4cc3ba0e67acf6976f3Jason Samsstatic void 896be2e84193f709419634de4cc3ba0e67acf6976f3Jason SamsnScriptInvoke(JNIEnv *_env, jobject _this, jint obj, jint slot) 897be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 898be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 899be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 900be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 901be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 902be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 903be2e84193f709419634de4cc3ba0e67acf6976f3Jason Samsstatic void 904fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason SamsnScriptSetRoot(JNIEnv *_env, jobject _this, jboolean isRoot) 905d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 906d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 907fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCSetRoot, con(%p), isRoot(%i)", con, isRoot); 908bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetRoot(con, isRoot); 909d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 910d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 911fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 912fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 913d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 914fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason SamsnScriptCBegin(JNIEnv *_env, jobject _this) 915d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 916d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 917fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCBegin, con(%p)", con); 918bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCBegin(con); 919d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 920d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 921d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 92243702d8925c54360ad5f9f66b0d35d61d59f6910Jack PalevichnScriptCSetScript(JNIEnv *_env, jobject _this, jbyteArray scriptRef, 92343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint offset, jint length) 924d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 925d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 926d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("!!! nScriptCSetScript, con(%p)", con); 92743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 92843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 92943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_base = 0; 93043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_ptr; 93143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 93243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 93343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "script == null"); 93443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 93543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 93643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (offset < 0) { 93743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 93843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "offset < 0"); 93943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 94043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 94143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 94243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 94343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length < 0"); 94443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 94543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 94643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich remaining = _env->GetArrayLength(scriptRef) - offset; 94743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 94843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 94943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length > script.length - offset"); 95043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 95143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 95243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_base = (jbyte *) 95343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 95443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_ptr = script_base + offset; 95543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 956bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetText(con, (const char *)script_ptr, length); 95739ddc950c9064129ead5de04b200106c0659f937Jason Sams 95843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 95943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (script_base) { 96043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->ReleasePrimitiveArrayCritical(scriptRef, script_base, 96143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 96243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 963d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 964d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 965d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 966d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnScriptCCreate(JNIEnv *_env, jobject _this) 967d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 968d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 969d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 970bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsScriptCCreate(con); 971d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 972d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 973d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 974d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonScriptCAddDefineI32(JNIEnv *_env, jobject _this, jstring name, jint value) 975d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 976d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 977d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 978d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineI32, con(%p) name(%s) value(%d)", con, n, value); 979bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetDefineI32(con, n, value); 980d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 981d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 982d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 983d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 984d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonScriptCAddDefineF(JNIEnv *_env, jobject _this, jstring name, jfloat value) 985d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 986d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 987d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 988d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineF, con(%p) name(%s) value(%f)", con, n, value); 989bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetDefineF(con, n, value); 990d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 991d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 992d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 993d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 994d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 995d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 996d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreBegin(JNIEnv *_env, jobject _this, jint in, jint out) 997d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 998d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 999d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 1000bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreBegin(con, (RsElement)in, (RsElement)out); 1001d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1002d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1003d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1004d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDepthFunc(JNIEnv *_env, jobject _this, jint func) 1005d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1006d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1007d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDepthFunc, con(%p), func(%i)", con, func); 1008bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDepthFunc(con, (RsDepthFunc)func); 1009d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1010d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1011d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1012d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDepthMask(JNIEnv *_env, jobject _this, jboolean enable) 1013d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1014d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1015d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDepthMask, con(%p), enable(%i)", con, enable); 1016bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDepthMask(con, enable); 1017d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1018d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1019d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1020d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreColorMask(JNIEnv *_env, jobject _this, jboolean r, jboolean g, jboolean b, jboolean a) 1021d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1022d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1023d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreColorMask, con(%p), r(%i), g(%i), b(%i), a(%i)", con, r, g, b, a); 1024bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreColorMask(con, r, g, b, a); 1025d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1026d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1027d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1028d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreBlendFunc(JNIEnv *_env, jobject _this, int src, int dst) 1029d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1030d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1031d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreBlendFunc, con(%p), src(%i), dst(%i)", con, src, dst); 1032bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreBlendFunc(con, (RsBlendSrcFunc)src, (RsBlendDstFunc)dst); 1033d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1034d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1035d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1036d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDither(JNIEnv *_env, jobject _this, jboolean enable) 1037d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1038d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1039d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDither, con(%p), enable(%i)", con, enable); 1040bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDither(con, enable); 1041d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1042d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1043d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 1044d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreCreate(JNIEnv *_env, jobject _this) 1045d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1046d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1047d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreCreate, con(%p)", con); 10483eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 1049bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramFragmentStoreCreate(con); 1050d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1051d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1052d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1053d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1054d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 105525ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason SamsnProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out, jboolean pointSpriteEnable) 1056d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1057d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 105825ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p) PointSprite(%i)", con, (RsElement)in, (RsElement)out, pointSpriteEnable); 105925ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out, pointSpriteEnable); 1060d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1061d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1062d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1063d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentBindTexture(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) 1064d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1065d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1066d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 1067bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 1068d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1069d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1070d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1071d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) 1072d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1073d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1074d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1075bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1076d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1077d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1078d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 107925ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason SamsnProgramFragmentSetSlot(JNIEnv *_env, jobject _this, jint slot, jboolean enable, jint env, jint vt) 1080d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1081d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 108225ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams LOG_API("nProgramFragmentSetType, con(%p), slot(%i), enable(%i), env(%i), vt(%p)", con, slot, enable, env, (RsType)vt); 108325ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams rsProgramFragmentSetSlot(con, slot, enable, (RsTexEnvMode)env, (RsType)vt); 1084d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1085d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1086d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 1087d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentCreate(JNIEnv *_env, jobject _this, jint slot, jboolean enable) 1088d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1089d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1090d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentCreate, con(%p)", con); 1091bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramFragmentCreate(con); 1092d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1093d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10941fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 10951fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10961fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic void 10971fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason SamsnProgramVertexBegin(JNIEnv *_env, jobject _this, jint in, jint out) 10981fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10991fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11001fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 1101bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexBegin(con, (RsElement)in, (RsElement)out); 11021fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11031fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 11041fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic void 11059bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason SamsnProgramVertexBindAllocation(JNIEnv *_env, jobject _this, jint vpv, jint a) 11061fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 11071fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 110807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nProgramVertexBindAllocation, con(%p), vpf(%p), a(%p)", con, (RsProgramVertex)vpv, (RsAllocation)a); 1109bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexBindAllocation(con, (RsProgramFragment)vpv, (RsAllocation)a); 11101fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11111fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 11121fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic void 11131fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason SamsnProgramVertexSetTextureMatrixEnable(JNIEnv *_env, jobject _this, jboolean enable) 11141fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 11151fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11161fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexSetTextureMatrixEnable, con(%p), enable(%i)", con, enable); 1117bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexSetTextureMatrixEnable(con, enable); 11181fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11191fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1120ee41112e1539de95596600fd2c6dada5d275217fJason Samsstatic void 1121ee41112e1539de95596600fd2c6dada5d275217fJason SamsnProgramVertexAddLight(JNIEnv *_env, jobject _this, jint light) 1122ee41112e1539de95596600fd2c6dada5d275217fJason Sams{ 1123ee41112e1539de95596600fd2c6dada5d275217fJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1124ee41112e1539de95596600fd2c6dada5d275217fJason Sams LOG_API("nProgramVertexAddLight, con(%p), light(%p)", con, (RsLight)light); 1125bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexAddLight(con, (RsLight)light); 1126ee41112e1539de95596600fd2c6dada5d275217fJason Sams} 1127ee41112e1539de95596600fd2c6dada5d275217fJason Sams 11281fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic jint 11291fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason SamsnProgramVertexCreate(JNIEnv *_env, jobject _this) 11301fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 11311fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11321fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexCreate, con(%p)", con); 1133bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramVertexCreate(con); 11341fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11351fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 11361fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1137ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1138ebfb436a49673693b98469683451bd9ede797557Jason Sams 1139ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 1140ebfb436a49673693b98469683451bd9ede797557Jason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, jint in, jint out, 1141ebfb436a49673693b98469683451bd9ede797557Jason Sams jboolean pointSmooth, jboolean lineSmooth, jboolean pointSprite) 1142ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1143ebfb436a49673693b98469683451bd9ede797557Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1144ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterCreate, con(%p), in(%p), out(%p), pointSmooth(%i), lineSmooth(%i), pointSprite(%i)", 1145ebfb436a49673693b98469683451bd9ede797557Jason Sams con, (RsElement)in, (RsElement)out, pointSmooth, lineSmooth, pointSprite); 1146ebfb436a49673693b98469683451bd9ede797557Jason Sams return (jint)rsProgramRasterCreate(con, (RsElement)in, (RsElement)out, pointSmooth, lineSmooth, pointSprite); 1147ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1148ebfb436a49673693b98469683451bd9ede797557Jason Sams 1149ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 1150ebfb436a49673693b98469683451bd9ede797557Jason SamsnProgramRasterSetPointSize(JNIEnv *_env, jobject _this, jint vpr, jfloat v) 1151ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1152ebfb436a49673693b98469683451bd9ede797557Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1153ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterSetPointSize, con(%p), vpf(%p), value(%f)", con, (RsProgramRaster)vpr, v); 1154ebfb436a49673693b98469683451bd9ede797557Jason Sams rsProgramRasterSetPointSize(con, (RsProgramFragment)vpr, v); 1155ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1156ebfb436a49673693b98469683451bd9ede797557Jason Sams 1157ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 1158ebfb436a49673693b98469683451bd9ede797557Jason SamsnProgramRasterSetLineWidth(JNIEnv *_env, jobject _this, jint vpr, jfloat v) 1159ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1160ebfb436a49673693b98469683451bd9ede797557Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1161ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterSetLineWidth, con(%p), vpf(%p), value(%f)", con, (RsProgramRaster)vpr, v); 1162ebfb436a49673693b98469683451bd9ede797557Jason Sams rsProgramRasterSetLineWidth(con, (RsProgramFragment)vpr, v); 1163ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1164ebfb436a49673693b98469683451bd9ede797557Jason Sams 1165d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1166d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1167d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1168d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1169d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, jint script) 1170d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1171d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1172d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1173bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1174d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1175d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1176d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1177d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindProgramFragmentStore(JNIEnv *_env, jobject _this, jint pfs) 1178d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1179d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1180d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragmentStore, con(%p), pfs(%p)", con, (RsProgramFragmentStore)pfs); 1181bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragmentStore(con, (RsProgramFragmentStore)pfs); 1182d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1183d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1184d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1185d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, jint pf) 1186d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1187d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1188d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1189bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1190d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1191d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 11920826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 11930826a6f90f049bf94fc39fb23ad3a736a14b96ebJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, jint pf) 11940826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 11950826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11960826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1197bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 11980826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 11990826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1200d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 1201ebfb436a49673693b98469683451bd9ede797557Jason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, jint pf) 1202ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1203ebfb436a49673693b98469683451bd9ede797557Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1204ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 1205ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 1206ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1207ebfb436a49673693b98469683451bd9ede797557Jason Sams 1208ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 1209d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonContextAddDefineI32(JNIEnv *_env, jobject _this, jstring name, jint value) 1210d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 1211d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1212d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 1213d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineI32, con(%p) name(%s) value(%d)", con, n, value); 1214bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextSetDefineI32(con, n, value); 1215d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 1216d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 1217d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 1218d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 1219d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonContextAddDefineF(JNIEnv *_env, jobject _this, jstring name, jfloat value) 1220d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 1221d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1222d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 1223d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineF, con(%p) name(%s) value(%f)", con, n, value); 1224bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextSetDefineF(con, n, value); 1225d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 1226d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 1227d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 1228d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 122902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 123002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 123102fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 123202fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerBegin(JNIEnv *_env, jobject _this) 123302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 123402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 123502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerBegin, con(%p)", con); 1236bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerBegin(con); 123702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 123802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 123902fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 124002fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerSet(JNIEnv *_env, jobject _this, jint p, jint v) 124102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 124202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 124302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerSet, con(%p), param(%i), value(%i)", con, p, v); 1244bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerSet(con, (RsSamplerParam)p, (RsSamplerValue)v); 124502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 124602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 124702fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 124802fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerCreate(JNIEnv *_env, jobject _this) 124902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 125002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1251bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1252bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsSamplerCreate(con); 125302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 125402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1255bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1256bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1257bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1258bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightBegin(JNIEnv *_env, jobject _this) 1259bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1260bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1261bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightBegin, con(%p)", con); 1262bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightBegin(con); 1263bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1264bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1265bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1266bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetIsMono(JNIEnv *_env, jobject _this, jboolean isMono) 1267bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1268bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1269bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetIsMono, con(%p), isMono(%i)", con, isMono); 1270bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetMonochromatic(con, isMono); 1271bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1272bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1273bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1274bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetIsLocal(JNIEnv *_env, jobject _this, jboolean isLocal) 1275bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1276bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1277bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetIsLocal, con(%p), isLocal(%i)", con, isLocal); 1278bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetLocal(con, isLocal); 1279bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1280bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1281bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic jint 1282bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightCreate(JNIEnv *_env, jobject _this) 1283bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1284bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1285bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightCreate, con(%p)", con); 1286bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsLightCreate(con); 1287bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1288bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1289bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1290bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetColor(JNIEnv *_env, jobject _this, jint light, float r, float g, float b) 1291bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1292bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1293bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetColor, con(%p), light(%p), r(%f), g(%f), b(%f)", con, (RsLight)light, r, g, b); 1294bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetColor(con, (RsLight)light, r, g, b); 1295bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1296bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1297bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1298bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetPosition(JNIEnv *_env, jobject _this, jint light, float x, float y, float z) 1299bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1300bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1301bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetPosition, con(%p), light(%p), x(%f), y(%f), z(%f)", con, (RsLight)light, x, y, z); 1302bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetPosition(con, (RsLight)light, x, y, z); 1303bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1304d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1305d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1306d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 13071bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 13081bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshCreate(JNIEnv *_env, jobject _this, jint batchID, jint indexID, jintArray vtxIDs, jint primID) 13091bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 13101bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 13111bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams jint len = _env->GetArrayLength(vtxIDs); 13121bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshCreate, con(%p), batchID(%i), indexID(%i), vtxIDs.len(%i), primID(%i)", 13131bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams con, batchID, indexID, len, primID); 13141bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams jint *ptr = _env->GetIntArrayElements(vtxIDs, NULL); 1315bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams int id = (int)rsSimpleMeshCreate(con, (void *)batchID, (void *)indexID, (void **)ptr, len, primID); 13161bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams _env->ReleaseIntArrayElements(vtxIDs, ptr, 0/*JNI_ABORT*/); 13171bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams return id; 13181bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 13191bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 13201bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic void 13211bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshBindVertex(JNIEnv *_env, jobject _this, jint s, jint alloc, jint slot) 13221bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 13231bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 13241bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshBindVertex, con(%p), SimpleMesh(%p), Alloc(%p), slot(%i)", con, (RsSimpleMesh)s, (RsAllocation)alloc, slot); 1325bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSimpleMeshBindVertex(con, (RsSimpleMesh)s, (RsAllocation)alloc, slot); 13261bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 13271bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 13281bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic void 13291bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshBindIndex(JNIEnv *_env, jobject _this, jint s, jint alloc) 13301bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 13311bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 13321bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshBindIndex, con(%p), SimpleMesh(%p), Alloc(%p)", con, (RsSimpleMesh)s, (RsAllocation)alloc); 1333bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSimpleMeshBindIndex(con, (RsSimpleMesh)s, (RsAllocation)alloc); 13341bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 13351bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 13361bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams// --------------------------------------------------------------------------- 13371bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 1338d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 133994d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1340d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1341d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 1342d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"_nInit", "()V", (void*)_nInit }, 1343ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams{"nInitElements", "(IIII)V", (void*)nInitElements }, 1344ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 1345d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 1346d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 1347ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 1348b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams{"nContextCreate", "(ILandroid/view/Surface;IZ)I", (void*)nContextCreate }, 1349efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{"nContextSetSurface", "(Landroid/view/Surface;)V", (void*)nContextSetSurface }, 1350d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextDestroy", "(I)V", (void*)nContextDestroy }, 135165e7aa56f56097418d617663683544c25b3988eaJason Sams{"nContextPause", "()V", (void*)nContextPause }, 135265e7aa56f56097418d617663683544c25b3988eaJason Sams{"nContextResume", "()V", (void*)nContextResume }, 13533eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{"nAssignName", "(I[B)V", (void*)nAssignName }, 13547ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{"nObjDestroy", "(I)V", (void*)nObjDestroy }, 1355730ee65d4ddb307898053b623120bad1655fadadJason Sams{"nObjDestroyOOB", "(I)V", (void*)nObjDestroyOOB }, 1356516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{"nContextGetMessage", "([IZ)I", (void*)nContextGetMessage }, 1357516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{"nContextInitToClient", "()V", (void*)nContextInitToClient }, 1358516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{"nContextDeinitToClient", "()V", (void*)nContextDeinitToClient }, 1359d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 136064676f3c21a07d650069315572811570cbf8f728Jason Sams{"nFileOpen", "([B)I", (void*)nFileOpen }, 136164676f3c21a07d650069315572811570cbf8f728Jason Sams 1362d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nElementBegin", "()V", (void*)nElementBegin }, 1363768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams{"nElementAdd", "(IIZILjava/lang/String;)V", (void*)nElementAdd }, 1364d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nElementCreate", "()I", (void*)nElementCreate }, 1365d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1366d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeBegin", "(I)V", (void*)nTypeBegin }, 1367d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeAdd", "(II)V", (void*)nTypeAdd }, 1368d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeCreate", "()I", (void*)nTypeCreate }, 136943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nTypeFinalDestroy", "(Landroid/renderscript/Type;)V", (void*)nTypeFinalDestroy }, 137043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nTypeSetupFields", "(Landroid/renderscript/Type;[I[I[Ljava/lang/reflect/Field;)V", (void*)nTypeSetupFields }, 1371d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1372d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationCreateTyped", "(I)I", (void*)nAllocationCreateTyped }, 1373ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{"nAllocationCreateFromBitmap", "(IZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap }, 137407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationCreateFromBitmapBoxed","(IZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmapBoxed }, 1375650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{"nAllocationCreateFromAssetStream","(IZI)I", (void*)nAllocationCreateFromAssetStream }, 1376d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationUploadToTexture", "(II)V", (void*)nAllocationUploadToTexture }, 137707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationUploadToBufferObject","(I)V", (void*)nAllocationUploadToBufferObject }, 137807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData1D", "(III[II)V", (void*)nAllocationSubData1D_i }, 1379768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams{"nAllocationSubData1D", "(III[SI)V", (void*)nAllocationSubData1D_s }, 1380768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams{"nAllocationSubData1D", "(III[BI)V", (void*)nAllocationSubData1D_b }, 138107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData1D", "(III[FI)V", (void*)nAllocationSubData1D_f }, 138207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData2D", "(IIIII[II)V", (void*)nAllocationSubData2D_i }, 138307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData2D", "(IIIII[FI)V", (void*)nAllocationSubData2D_f }, 138440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{"nAllocationRead", "(I[I)V", (void*)nAllocationRead_i }, 138540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{"nAllocationRead", "(I[F)V", (void*)nAllocationRead_f }, 13862525a815220652b37e2e390fe8c62394a6d0e574Jason Sams{"nAllocationSubDataFromObject", "(ILandroid/renderscript/Type;ILjava/lang/Object;)V", (void*)nAllocationSubDataFromObject }, 13875f43fd289abbd5380b6068766daf721b555d0053Jason Sams{"nAllocationSubReadFromObject", "(ILandroid/renderscript/Type;ILjava/lang/Object;)V", (void*)nAllocationSubReadFromObject }, 1388d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1389d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DBindAllocation", "(II)V", (void*)nAdapter1DBindAllocation }, 1390d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DSetConstraint", "(III)V", (void*)nAdapter1DSetConstraint }, 1391d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DData", "(I[I)V", (void*)nAdapter1DData_i }, 1392d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DData", "(I[F)V", (void*)nAdapter1DData_f }, 1393bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter1DSubData", "(III[I)V", (void*)nAdapter1DSubData_i }, 1394d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DSubData", "(III[F)V", (void*)nAdapter1DSubData_f }, 1395d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DCreate", "()I", (void*)nAdapter1DCreate }, 1396d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1397bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DBindAllocation", "(II)V", (void*)nAdapter2DBindAllocation }, 1398bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSetConstraint", "(III)V", (void*)nAdapter2DSetConstraint }, 1399bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DData", "(I[I)V", (void*)nAdapter2DData_i }, 1400bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DData", "(I[F)V", (void*)nAdapter2DData_f }, 1401bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSubData", "(IIIII[I)V", (void*)nAdapter2DSubData_i }, 1402bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSubData", "(IIIII[F)V", (void*)nAdapter2DSubData_f }, 1403bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DCreate", "()I", (void*)nAdapter2DCreate }, 1404bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 1405d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptBindAllocation", "(III)V", (void*)nScriptBindAllocation }, 140622534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearColor", "(IFFFF)V", (void*)nScriptSetClearColor }, 140722534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearDepth", "(IF)V", (void*)nScriptSetClearDepth }, 140822534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearStencil", "(II)V", (void*)nScriptSetClearStencil }, 140922534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetTimeZone", "(I[B)V", (void*)nScriptSetTimeZone }, 1410334ea0c98f051b5a6b85bc616c93304651854298Jason Sams{"nScriptSetType", "(IZLjava/lang/String;I)V", (void*)nScriptSetType }, 1411fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams{"nScriptSetRoot", "(Z)V", (void*)nScriptSetRoot }, 1412be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{"nScriptSetInvokable", "(Ljava/lang/String;I)V", (void*)nScriptSetInvoke }, 1413be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{"nScriptInvoke", "(II)V", (void*)nScriptInvoke }, 141422534176fb5c1257130ef4ee589739ca42766a32Jason Sams 1415d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptCBegin", "()V", (void*)nScriptCBegin }, 141643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich{"nScriptCSetScript", "([BII)V", (void*)nScriptCSetScript }, 1417d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptCCreate", "()I", (void*)nScriptCCreate }, 1418d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{"nScriptCAddDefineI32", "(Ljava/lang/String;I)V", (void*)nScriptCAddDefineI32 }, 1419d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{"nScriptCAddDefineF", "(Ljava/lang/String;F)V", (void*)nScriptCAddDefineF }, 1420d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1421d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreBegin", "(II)V", (void*)nProgramFragmentStoreBegin }, 1422d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDepthFunc", "(I)V", (void*)nProgramFragmentStoreDepthFunc }, 1423d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDepthMask", "(Z)V", (void*)nProgramFragmentStoreDepthMask }, 1424d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreColorMask", "(ZZZZ)V", (void*)nProgramFragmentStoreColorMask }, 1425d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreBlendFunc", "(II)V", (void*)nProgramFragmentStoreBlendFunc }, 1426d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDither", "(Z)V", (void*)nProgramFragmentStoreDither }, 1427d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreCreate", "()I", (void*)nProgramFragmentStoreCreate }, 1428d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 142925ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams{"nProgramFragmentBegin", "(IIZ)V", (void*)nProgramFragmentBegin }, 1430d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentBindTexture", "(III)V", (void*)nProgramFragmentBindTexture }, 1431d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentBindSampler", "(III)V", (void*)nProgramFragmentBindSampler }, 143225ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams{"nProgramFragmentSetSlot", "(IZII)V", (void*)nProgramFragmentSetSlot }, 1433d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentCreate", "()I", (void*)nProgramFragmentCreate }, 1434d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1435ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nProgramRasterCreate", "(IIZZZ)I", (void*)nProgramRasterCreate }, 1436ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nProgramRasterSetPointSize", "(IF)V", (void*)nProgramRasterSetPointSize }, 1437ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nProgramRasterSetLineWidth", "(IF)V", (void*)nProgramRasterSetLineWidth }, 1438ebfb436a49673693b98469683451bd9ede797557Jason Sams 14399bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason Sams{"nProgramVertexBindAllocation", "(II)V", (void*)nProgramVertexBindAllocation }, 14401fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{"nProgramVertexBegin", "(II)V", (void*)nProgramVertexBegin }, 14411fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{"nProgramVertexSetTextureMatrixEnable", "(Z)V", (void*)nProgramVertexSetTextureMatrixEnable }, 1442ee41112e1539de95596600fd2c6dada5d275217fJason Sams{"nProgramVertexAddLight", "(I)V", (void*)nProgramVertexAddLight }, 14431fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{"nProgramVertexCreate", "()I", (void*)nProgramVertexCreate }, 14441fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1445bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightBegin", "()V", (void*)nLightBegin }, 1446bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetIsMono", "(Z)V", (void*)nLightSetIsMono }, 1447bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetIsLocal", "(Z)V", (void*)nLightSetIsLocal }, 1448bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightCreate", "()I", (void*)nLightCreate }, 1449bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetColor", "(IFFF)V", (void*)nLightSetColor }, 1450bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetPosition", "(IFFF)V", (void*)nLightSetPosition }, 1451bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1452d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindRootScript", "(I)V", (void*)nContextBindRootScript }, 1453d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindProgramFragmentStore","(I)V", (void*)nContextBindProgramFragmentStore }, 1454d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindProgramFragment", "(I)V", (void*)nContextBindProgramFragment }, 14550826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{"nContextBindProgramVertex", "(I)V", (void*)nContextBindProgramVertex }, 1456ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nContextBindProgramRaster", "(I)V", (void*)nContextBindProgramRaster }, 1457d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 145802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerBegin", "()V", (void*)nSamplerBegin }, 145902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerSet", "(II)V", (void*)nSamplerSet }, 146002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerCreate", "()I", (void*)nSamplerCreate }, 146102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 14621bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshCreate", "(II[II)I", (void*)nSimpleMeshCreate }, 14631bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshBindVertex", "(III)V", (void*)nSimpleMeshBindVertex }, 14641bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshBindIndex", "(II)V", (void*)nSimpleMeshBindIndex }, 14651bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 1466d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1467d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1468d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1469d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1470d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1471d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1472d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1473d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1474d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1475d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1476d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1477d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1478d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1479d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1480d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1481d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1482d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1483d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1484d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1485d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1486d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1487d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1488d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1489d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1490d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1491d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1492d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1493d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1494d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1495d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1496d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1497d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1498