android_renderscript_RenderScript.cpp revision 5f43fd289abbd5380b6068766daf721b555d0053
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 146d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 147b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason SamsnContextCreate(JNIEnv *_env, jobject _this, jint dev, jobject wnd, jint ver, jboolean useDepth) 148d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 149d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 150d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 151d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (wnd == NULL) { 152d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams not_valid_surface: 153d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams doThrow(_env, "java/lang/IllegalArgumentException", 154d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams "Make sure the SurfaceView or associated SurfaceHolder has a valid Surface"); 155d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return 0; 156d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 157d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jclass surface_class = _env->FindClass("android/view/Surface"); 158d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfieldID surfaceFieldID = _env->GetFieldID(surface_class, "mSurface", "I"); 159d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams Surface * window = (Surface*)_env->GetIntField(wnd, surfaceFieldID); 160d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (window == NULL) 161d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto not_valid_surface; 162d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 163b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams return (jint)rsContextCreate((RsDevice)dev, window, ver, useDepth); 164d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 165d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 166d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 167d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextDestroy(JNIEnv *_env, jobject _this, jint con) 168d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 169d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextDestroy, con(%p)", (RsContext)con); 170d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsContextDestroy((RsContext)con); 171d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 172d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 173d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 174d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 175d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnElementBegin(JNIEnv *_env, jobject _this) 176d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 177d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 178d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementBegin, con(%p)", con); 179bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsElementBegin(con); 180d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 181d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 182d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 183d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 18443ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnElementAdd(JNIEnv *_env, jobject _this, jint kind, jint type, jint norm, jint bits, jstring name) 185d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 186d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 18743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const char* n = NULL; 18843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams if (name) { 18943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams n = _env->GetStringUTFChars(name, NULL); 19043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 191d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementAdd, con(%p), kind(%i), type(%i), norm(%i), bits(%i)", con, kind, type, norm, bits); 192bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsElementAdd(con, (RsDataKind)kind, (RsDataType)type, norm != 0, (size_t)bits, n); 19343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams if (n) { 19443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseStringUTFChars(name, n); 19543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 196d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 197d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 198d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 199d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnElementCreate(JNIEnv *_env, jobject _this) 200d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 201d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 202d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementCreate, con(%p)", con); 203bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsElementCreate(con); 204d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 205d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 206d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 207d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 208d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 209d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeBegin(JNIEnv *_env, jobject _this, jint eID) 210d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 211d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 212d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeBegin, con(%p) e(%p)", con, (RsElement)eID); 213bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeBegin(con, (RsElement)eID); 214d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 215d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 216d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 217d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeAdd(JNIEnv *_env, jobject _this, jint dim, jint val) 218d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 219d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 220d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeAdd, con(%p) dim(%i), val(%i)", con, dim, val); 221bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeAdd(con, (RsDimension)dim, val); 222d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 223d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 224d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 225d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeCreate(JNIEnv *_env, jobject _this) 226d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 227d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 228d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeCreate, con(%p)", con); 229bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsTypeCreate(con); 230d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 231d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 23243ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadInt(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 23343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 23443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int32_t *)buffer)[0] = _env->GetIntField(_obj, _field); 23543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 4; 23643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 23743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 23843ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadShort(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 23943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 24043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int16_t *)buffer)[0] = _env->GetShortField(_obj, _field); 24143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 2; 24243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 24343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 24443ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadByte(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 24543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 24643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int8_t *)buffer)[0] = _env->GetByteField(_obj, _field); 24743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 1; 24843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 24943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 25043ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadFloat(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 25143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 25243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((float *)buffer)[0] = _env->GetFloatField(_obj, _field); 25343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 4; 25443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 25543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 2565f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveInt(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 2575f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 2585f43fd289abbd5380b6068766daf721b555d0053Jason Sams LOGE("Save Int"); 2595f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetIntField(_obj, _field, ((int32_t *)buffer)[0]); 2605f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 4; 2615f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 2625f43fd289abbd5380b6068766daf721b555d0053Jason Sams 2635f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveShort(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 2645f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 2655f43fd289abbd5380b6068766daf721b555d0053Jason Sams LOGE("Save Short"); 2665f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetShortField(_obj, _field, ((int16_t *)buffer)[0]); 2675f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 2; 2685f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 2695f43fd289abbd5380b6068766daf721b555d0053Jason Sams 2705f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveByte(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 2715f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 2725f43fd289abbd5380b6068766daf721b555d0053Jason Sams LOGE("Save Byte"); 2735f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetByteField(_obj, _field, ((int8_t *)buffer)[0]); 2745f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 1; 2755f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 2765f43fd289abbd5380b6068766daf721b555d0053Jason Sams 2775f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void * SF_SaveFloat(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 2785f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 2795f43fd289abbd5380b6068766daf721b555d0053Jason Sams LOGE("Save Float"); 2805f43fd289abbd5380b6068766daf721b555d0053Jason Sams _env->SetFloatField(_obj, _field, ((float *)buffer)[0]); 2815f43fd289abbd5380b6068766daf721b555d0053Jason Sams return ((uint8_t *)buffer) + 4; 2825f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 2835f43fd289abbd5380b6068766daf721b555d0053Jason Sams 28443ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstruct TypeFieldCache { 28543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jfieldID field; 28643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int bits; 28743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * (*ptr)(JNIEnv *, jobject, jfieldID, void *buffer); 2885f43fd289abbd5380b6068766daf721b555d0053Jason Sams void * (*readPtr)(JNIEnv *, jobject, jfieldID, void *buffer); 28943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams}; 29043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 29143ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstruct TypeCache { 29243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int fieldCount; 29343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int size; 29443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeFieldCache fields[1]; 29543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams}; 29643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 29743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams//{"nTypeFinalDestroy", "(Landroid/renderscript/Type;)V", (void*)nTypeFinalDestroy }, 29843ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 29943ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnTypeFinalDestroy(JNIEnv *_env, jobject _this, jobject _type) 30043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 30143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 30243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams free(tc); 30343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 30443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 30543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams// native void nTypeSetupFields(Type t, int[] types, int[] bits, Field[] IDs); 30643ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 30743ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnTypeSetupFields(JNIEnv *_env, jobject _this, jobject _type, jintArray _types, jintArray _bits, jobjectArray _IDs) 30843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 30943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int fieldCount = _env->GetArrayLength(_types); 31043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams size_t structSize = sizeof(TypeCache) + (sizeof(TypeFieldCache) * (fieldCount-1)); 31143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeCache *tc = (TypeCache *)malloc(structSize); 31243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams memset(tc, 0, structSize); 31343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 31443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeFieldCache *tfc = &tc->fields[0]; 31543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tc->fieldCount = fieldCount; 31643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->SetIntField(_type, gTypeNativeCache, (jint)tc); 31743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 31843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jint *fType = _env->GetIntArrayElements(_types, NULL); 31943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jint *fBits = _env->GetIntArrayElements(_bits, NULL); 32043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams for (int ct=0; ct < fieldCount; ct++) { 32143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jobject field = _env->GetObjectArrayElement(_IDs, ct); 32243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].field = _env->FromReflectedField(field); 32343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].bits = fBits[ct]; 32443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 32543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams switch(fType[ct]) { 32643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case RS_TYPE_FLOAT: 32743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].ptr = SF_LoadFloat; 3285f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].readPtr = SF_SaveFloat; 32943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams break; 33043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case RS_TYPE_UNSIGNED: 33143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case RS_TYPE_SIGNED: 33243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams switch(tfc[ct].bits) { 3335f43fd289abbd5380b6068766daf721b555d0053Jason Sams case 32: 3345f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].ptr = SF_LoadInt; 3355f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].readPtr = SF_SaveInt; 3365f43fd289abbd5380b6068766daf721b555d0053Jason Sams break; 3375f43fd289abbd5380b6068766daf721b555d0053Jason Sams case 16: 3385f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].ptr = SF_LoadShort; 3395f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].readPtr = SF_SaveShort; 3405f43fd289abbd5380b6068766daf721b555d0053Jason Sams break; 3415f43fd289abbd5380b6068766daf721b555d0053Jason Sams case 8: 3425f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].ptr = SF_LoadByte; 3435f43fd289abbd5380b6068766daf721b555d0053Jason Sams tfc[ct].readPtr = SF_SaveByte; 3445f43fd289abbd5380b6068766daf721b555d0053Jason Sams break; 34543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 34643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams break; 34743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 34843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tc->size += 4; 34943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 35043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 35143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseIntArrayElements(_types, fType, JNI_ABORT); 35243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseIntArrayElements(_bits, fBits, JNI_ABORT); 35343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 35443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 35543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 356d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 357d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 358d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 359d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, jint e) 360d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 361d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 362d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationCreateTyped, con(%p), e(%p)", con, (RsElement)e); 363bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsAllocationCreateTyped(con, (RsElement)e); 364d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 365d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 366d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 367d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationCreateSized(JNIEnv *_env, jobject _this, jint e, jint count) 368d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 369d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 370d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationCreateSized, con(%p), e(%p), count(%i)", con, (RsElement)e, count); 371bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsAllocationCreateSized(con, (RsElement)e, count); 372d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 373d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 374d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 375d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationUploadToTexture(JNIEnv *_env, jobject _this, jint a, jint mip) 376d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 377d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 378d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationUploadToTexture, con(%p), a(%p), mip(%i)", con, (RsAllocation)a, mip); 379bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationUploadToTexture(con, (RsAllocation)a, mip); 380d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 381d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 38207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Samsstatic void 38307ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationUploadToBufferObject(JNIEnv *_env, jobject _this, jint a) 38407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{ 38507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 38607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAllocationUploadToBufferObject, con(%p), a(%p)", con, (RsAllocation)a); 38707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocationUploadToBufferObject(con, (RsAllocation)a); 38807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams} 38907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 390ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement SkBitmapToPredefined(SkBitmap::Config cfg) 391ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{ 392ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams switch (cfg) { 393ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kA8_Config: 394ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_A_8; 395ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_4444_Config: 396ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_4444; 397ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_8888_Config: 398ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_8888; 399ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kRGB_565_Config: 400ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGB_565; 401ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 402ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams default: 403ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams break; 404ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 405ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams // If we don't have a conversion mark it as a user type. 406ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams LOGE("Unsupported bitmap type"); 407ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return NULL; 408ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 409ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 410fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 411ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap) 412fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 413fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 414ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 415ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 416ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 417ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap::Config config = bitmap.getConfig(); 418fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 419ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 420ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 421ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.lockPixels(); 422ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int w = bitmap.width(); 423ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int h = bitmap.height(); 424ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const void* ptr = bitmap.getPixels(); 425ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 426ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.unlockPixels(); 427ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return id; 428ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 429ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return 0; 430ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 431fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 432b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Samsstatic int 433650a3eb7d621dc8e81573142a4498bbd07bcde27Romain GuynAllocationCreateFromAssetStream(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jint native_asset) 434650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 435650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 436650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 437650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy Asset* asset = reinterpret_cast<Asset*>(native_asset); 438650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap bitmap; 439650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkImageDecoder::DecodeMemory(asset->getBuffer(false), asset->getLength(), 440650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy &bitmap, SkBitmap::kNo_Config, SkImageDecoder::kDecodePixels_Mode); 441650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 442650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap::Config config = bitmap.getConfig(); 443650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 444ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 445650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 446ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 447650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.lockPixels(); 448650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int w = bitmap.width(); 449650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int h = bitmap.height(); 450650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const void* ptr = bitmap.getPixels(); 451ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 452650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.unlockPixels(); 453650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return id; 454650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } 455650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return 0; 456650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 457650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 458650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guystatic int 459b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason SamsnAllocationCreateFromBitmapBoxed(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap) 460b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams{ 461b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 462b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap const * nativeBitmap = 463b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 464b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const SkBitmap& bitmap(*nativeBitmap); 465b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap::Config config = bitmap.getConfig(); 466b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 467ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 468b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 469ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 470b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.lockPixels(); 471b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int w = bitmap.width(); 472b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int h = bitmap.height(); 473b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const void* ptr = bitmap.getPixels(); 474ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmapBoxed(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 475b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.unlockPixels(); 476b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return id; 477b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams } 478b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return 0; 479b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams} 480b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 481fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 482d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 48307ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationData_i(JNIEnv *_env, jobject _this, jint alloc, jintArray data, int sizeBytes) 484d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 485d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 486d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 487d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationData_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 488d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 48907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocationData(con, (RsAllocation)alloc, ptr, sizeBytes); 490d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 491d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 492d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 493d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 49407ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationData_f(JNIEnv *_env, jobject _this, jint alloc, jfloatArray data, int sizeBytes) 495d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 496d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 497d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 498d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationData_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 499d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 50007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocationData(con, (RsAllocation)alloc, ptr, sizeBytes); 501d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 502d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 503d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 504d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 50507ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData1D_i(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jintArray data, int sizeBytes) 506d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 507d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 508d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 509d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocation1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAllocation)alloc, offset, count, len); 510d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 51107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 512d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 513d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 514d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 515d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 51607ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData1D_f(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jfloatArray data, int sizeBytes) 517d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 518d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 519d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 520d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocation1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAllocation)alloc, offset, count, len); 521d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 52207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 523d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 524d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 525d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 526d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 52707ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData2D_i(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data, int sizeBytes) 528d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 529d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 530d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 531d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 532d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 53307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 534d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 535d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 536d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 537d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 53807ae40623737a6060b8a925fd2e6bba76780dcd4Jason SamsnAllocationSubData2D_f(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data, int sizeBytes) 539d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 540d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 541d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 542d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 543d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 54407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 545d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 546d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 547d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 54840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 54940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, jint alloc, jintArray data) 55040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 55140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 55240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 55340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 55440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 555bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 556ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 55740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 55840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 55940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 56040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, jint alloc, jfloatArray data) 56140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 56240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 56340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 564a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 56540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 566bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 567ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 56840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 569d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 570d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 57143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams//{"nAllocationDataFromObject", "(ILandroid/renderscript/Type;Ljava/lang/Object;)V", (void*)nAllocationDataFromObject }, 57243ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 5732525a815220652b37e2e390fe8c62394a6d0e574Jason SamsnAllocationSubDataFromObject(JNIEnv *_env, jobject _this, jint alloc, jobject _type, jint offset, jobject _o) 57443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 57543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 57643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams LOG_API("nAllocationDataFromObject con(%p), alloc(%p)", con, (RsAllocation)alloc); 57743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 57843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 57943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 58043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * bufAlloc = malloc(tc->size); 58143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * buf = bufAlloc; 58243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams for (int ct=0; ct < tc->fieldCount; ct++) { 58343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const TypeFieldCache *tfc = &tc->fields[ct]; 58443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams buf = tfc->ptr(_env, _o, tfc->field, buf); 58543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 5862525a815220652b37e2e390fe8c62394a6d0e574Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, 1, bufAlloc, tc->size); 5875f43fd289abbd5380b6068766daf721b555d0053Jason Sams free(bufAlloc); 5885f43fd289abbd5380b6068766daf721b555d0053Jason Sams} 5895f43fd289abbd5380b6068766daf721b555d0053Jason Sams 5905f43fd289abbd5380b6068766daf721b555d0053Jason Samsstatic void 5915f43fd289abbd5380b6068766daf721b555d0053Jason SamsnAllocationSubReadFromObject(JNIEnv *_env, jobject _this, jint alloc, jobject _type, jint offset, jobject _o) 5925f43fd289abbd5380b6068766daf721b555d0053Jason Sams{ 5935f43fd289abbd5380b6068766daf721b555d0053Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 5945f43fd289abbd5380b6068766daf721b555d0053Jason Sams LOG_API("nAllocationReadFromObject con(%p), alloc(%p)", con, (RsAllocation)alloc); 5955f43fd289abbd5380b6068766daf721b555d0053Jason Sams 5965f43fd289abbd5380b6068766daf721b555d0053Jason Sams assert(offset == 0); 5975f43fd289abbd5380b6068766daf721b555d0053Jason Sams 5985f43fd289abbd5380b6068766daf721b555d0053Jason Sams const TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 5995f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6005f43fd289abbd5380b6068766daf721b555d0053Jason Sams void * bufAlloc = malloc(tc->size); 6015f43fd289abbd5380b6068766daf721b555d0053Jason Sams void * buf = bufAlloc; 6025f43fd289abbd5380b6068766daf721b555d0053Jason Sams rsAllocationRead(con, (RsAllocation)alloc, bufAlloc); 6035f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6045f43fd289abbd5380b6068766daf721b555d0053Jason Sams LOGE("size %i, ", tc->size); 6055f43fd289abbd5380b6068766daf721b555d0053Jason Sams 6065f43fd289abbd5380b6068766daf721b555d0053Jason Sams for (int ct=0; ct < tc->fieldCount; ct++) { 6075f43fd289abbd5380b6068766daf721b555d0053Jason Sams const TypeFieldCache *tfc = &tc->fields[ct]; 6085f43fd289abbd5380b6068766daf721b555d0053Jason Sams LOGE("ct=%i, buf=%p", ct, buf); 6095f43fd289abbd5380b6068766daf721b555d0053Jason Sams buf = tfc->readPtr(_env, _o, tfc->field, buf); 6105f43fd289abbd5380b6068766daf721b555d0053Jason Sams } 61143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams free(bufAlloc); 61243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 61343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 614d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 615d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 616d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 617d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshBegin(JNIEnv *_env, jobject _this, jint v, jint i) 618d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 619d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 620d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshBegin, con(%p), vertex(%p), index(%p)", con, (RsElement)v, (RsElement)i); 621bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshBegin(con, (RsElement)v, (RsElement)i); 622d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 623d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 624d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 625d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddVertex_XY(JNIEnv *_env, jobject _this, jfloat x, jfloat y) 626d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 627d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams float v[] = {x, y}; 628d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 629d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddVertex_XY, con(%p), x(%f), y(%f)", con, x, y); 630bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 631d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 632d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 633d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 634d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddVertex_XYZ(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) 635d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 636d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams float v[] = {x, y, z}; 637d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 638d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddVertex_XYZ, con(%p), x(%f), y(%f), z(%f)", con, x, y, z); 639bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 640d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 641d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 642d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 643d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddVertex_XY_ST(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat s, jfloat t) 644d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 645d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams float v[] = {s, t, x, y}; 646d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 647d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddVertex_XY_ST, con(%p), x(%f), y(%f), s(%f), t(%f)", con, x, y, s, t); 648bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 649d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 650d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 651d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 652d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddVertex_XYZ_ST(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z, jfloat s, jfloat t) 653d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 654d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams float v[] = {s, t, x, y, z}; 655d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 656d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddVertex_XYZ_ST, con(%p), x(%f), y(%f), z(%f), s(%f), t(%f)", con, x, y, z, s, t); 657bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 658d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 659d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 660d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6610826a6f90f049bf94fc39fb23ad3a736a14b96ebJason SamsnTriangleMeshAddVertex_XYZ_ST_NORM(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z, jfloat s, jfloat t, jfloat nx, jfloat ny, jfloat nz) 6620826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 6630826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams float v[] = {nx, ny, nz, s, t, x, y, z}; 6640826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 6650826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nTriangleMeshAddVertex_XYZ_ST, con(%p), x(%f), y(%f), z(%f), s(%f), t(%f)", con, x, y, z, s, t); 666bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 6670826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 6680826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 6690826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 670d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddTriangle(JNIEnv *_env, jobject _this, jint i1, jint i2, jint i3) 671d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 672d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 673d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddTriangle, con(%p), i1(%i), i2(%i), i3(%i)", con, i1, i2, i3); 674bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddTriangle(con, i1, i2, i3); 675d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 676d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 677d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 678d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshCreate(JNIEnv *_env, jobject _this) 679d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 680d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 681d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshCreate, con(%p)", con); 682bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsTriangleMeshCreate(con); 683d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 684d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 685d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 686d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 687d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 688d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) 689d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 690d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 691d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter1D)adapter, (RsAllocation)alloc); 692bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DBindAllocation(con, (RsAdapter1D)adapter, (RsAllocation)alloc); 693d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 694d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 695d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 696d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) 697d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 698d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 699d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter1D)adapter, dim, value); 700bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSetConstraint(con, (RsAdapter1D)adapter, (RsDimension)dim, value); 701d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 702d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 703d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 704d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) 705d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 706d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 707d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 708d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 709d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 710bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 711d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 712d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 713d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 714d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 715d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jintArray data) 716d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 717d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 718d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 719d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 720d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 721bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 722d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 723d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 724d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 725d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 726d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) 727d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 728d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 729d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 730d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 731d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 732bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 733d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 734d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 735d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 736d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 737d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jfloatArray data) 738d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 739d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 740d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 741d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 742d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 743bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 744d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 745d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 746d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 747d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 748d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DCreate(JNIEnv *_env, jobject _this) 749d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 750d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 751d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DCreate, con(%p)", con); 752bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter1DCreate(con); 753d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 754d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 755d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 756d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 757d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 758bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) 759bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 760bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 761bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter2D)adapter, (RsAllocation)alloc); 762bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DBindAllocation(con, (RsAdapter2D)adapter, (RsAllocation)alloc); 763bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 764bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 765bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 766bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) 767bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 768bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 769bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter2D)adapter, dim, value); 770bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSetConstraint(con, (RsAdapter2D)adapter, (RsDimension)dim, value); 771bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 772bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 773bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 774bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) 775bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 776bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 777bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 778bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 779bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 780bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 781bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 782bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 783bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 784bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 785bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) 786bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 787bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 788bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 789bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 790bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 791bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 792bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 793bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 794bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 795bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 796bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jintArray data) 797bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 798bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 799bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 800bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 801bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 802bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 803bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter2D)adapter, xoff, yoff, w, h, ptr); 804bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 805bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 806bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 807bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 808bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jfloatArray data) 809bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 810bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 811bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 812bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_f, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 813bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 814bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 815bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter1D)adapter, xoff, yoff, w, h, ptr); 816bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 817bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 818bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 819bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic jint 820bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DCreate(JNIEnv *_env, jobject _this) 821bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 822bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 823bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DCreate, con(%p)", con); 824bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter2DCreate(con); 825bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 826bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 827bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 828bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 829bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 830d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, jint script, jint alloc, jint slot) 831d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 832d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 833d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 834bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 835d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 836d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 837d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 83822534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearColor(JNIEnv *_env, jobject _this, jint script, jfloat r, jfloat g, jfloat b, jfloat a) 839d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 840d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 84107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptSetClearColor, con(%p), s(%p), r(%f), g(%f), b(%f), a(%f)", con, (void *)script, r, g, b, a); 842bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearColor(con, (RsScript)script, r, g, b, a); 843d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 844d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 845d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 84622534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearDepth(JNIEnv *_env, jobject _this, jint script, jfloat d) 847d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 848d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 84907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetClearDepth, con(%p), s(%p), depth(%f)", con, (void *)script, d); 850bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearDepth(con, (RsScript)script, d); 851d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 852d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 853d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 85422534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearStencil(JNIEnv *_env, jobject _this, jint script, jint stencil) 855d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 856d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 85707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetClearStencil, con(%p), s(%p), stencil(%i)", con, (void *)script, stencil); 858bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearStencil(con, (RsScript)script, stencil); 859d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 860d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 861d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 86222534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, jint script, jbyteArray timeZone) 863584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 864584a375df68ed7d62b38389078c6804edf228f9cRomain Guy RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 86507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 866584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 867584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 868584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 869584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 870584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 871bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 872584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 873584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 874584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 875584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 876584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 877584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 87822534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 879334ea0c98f051b5a6b85bc616c93304651854298Jason SamsnScriptSetType(JNIEnv *_env, jobject _this, jint type, jboolean writable, jstring _str, jint slot) 88022534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 88122534176fb5c1257130ef4ee589739ca42766a32Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 882334ea0c98f051b5a6b85bc616c93304651854298Jason Sams LOG_API("nScriptCAddType, con(%p), type(%p), writable(%i), slot(%i)", con, (RsType)type, writable, slot); 883fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams const char* n = NULL; 884fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams if (_str) { 885fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams n = _env->GetStringUTFChars(_str, NULL); 886fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams } 887bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetType(con, (RsType)type, slot, writable, n); 888fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams if (n) { 889fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams _env->ReleaseStringUTFChars(_str, n); 890fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams } 89122534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 89222534176fb5c1257130ef4ee589739ca42766a32Jason Sams 893584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 894fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason SamsnScriptSetRoot(JNIEnv *_env, jobject _this, jboolean isRoot) 895d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 896d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 897fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCSetRoot, con(%p), isRoot(%i)", con, isRoot); 898bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetRoot(con, isRoot); 899d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 900d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 901fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 902fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 903d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 904fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason SamsnScriptCBegin(JNIEnv *_env, jobject _this) 905d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 906d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 907fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCBegin, con(%p)", con); 908bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCBegin(con); 909d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 910d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 911d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 91243702d8925c54360ad5f9f66b0d35d61d59f6910Jack PalevichnScriptCSetScript(JNIEnv *_env, jobject _this, jbyteArray scriptRef, 91343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint offset, jint length) 914d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 915d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 916d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("!!! nScriptCSetScript, con(%p)", con); 91743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 91843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 91943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_base = 0; 92043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_ptr; 92143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 92243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 92343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "script == null"); 92443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 92543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 92643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (offset < 0) { 92743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 92843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "offset < 0"); 92943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 93043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 93143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 93243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 93343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length < 0"); 93443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 93543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 93643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich remaining = _env->GetArrayLength(scriptRef) - offset; 93743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 93843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 93943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length > script.length - offset"); 94043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 94143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 94243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_base = (jbyte *) 94343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 94443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_ptr = script_base + offset; 94543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 946bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetText(con, (const char *)script_ptr, length); 94739ddc950c9064129ead5de04b200106c0659f937Jason Sams 94843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 94943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (script_base) { 95043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->ReleasePrimitiveArrayCritical(scriptRef, script_base, 95143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 95243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 953d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 954d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 955d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 956d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnScriptCCreate(JNIEnv *_env, jobject _this) 957d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 958d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 959d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 960bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsScriptCCreate(con); 961d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 962d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 963d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 964d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonScriptCAddDefineI32(JNIEnv *_env, jobject _this, jstring name, jint value) 965d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 966d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 967d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 968d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineI32, con(%p) name(%s) value(%d)", con, n, value); 969bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetDefineI32(con, n, value); 970d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 971d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 972d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 973d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 974d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonScriptCAddDefineF(JNIEnv *_env, jobject _this, jstring name, jfloat 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("nScriptCAddDefineF, con(%p) name(%s) value(%f)", con, n, value); 979bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetDefineF(con, n, value); 980d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 981d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 982d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 983d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 984d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 985d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 986d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreBegin(JNIEnv *_env, jobject _this, jint in, jint out) 987d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 988d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 989d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 990bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreBegin(con, (RsElement)in, (RsElement)out); 991d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 992d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 993d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 994d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDepthFunc(JNIEnv *_env, jobject _this, jint func) 995d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 996d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 997d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDepthFunc, con(%p), func(%i)", con, func); 998bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDepthFunc(con, (RsDepthFunc)func); 999d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1000d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1001d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1002d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDepthMask(JNIEnv *_env, jobject _this, jboolean enable) 1003d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1004d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1005d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDepthMask, con(%p), enable(%i)", con, enable); 1006bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDepthMask(con, enable); 1007d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1008d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1009d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1010d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreColorMask(JNIEnv *_env, jobject _this, jboolean r, jboolean g, jboolean b, jboolean a) 1011d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1012d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1013d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreColorMask, con(%p), r(%i), g(%i), b(%i), a(%i)", con, r, g, b, a); 1014bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreColorMask(con, r, g, b, a); 1015d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1016d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1017d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1018d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreBlendFunc(JNIEnv *_env, jobject _this, int src, int dst) 1019d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1020d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1021d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreBlendFunc, con(%p), src(%i), dst(%i)", con, src, dst); 1022bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreBlendFunc(con, (RsBlendSrcFunc)src, (RsBlendDstFunc)dst); 1023d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1024d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1025d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1026d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDither(JNIEnv *_env, jobject _this, jboolean enable) 1027d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1028d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1029d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDither, con(%p), enable(%i)", con, enable); 1030bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDither(con, enable); 1031d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1032d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1033d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 1034d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreCreate(JNIEnv *_env, jobject _this) 1035d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1036d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1037d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreCreate, con(%p)", con); 10383eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 1039bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramFragmentStoreCreate(con); 1040d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1041d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1042d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1043d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1044d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 104525ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason SamsnProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out, jboolean pointSpriteEnable) 1046d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1047d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 104825ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p) PointSprite(%i)", con, (RsElement)in, (RsElement)out, pointSpriteEnable); 104925ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out, pointSpriteEnable); 1050d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1051d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1052d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1053d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentBindTexture(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) 1054d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1055d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1056d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 1057bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 1058d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1059d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1060d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1061d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) 1062d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1063d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1064d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1065bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1066d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1067d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1068d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 106925ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason SamsnProgramFragmentSetSlot(JNIEnv *_env, jobject _this, jint slot, jboolean enable, jint env, jint vt) 1070d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1071d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 107225ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams LOG_API("nProgramFragmentSetType, con(%p), slot(%i), enable(%i), env(%i), vt(%p)", con, slot, enable, env, (RsType)vt); 107325ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams rsProgramFragmentSetSlot(con, slot, enable, (RsTexEnvMode)env, (RsType)vt); 1074d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1075d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1076d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 1077d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentCreate(JNIEnv *_env, jobject _this, jint slot, jboolean enable) 1078d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1079d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1080d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentCreate, con(%p)", con); 1081bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramFragmentCreate(con); 1082d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1083d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10841fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 10851fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10861fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic void 10871fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason SamsnProgramVertexBegin(JNIEnv *_env, jobject _this, jint in, jint out) 10881fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10891fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 10901fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 1091bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexBegin(con, (RsElement)in, (RsElement)out); 10921fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10931fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10941fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic void 10959bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason SamsnProgramVertexBindAllocation(JNIEnv *_env, jobject _this, jint vpv, jint a) 10961fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10971fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 109807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nProgramVertexBindAllocation, con(%p), vpf(%p), a(%p)", con, (RsProgramVertex)vpv, (RsAllocation)a); 1099bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexBindAllocation(con, (RsProgramFragment)vpv, (RsAllocation)a); 11001fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11011fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 11021fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic void 11031fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason SamsnProgramVertexSetTextureMatrixEnable(JNIEnv *_env, jobject _this, jboolean enable) 11041fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 11051fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11061fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexSetTextureMatrixEnable, con(%p), enable(%i)", con, enable); 1107bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexSetTextureMatrixEnable(con, enable); 11081fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11091fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1110ee41112e1539de95596600fd2c6dada5d275217fJason Samsstatic void 1111ee41112e1539de95596600fd2c6dada5d275217fJason SamsnProgramVertexAddLight(JNIEnv *_env, jobject _this, jint light) 1112ee41112e1539de95596600fd2c6dada5d275217fJason Sams{ 1113ee41112e1539de95596600fd2c6dada5d275217fJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1114ee41112e1539de95596600fd2c6dada5d275217fJason Sams LOG_API("nProgramVertexAddLight, con(%p), light(%p)", con, (RsLight)light); 1115bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexAddLight(con, (RsLight)light); 1116ee41112e1539de95596600fd2c6dada5d275217fJason Sams} 1117ee41112e1539de95596600fd2c6dada5d275217fJason Sams 11181fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic jint 11191fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason SamsnProgramVertexCreate(JNIEnv *_env, jobject _this) 11201fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 11211fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11221fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexCreate, con(%p)", con); 1123bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramVertexCreate(con); 11241fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11251fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 11261fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1127d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1128d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1129d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1130d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1131d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, jint script) 1132d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1133d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1134d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1135bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1136d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1137d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1138d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1139d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindProgramFragmentStore(JNIEnv *_env, jobject _this, jint pfs) 1140d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1141d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1142d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragmentStore, con(%p), pfs(%p)", con, (RsProgramFragmentStore)pfs); 1143bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragmentStore(con, (RsProgramFragmentStore)pfs); 1144d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1145d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1146d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1147d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, jint pf) 1148d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1149d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1150d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1151bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1152d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1153d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 11540826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 11550826a6f90f049bf94fc39fb23ad3a736a14b96ebJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, jint pf) 11560826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 11570826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11580826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1159bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 11600826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 11610826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1162d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 1163d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonContextAddDefineI32(JNIEnv *_env, jobject _this, jstring name, jint value) 1164d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 1165d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1166d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 1167d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineI32, con(%p) name(%s) value(%d)", con, n, value); 1168bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextSetDefineI32(con, n, value); 1169d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 1170d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 1171d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 1172d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 1173d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonContextAddDefineF(JNIEnv *_env, jobject _this, jstring name, jfloat value) 1174d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 1175d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1176d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 1177d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineF, con(%p) name(%s) value(%f)", con, n, value); 1178bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextSetDefineF(con, n, value); 1179d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 1180d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 1181d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 1182d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 118302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 118402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 118502fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 118602fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerBegin(JNIEnv *_env, jobject _this) 118702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 118802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 118902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerBegin, con(%p)", con); 1190bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerBegin(con); 119102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 119202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 119302fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 119402fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerSet(JNIEnv *_env, jobject _this, jint p, jint v) 119502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 119602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 119702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerSet, con(%p), param(%i), value(%i)", con, p, v); 1198bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerSet(con, (RsSamplerParam)p, (RsSamplerValue)v); 119902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 120002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 120102fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 120202fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerCreate(JNIEnv *_env, jobject _this) 120302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 120402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1205bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1206bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsSamplerCreate(con); 120702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 120802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1209bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1210bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1211bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1212bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightBegin(JNIEnv *_env, jobject _this) 1213bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1214bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1215bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightBegin, con(%p)", con); 1216bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightBegin(con); 1217bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1218bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1219bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1220bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetIsMono(JNIEnv *_env, jobject _this, jboolean isMono) 1221bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1222bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1223bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetIsMono, con(%p), isMono(%i)", con, isMono); 1224bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetMonochromatic(con, isMono); 1225bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1226bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1227bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1228bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetIsLocal(JNIEnv *_env, jobject _this, jboolean isLocal) 1229bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1230bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1231bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetIsLocal, con(%p), isLocal(%i)", con, isLocal); 1232bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetLocal(con, isLocal); 1233bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1234bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1235bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic jint 1236bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightCreate(JNIEnv *_env, jobject _this) 1237bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1238bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1239bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightCreate, con(%p)", con); 1240bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsLightCreate(con); 1241bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1242bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1243bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1244bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetColor(JNIEnv *_env, jobject _this, jint light, float r, float g, float b) 1245bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1246bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1247bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetColor, con(%p), light(%p), r(%f), g(%f), b(%f)", con, (RsLight)light, r, g, b); 1248bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetColor(con, (RsLight)light, r, g, b); 1249bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1250bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1251bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1252bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetPosition(JNIEnv *_env, jobject _this, jint light, float x, float y, float z) 1253bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1254bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1255bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetPosition, con(%p), light(%p), x(%f), y(%f), z(%f)", con, (RsLight)light, x, y, z); 1256bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetPosition(con, (RsLight)light, x, y, z); 1257bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1258d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1259d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1260d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 12611bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 12621bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshCreate(JNIEnv *_env, jobject _this, jint batchID, jint indexID, jintArray vtxIDs, jint primID) 12631bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 12641bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 12651bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams jint len = _env->GetArrayLength(vtxIDs); 12661bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshCreate, con(%p), batchID(%i), indexID(%i), vtxIDs.len(%i), primID(%i)", 12671bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams con, batchID, indexID, len, primID); 12681bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams jint *ptr = _env->GetIntArrayElements(vtxIDs, NULL); 1269bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams int id = (int)rsSimpleMeshCreate(con, (void *)batchID, (void *)indexID, (void **)ptr, len, primID); 12701bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams _env->ReleaseIntArrayElements(vtxIDs, ptr, 0/*JNI_ABORT*/); 12711bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams return id; 12721bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 12731bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 12741bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic void 12751bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshBindVertex(JNIEnv *_env, jobject _this, jint s, jint alloc, jint slot) 12761bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 12771bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 12781bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshBindVertex, con(%p), SimpleMesh(%p), Alloc(%p), slot(%i)", con, (RsSimpleMesh)s, (RsAllocation)alloc, slot); 1279bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSimpleMeshBindVertex(con, (RsSimpleMesh)s, (RsAllocation)alloc, slot); 12801bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 12811bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 12821bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic void 12831bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshBindIndex(JNIEnv *_env, jobject _this, jint s, jint alloc) 12841bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 12851bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 12861bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshBindIndex, con(%p), SimpleMesh(%p), Alloc(%p)", con, (RsSimpleMesh)s, (RsAllocation)alloc); 1287bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSimpleMeshBindIndex(con, (RsSimpleMesh)s, (RsAllocation)alloc); 12881bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 12891bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 12901bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams// --------------------------------------------------------------------------- 12911bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 1292d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 129394d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1294d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1295d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 1296d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"_nInit", "()V", (void*)_nInit }, 1297ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams{"nInitElements", "(IIII)V", (void*)nInitElements }, 1298ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 1299d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 1300d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 1301b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams{"nContextCreate", "(ILandroid/view/Surface;IZ)I", (void*)nContextCreate }, 1302d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextDestroy", "(I)V", (void*)nContextDestroy }, 13033eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{"nAssignName", "(I[B)V", (void*)nAssignName }, 13047ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{"nObjDestroy", "(I)V", (void*)nObjDestroy }, 1305730ee65d4ddb307898053b623120bad1655fadadJason Sams{"nObjDestroyOOB", "(I)V", (void*)nObjDestroyOOB }, 1306d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 130764676f3c21a07d650069315572811570cbf8f728Jason Sams{"nFileOpen", "([B)I", (void*)nFileOpen }, 130864676f3c21a07d650069315572811570cbf8f728Jason Sams 1309d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nElementBegin", "()V", (void*)nElementBegin }, 131043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nElementAdd", "(IIIILjava/lang/String;)V", (void*)nElementAdd }, 1311d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nElementCreate", "()I", (void*)nElementCreate }, 1312d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1313d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeBegin", "(I)V", (void*)nTypeBegin }, 1314d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeAdd", "(II)V", (void*)nTypeAdd }, 1315d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeCreate", "()I", (void*)nTypeCreate }, 131643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nTypeFinalDestroy", "(Landroid/renderscript/Type;)V", (void*)nTypeFinalDestroy }, 131743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nTypeSetupFields", "(Landroid/renderscript/Type;[I[I[Ljava/lang/reflect/Field;)V", (void*)nTypeSetupFields }, 1318d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1319d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationCreateTyped", "(I)I", (void*)nAllocationCreateTyped }, 1320d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationCreateSized", "(II)I", (void*)nAllocationCreateSized }, 1321ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{"nAllocationCreateFromBitmap", "(IZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap }, 132207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationCreateFromBitmapBoxed","(IZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmapBoxed }, 1323650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{"nAllocationCreateFromAssetStream","(IZI)I", (void*)nAllocationCreateFromAssetStream }, 1324d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationUploadToTexture", "(II)V", (void*)nAllocationUploadToTexture }, 132507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationUploadToBufferObject","(I)V", (void*)nAllocationUploadToBufferObject }, 132607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationData", "(I[II)V", (void*)nAllocationData_i }, 132707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationData", "(I[FI)V", (void*)nAllocationData_f }, 132807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData1D", "(III[II)V", (void*)nAllocationSubData1D_i }, 132907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData1D", "(III[FI)V", (void*)nAllocationSubData1D_f }, 133007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData2D", "(IIIII[II)V", (void*)nAllocationSubData2D_i }, 133107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{"nAllocationSubData2D", "(IIIII[FI)V", (void*)nAllocationSubData2D_f }, 133240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{"nAllocationRead", "(I[I)V", (void*)nAllocationRead_i }, 133340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{"nAllocationRead", "(I[F)V", (void*)nAllocationRead_f }, 13342525a815220652b37e2e390fe8c62394a6d0e574Jason Sams{"nAllocationSubDataFromObject", "(ILandroid/renderscript/Type;ILjava/lang/Object;)V", (void*)nAllocationSubDataFromObject }, 13355f43fd289abbd5380b6068766daf721b555d0053Jason Sams{"nAllocationSubReadFromObject", "(ILandroid/renderscript/Type;ILjava/lang/Object;)V", (void*)nAllocationSubReadFromObject }, 1336d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1337d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshBegin", "(II)V", (void*)nTriangleMeshBegin }, 1338d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddVertex_XY", "(FF)V", (void*)nTriangleMeshAddVertex_XY }, 1339d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddVertex_XYZ", "(FFF)V", (void*)nTriangleMeshAddVertex_XYZ }, 1340d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddVertex_XY_ST", "(FFFF)V", (void*)nTriangleMeshAddVertex_XY_ST }, 1341d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddVertex_XYZ_ST", "(FFFFF)V", (void*)nTriangleMeshAddVertex_XYZ_ST }, 13420826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{"nTriangleMeshAddVertex_XYZ_ST_NORM", "(FFFFFFFF)V", (void*)nTriangleMeshAddVertex_XYZ_ST_NORM }, 1343d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddTriangle", "(III)V", (void*)nTriangleMeshAddTriangle }, 1344d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshCreate", "()I", (void*)nTriangleMeshCreate }, 1345d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1346d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DBindAllocation", "(II)V", (void*)nAdapter1DBindAllocation }, 1347d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DSetConstraint", "(III)V", (void*)nAdapter1DSetConstraint }, 1348d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DData", "(I[I)V", (void*)nAdapter1DData_i }, 1349d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DData", "(I[F)V", (void*)nAdapter1DData_f }, 1350bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter1DSubData", "(III[I)V", (void*)nAdapter1DSubData_i }, 1351d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DSubData", "(III[F)V", (void*)nAdapter1DSubData_f }, 1352d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DCreate", "()I", (void*)nAdapter1DCreate }, 1353d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1354bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DBindAllocation", "(II)V", (void*)nAdapter2DBindAllocation }, 1355bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSetConstraint", "(III)V", (void*)nAdapter2DSetConstraint }, 1356bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DData", "(I[I)V", (void*)nAdapter2DData_i }, 1357bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DData", "(I[F)V", (void*)nAdapter2DData_f }, 1358bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSubData", "(IIIII[I)V", (void*)nAdapter2DSubData_i }, 1359bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSubData", "(IIIII[F)V", (void*)nAdapter2DSubData_f }, 1360bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DCreate", "()I", (void*)nAdapter2DCreate }, 1361bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 1362d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptBindAllocation", "(III)V", (void*)nScriptBindAllocation }, 136322534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearColor", "(IFFFF)V", (void*)nScriptSetClearColor }, 136422534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearDepth", "(IF)V", (void*)nScriptSetClearDepth }, 136522534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearStencil", "(II)V", (void*)nScriptSetClearStencil }, 136622534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetTimeZone", "(I[B)V", (void*)nScriptSetTimeZone }, 1367334ea0c98f051b5a6b85bc616c93304651854298Jason Sams{"nScriptSetType", "(IZLjava/lang/String;I)V", (void*)nScriptSetType }, 1368fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams{"nScriptSetRoot", "(Z)V", (void*)nScriptSetRoot }, 136922534176fb5c1257130ef4ee589739ca42766a32Jason Sams 1370d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptCBegin", "()V", (void*)nScriptCBegin }, 137143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich{"nScriptCSetScript", "([BII)V", (void*)nScriptCSetScript }, 1372d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptCCreate", "()I", (void*)nScriptCCreate }, 1373d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{"nScriptCAddDefineI32", "(Ljava/lang/String;I)V", (void*)nScriptCAddDefineI32 }, 1374d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{"nScriptCAddDefineF", "(Ljava/lang/String;F)V", (void*)nScriptCAddDefineF }, 1375d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1376d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreBegin", "(II)V", (void*)nProgramFragmentStoreBegin }, 1377d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDepthFunc", "(I)V", (void*)nProgramFragmentStoreDepthFunc }, 1378d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDepthMask", "(Z)V", (void*)nProgramFragmentStoreDepthMask }, 1379d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreColorMask", "(ZZZZ)V", (void*)nProgramFragmentStoreColorMask }, 1380d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreBlendFunc", "(II)V", (void*)nProgramFragmentStoreBlendFunc }, 1381d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDither", "(Z)V", (void*)nProgramFragmentStoreDither }, 1382d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreCreate", "()I", (void*)nProgramFragmentStoreCreate }, 1383d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 138425ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams{"nProgramFragmentBegin", "(IIZ)V", (void*)nProgramFragmentBegin }, 1385d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentBindTexture", "(III)V", (void*)nProgramFragmentBindTexture }, 1386d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentBindSampler", "(III)V", (void*)nProgramFragmentBindSampler }, 138725ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams{"nProgramFragmentSetSlot", "(IZII)V", (void*)nProgramFragmentSetSlot }, 1388d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentCreate", "()I", (void*)nProgramFragmentCreate }, 1389d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 13909bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason Sams{"nProgramVertexBindAllocation", "(II)V", (void*)nProgramVertexBindAllocation }, 13911fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{"nProgramVertexBegin", "(II)V", (void*)nProgramVertexBegin }, 13921fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{"nProgramVertexSetTextureMatrixEnable", "(Z)V", (void*)nProgramVertexSetTextureMatrixEnable }, 1393ee41112e1539de95596600fd2c6dada5d275217fJason Sams{"nProgramVertexAddLight", "(I)V", (void*)nProgramVertexAddLight }, 13941fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{"nProgramVertexCreate", "()I", (void*)nProgramVertexCreate }, 13951fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1396bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightBegin", "()V", (void*)nLightBegin }, 1397bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetIsMono", "(Z)V", (void*)nLightSetIsMono }, 1398bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetIsLocal", "(Z)V", (void*)nLightSetIsLocal }, 1399bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightCreate", "()I", (void*)nLightCreate }, 1400bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetColor", "(IFFF)V", (void*)nLightSetColor }, 1401bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetPosition", "(IFFF)V", (void*)nLightSetPosition }, 1402bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1403d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindRootScript", "(I)V", (void*)nContextBindRootScript }, 1404d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindProgramFragmentStore","(I)V", (void*)nContextBindProgramFragmentStore }, 1405d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindProgramFragment", "(I)V", (void*)nContextBindProgramFragment }, 14060826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{"nContextBindProgramVertex", "(I)V", (void*)nContextBindProgramVertex }, 1407d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 140802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerBegin", "()V", (void*)nSamplerBegin }, 140902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerSet", "(II)V", (void*)nSamplerSet }, 141002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerCreate", "()I", (void*)nSamplerCreate }, 141102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 14121bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshCreate", "(II[II)I", (void*)nSimpleMeshCreate }, 14131bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshBindVertex", "(III)V", (void*)nSimpleMeshBindVertex }, 14141bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshBindIndex", "(II)V", (void*)nSimpleMeshBindIndex }, 14151bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 1416d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1417d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1418d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1419d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1420d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1421d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1422d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1423d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1424d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1425d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1426d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1427d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1428d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1429d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1430d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1431d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1432d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1433d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1434d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1435d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1436d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1437d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1438d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1439d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1440d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1441d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1442d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1443d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1444d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1445d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1446d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1447d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1448