android_renderscript_RenderScript.cpp revision 7ce033d797e5df5e2131e2ed459fba181eaf4658
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> 29ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 30f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 31d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "jni.h" 32d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "JNIHelp.h" 33d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "android_runtime/AndroidRuntime.h" 34d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 35e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScript.h> 36e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScriptEnv.h> 37d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams//#define LOG_API LOGE 39d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define LOG_API(...) 40d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 41d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android; 42d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 43d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 44d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 45d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void doThrow(JNIEnv* env, const char* exc, const char* msg = NULL) 46d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 47d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jclass npeClazz = env->FindClass(exc); 48d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams env->ThrowNew(npeClazz, msg); 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 50d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 51ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gContextId = 0; 52ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gNativeBitmapID = 0; 5343ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic jfieldID gTypeNativeCache = 0; 54d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 55d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void _nInit(JNIEnv *_env, jclass _this) 56d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 57d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams gContextId = _env->GetFieldID(_this, "mContext", "I"); 58ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 59ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); 60ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I"); 6143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 6243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jclass typeClass = _env->FindClass("android/renderscript/Type"); 6343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams gTypeNativeCache = _env->GetFieldID(typeClass, "mNativeCache", "I"); 64d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 65d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 66d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 67d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 68d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 693eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsstatic void 703eaa338e11a3b0d6b87d705e5bb95625e82347bdJason SamsnAssignName(JNIEnv *_env, jobject _this, jint obj, jbyteArray str) 713eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{ 723eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 733eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams LOG_API("nAssignName, con(%p), obj(%p)", con, obj); 743eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 753eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jint len = _env->GetArrayLength(str); 763eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 77bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAssignName(con, (void *)obj, (const char *)cptr, len); 783eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 793eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams} 803eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 817ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 827ce033d797e5df5e2131e2ed459fba181eaf4658Jason SamsnObjDestroy(JNIEnv *_env, jobject _this, jint obj) 837ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 847ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 857ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj); 867ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams rsObjDestroy(con, (void *)obj); 877ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 887ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 893eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 9064676f3c21a07d650069315572811570cbf8f728Jason Samsstatic jint 9164676f3c21a07d650069315572811570cbf8f728Jason SamsnFileOpen(JNIEnv *_env, jobject _this, jbyteArray str) 9264676f3c21a07d650069315572811570cbf8f728Jason Sams{ 9364676f3c21a07d650069315572811570cbf8f728Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 9464676f3c21a07d650069315572811570cbf8f728Jason Sams LOG_API("nFileOpen, con(%p)", con); 9564676f3c21a07d650069315572811570cbf8f728Jason Sams 9664676f3c21a07d650069315572811570cbf8f728Jason Sams jint len = _env->GetArrayLength(str); 9764676f3c21a07d650069315572811570cbf8f728Jason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 98bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams jint ret = (jint)rsFileOpen(con, (const char *)cptr, len); 9964676f3c21a07d650069315572811570cbf8f728Jason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 10064676f3c21a07d650069315572811570cbf8f728Jason Sams return ret; 10164676f3c21a07d650069315572811570cbf8f728Jason Sams} 10264676f3c21a07d650069315572811570cbf8f728Jason Sams 1033eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 1043eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 105d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 106d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 107d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 108d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 109d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsDeviceCreate(); 110d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 111d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 112d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 113d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) 114d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 115d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 116d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 117d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 118d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 119d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 120d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextCreate(JNIEnv *_env, jobject _this, jint dev, jobject wnd, jint ver) 121d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 122d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 123d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 124d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (wnd == NULL) { 125d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams not_valid_surface: 126d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams doThrow(_env, "java/lang/IllegalArgumentException", 127d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams "Make sure the SurfaceView or associated SurfaceHolder has a valid Surface"); 128d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return 0; 129d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 130d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jclass surface_class = _env->FindClass("android/view/Surface"); 131d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfieldID surfaceFieldID = _env->GetFieldID(surface_class, "mSurface", "I"); 132d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams Surface * window = (Surface*)_env->GetIntField(wnd, surfaceFieldID); 133d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (window == NULL) 134d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto not_valid_surface; 135d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 136d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsContextCreate((RsDevice)dev, window, ver); 137d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 138d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 139d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 140d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextDestroy(JNIEnv *_env, jobject _this, jint con) 141d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 142d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextDestroy, con(%p)", (RsContext)con); 143d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsContextDestroy((RsContext)con); 144d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 145d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 146d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 147d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 148d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnElementBegin(JNIEnv *_env, jobject _this) 149d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 150d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 151d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementBegin, con(%p)", con); 152bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsElementBegin(con); 153d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 154d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 155d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 156d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnElementAddPredefined(JNIEnv *_env, jobject _this, jint predef) 157d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 158d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 159d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementAddPredefined, con(%p), predef(%i)", con, predef); 160bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsElementAddPredefined(con, (RsElementPredefined)predef); 161d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 162d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 163d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 16443ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnElementAdd(JNIEnv *_env, jobject _this, jint kind, jint type, jint norm, jint bits, jstring name) 165d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 166d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 16743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const char* n = NULL; 16843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams if (name) { 16943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams n = _env->GetStringUTFChars(name, NULL); 17043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 171d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementAdd, con(%p), kind(%i), type(%i), norm(%i), bits(%i)", con, kind, type, norm, bits); 172bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsElementAdd(con, (RsDataKind)kind, (RsDataType)type, norm != 0, (size_t)bits, n); 17343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams if (n) { 17443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseStringUTFChars(name, n); 17543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 176d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 177d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 178d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 179d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnElementCreate(JNIEnv *_env, jobject _this) 180d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 181d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 182d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementCreate, con(%p)", con); 183bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsElementCreate(con); 184d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 185d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 186d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 187d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnElementGetPredefined(JNIEnv *_env, jobject _this, jint predef) 188d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 189d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 190d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nElementGetPredefined, con(%p) predef(%i)", con, predef); 191bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsElementGetPredefined(con, (RsElementPredefined)predef); 192d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 193d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 194d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 195d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 196d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 197d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeBegin(JNIEnv *_env, jobject _this, jint eID) 198d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 199d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 200d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeBegin, con(%p) e(%p)", con, (RsElement)eID); 201bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeBegin(con, (RsElement)eID); 202d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 203d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 204d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 205d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeAdd(JNIEnv *_env, jobject _this, jint dim, jint val) 206d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 207d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 208d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeAdd, con(%p) dim(%i), val(%i)", con, dim, val); 209bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeAdd(con, (RsDimension)dim, val); 210d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 211d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 212d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 213d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTypeCreate(JNIEnv *_env, jobject _this) 214d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 215d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 216d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeCreate, con(%p)", con); 217bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsTypeCreate(con); 218d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 219d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 22043ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadInt(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 22143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 22243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int32_t *)buffer)[0] = _env->GetIntField(_obj, _field); 22343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 4; 22443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 22543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 22643ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadShort(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 22743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 22843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int16_t *)buffer)[0] = _env->GetShortField(_obj, _field); 22943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 2; 23043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 23143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 23243ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadByte(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 23343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 23443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((int8_t *)buffer)[0] = _env->GetByteField(_obj, _field); 23543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 1; 23643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 23743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 23843ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void * SF_LoadFloat(JNIEnv *_env, jobject _obj, jfieldID _field, void *buffer) 23943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 24043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ((float *)buffer)[0] = _env->GetFloatField(_obj, _field); 24143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return ((uint8_t *)buffer) + 4; 24243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 24343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 24443ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstruct TypeFieldCache { 24543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jfieldID field; 24643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int bits; 24743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * (*ptr)(JNIEnv *, jobject, jfieldID, void *buffer); 24843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams}; 24943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 25043ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstruct TypeCache { 25143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int fieldCount; 25243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int size; 25343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeFieldCache fields[1]; 25443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams}; 25543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 25643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams//{"nTypeFinalDestroy", "(Landroid/renderscript/Type;)V", (void*)nTypeFinalDestroy }, 25743ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 25843ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnTypeFinalDestroy(JNIEnv *_env, jobject _this, jobject _type) 25943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 26043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 26143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams free(tc); 26243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 26343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 26443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams// native void nTypeSetupFields(Type t, int[] types, int[] bits, Field[] IDs); 26543ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 26643ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnTypeSetupFields(JNIEnv *_env, jobject _this, jobject _type, jintArray _types, jintArray _bits, jobjectArray _IDs) 26743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 26843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams int fieldCount = _env->GetArrayLength(_types); 26943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams size_t structSize = sizeof(TypeCache) + (sizeof(TypeFieldCache) * (fieldCount-1)); 27043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeCache *tc = (TypeCache *)malloc(structSize); 27143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams memset(tc, 0, structSize); 27243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 27343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams TypeFieldCache *tfc = &tc->fields[0]; 27443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tc->fieldCount = fieldCount; 27543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->SetIntField(_type, gTypeNativeCache, (jint)tc); 27643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 27743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jint *fType = _env->GetIntArrayElements(_types, NULL); 27843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jint *fBits = _env->GetIntArrayElements(_bits, NULL); 27943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams for (int ct=0; ct < fieldCount; ct++) { 28043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams jobject field = _env->GetObjectArrayElement(_IDs, ct); 28143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].field = _env->FromReflectedField(field); 28243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].bits = fBits[ct]; 28343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 28443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams switch(fType[ct]) { 28543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case RS_TYPE_FLOAT: 28643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tfc[ct].ptr = SF_LoadFloat; 28743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams break; 28843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case RS_TYPE_UNSIGNED: 28943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case RS_TYPE_SIGNED: 29043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams switch(tfc[ct].bits) { 29143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case 32: tfc[ct].ptr = SF_LoadInt; break; 29243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case 16: tfc[ct].ptr = SF_LoadShort; break; 29343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams case 8: tfc[ct].ptr = SF_LoadByte; break; 29443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 29543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams break; 29643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 29743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams tc->size += 4; 29843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 29943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 30043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseIntArrayElements(_types, fType, JNI_ABORT); 30143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams _env->ReleaseIntArrayElements(_bits, fBits, JNI_ABORT); 30243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 30343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 30443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 305d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 306d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 307d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 308d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, jint e) 309d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 310d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 311d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationCreateTyped, con(%p), e(%p)", con, (RsElement)e); 312bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsAllocationCreateTyped(con, (RsElement)e); 313d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 314d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 315d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 316d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationCreatePredefSized(JNIEnv *_env, jobject _this, jint predef, jint count) 317d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 318d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 319d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationCreatePredefSized, con(%p), predef(%i), count(%i)", con, predef, count); 320bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsAllocationCreatePredefSized(con, (RsElementPredefined)predef, count); 321d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 322d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 323d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 324d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationCreateSized(JNIEnv *_env, jobject _this, jint e, jint count) 325d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 326d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 327d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationCreateSized, con(%p), e(%p), count(%i)", con, (RsElement)e, count); 328bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsAllocationCreateSized(con, (RsElement)e, count); 329d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 330d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 331d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 332d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationUploadToTexture(JNIEnv *_env, jobject _this, jint a, jint mip) 333d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 334d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 335d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationUploadToTexture, con(%p), a(%p), mip(%i)", con, (RsAllocation)a, mip); 336bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationUploadToTexture(con, (RsAllocation)a, mip); 337d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 338d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 339ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic RsElementPredefined SkBitmapToPredefined(SkBitmap::Config cfg) 340ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{ 341ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams switch (cfg) { 342ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kA8_Config: 343ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return RS_ELEMENT_A_8; 344ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_4444_Config: 345ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return RS_ELEMENT_RGBA_4444; 346ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_8888_Config: 347ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return RS_ELEMENT_RGBA_8888; 348ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kRGB_565_Config: 349ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return RS_ELEMENT_RGB_565; 350ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 351ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams default: 352ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams break; 353ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 354ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams // If we don't have a conversion mark it as a user type. 355ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams LOGE("Unsupported bitmap type"); 356ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return RS_ELEMENT_USER_U8; 357ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 358ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 359fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 360ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap) 361fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 362fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 363ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 364ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 365ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 366ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap::Config config = bitmap.getConfig(); 367fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 368ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams RsElementPredefined e = SkBitmapToPredefined(config); 369fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 370ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams if (e != RS_ELEMENT_USER_U8) { 371ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.lockPixels(); 372ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int w = bitmap.width(); 373ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int h = bitmap.height(); 374ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const void* ptr = bitmap.getPixels(); 375bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, w, h, (RsElementPredefined)dstFmt, e, genMips, ptr); 376ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.unlockPixels(); 377ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return id; 378ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 379ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return 0; 380ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 381fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 382b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Samsstatic int 383b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason SamsnAllocationCreateFromBitmapBoxed(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap) 384b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams{ 385b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 386b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap const * nativeBitmap = 387b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 388b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const SkBitmap& bitmap(*nativeBitmap); 389b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap::Config config = bitmap.getConfig(); 390b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 391b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams RsElementPredefined e = SkBitmapToPredefined(config); 392b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 393b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams if (e != RS_ELEMENT_USER_U8) { 394b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.lockPixels(); 395b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int w = bitmap.width(); 396b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int h = bitmap.height(); 397b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const void* ptr = bitmap.getPixels(); 398bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams jint id = (jint)rsAllocationCreateFromBitmapBoxed(con, w, h, (RsElementPredefined)dstFmt, e, genMips, ptr); 399b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.unlockPixels(); 400b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return id; 401b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams } 402b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return 0; 403b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams} 404b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 405fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 406d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 407d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationData_i(JNIEnv *_env, jobject _this, jint alloc, jintArray data) 408d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 409d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 410d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 411d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationData_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 412d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 413bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationData(con, (RsAllocation)alloc, ptr); 414d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 415d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 416d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 417d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 418d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationData_f(JNIEnv *_env, jobject _this, jint alloc, jfloatArray data) 419d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 420d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 421d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 422d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationData_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 423d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 424bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationData(con, (RsAllocation)alloc, ptr); 425d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 426d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 427d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 428d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 429d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationSubData1D_i(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jintArray data) 430d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 431d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 432d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 433d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocation1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAllocation)alloc, offset, count, len); 434d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 435bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr); 436d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 437d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 438d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 439d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 440d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationSubData1D_f(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jfloatArray data) 441d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 442d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 443d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 444d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocation1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAllocation)alloc, offset, count, len); 445d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 446bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr); 447d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 448d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 449d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 450d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 451d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationSubData2D_i(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data) 452d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 453d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 454d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 455d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 456d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 457bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr); 458d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 459d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 460d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 461d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 462d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAllocationSubData2D_f(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data) 463d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 464d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 465d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 466d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 467d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 468bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr); 469d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 470d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 471d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 47240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 47340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, jint alloc, jintArray data) 47440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 47540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 47640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 47740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 47840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 479bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 48040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_COMMIT); 48140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 48240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 48340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 48440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, jint alloc, jfloatArray data) 48540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 48640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 48740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 488a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 48940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 490bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 49140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_COMMIT); 49240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 493d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 494d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 49543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams//{"nAllocationDataFromObject", "(ILandroid/renderscript/Type;Ljava/lang/Object;)V", (void*)nAllocationDataFromObject }, 49643ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic void 49743ee06857bb7f99446d1d84f8789016c5d105558Jason SamsnAllocationDataFromObject(JNIEnv *_env, jobject _this, jint alloc, jobject _type, jobject _o) 49843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{ 49943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 50043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams LOG_API("nAllocationDataFromObject con(%p), alloc(%p)", con, (RsAllocation)alloc); 50143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 50243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const TypeCache *tc = (TypeCache *)_env->GetIntField(_type, gTypeNativeCache); 50343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 50443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * bufAlloc = malloc(tc->size); 50543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void * buf = bufAlloc; 50643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams for (int ct=0; ct < tc->fieldCount; ct++) { 50743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const TypeFieldCache *tfc = &tc->fields[ct]; 50843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams buf = tfc->ptr(_env, _o, tfc->field, buf); 50943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 510bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationData(con, (RsAllocation)alloc, bufAlloc); 51143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams const uint32_t * tmp = (const uint32_t *)bufAlloc; 51243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams free(bufAlloc); 51343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams} 51443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 515d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 516d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 517d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 518d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshBegin(JNIEnv *_env, jobject _this, jint v, jint i) 519d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 520d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 521d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshBegin, con(%p), vertex(%p), index(%p)", con, (RsElement)v, (RsElement)i); 522bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshBegin(con, (RsElement)v, (RsElement)i); 523d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 524d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 525d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 526d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddVertex_XY(JNIEnv *_env, jobject _this, jfloat x, jfloat y) 527d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 528d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams float v[] = {x, y}; 529d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 530d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddVertex_XY, con(%p), x(%f), y(%f)", con, x, y); 531bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 532d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 533d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 534d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 535d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddVertex_XYZ(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) 536d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 537d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams float v[] = {x, y, z}; 538d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 539d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddVertex_XYZ, con(%p), x(%f), y(%f), z(%f)", con, x, y, z); 540bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 541d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 542d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 543d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 544d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddVertex_XY_ST(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat s, jfloat t) 545d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 546d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams float v[] = {s, t, x, y}; 547d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 548d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddVertex_XY_ST, con(%p), x(%f), y(%f), s(%f), t(%f)", con, x, y, s, t); 549bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 550d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 551d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 552d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 553d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddVertex_XYZ_ST(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z, jfloat s, jfloat t) 554d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 555d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams float v[] = {s, t, x, y, z}; 556d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 557d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddVertex_XYZ_ST, con(%p), x(%f), y(%f), z(%f), s(%f), t(%f)", con, x, y, z, s, t); 558bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 559d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 560d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 561d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5620826a6f90f049bf94fc39fb23ad3a736a14b96ebJason SamsnTriangleMeshAddVertex_XYZ_ST_NORM(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z, jfloat s, jfloat t, jfloat nx, jfloat ny, jfloat nz) 5630826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 5640826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams float v[] = {nx, ny, nz, s, t, x, y, z}; 5650826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 5660826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nTriangleMeshAddVertex_XYZ_ST, con(%p), x(%f), y(%f), z(%f), s(%f), t(%f)", con, x, y, z, s, t); 567bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddVertex(con, v); 5680826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 5690826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 5700826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 571d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshAddTriangle(JNIEnv *_env, jobject _this, jint i1, jint i2, jint i3) 572d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 573d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 574d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshAddTriangle, con(%p), i1(%i), i2(%i), i3(%i)", con, i1, i2, i3); 575bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTriangleMeshAddTriangle(con, i1, i2, i3); 576d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 577d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 578d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 579d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnTriangleMeshCreate(JNIEnv *_env, jobject _this) 580d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 581d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 582d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTriangleMeshCreate, con(%p)", con); 583bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsTriangleMeshCreate(con); 584d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 585d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 586d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 587d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 588d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 589d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) 590d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 591d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 592d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter1D)adapter, (RsAllocation)alloc); 593bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DBindAllocation(con, (RsAdapter1D)adapter, (RsAllocation)alloc); 594d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 595d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 596d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 597d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) 598d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 599d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 600d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter1D)adapter, dim, value); 601bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSetConstraint(con, (RsAdapter1D)adapter, (RsDimension)dim, value); 602d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 603d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 604d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 605d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) 606d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 607d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 608d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 609d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 610d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 611bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 612d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 613d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 614d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 615d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 616d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jintArray data) 617d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 618d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 619d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 620d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 621d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 622bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 623d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 624d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 625d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 626d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 627d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) 628d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 629d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 630d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 631d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 632d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 633bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 634d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 635d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 636d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 637d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 638d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jfloatArray data) 639d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 640d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 641d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 642d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 643d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 644bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 645d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 646d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 647d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 648d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 649d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnAdapter1DCreate(JNIEnv *_env, jobject _this) 650d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 651d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 652d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DCreate, con(%p)", con); 653bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter1DCreate(con); 654d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 655d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 656d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 657d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 658d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 659bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) 660bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 661bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 662bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter2D)adapter, (RsAllocation)alloc); 663bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DBindAllocation(con, (RsAdapter2D)adapter, (RsAllocation)alloc); 664bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 665bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 666bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 667bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) 668bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 669bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 670bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter2D)adapter, dim, value); 671bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSetConstraint(con, (RsAdapter2D)adapter, (RsDimension)dim, value); 672bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 673bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 674bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 675bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) 676bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 677bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 678bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 679bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 680bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 681bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 682bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 683bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 684bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 685bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 686bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) 687bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 688bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 689bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 690bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 691bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 692bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 693bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 694bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 695bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 696bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 697bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jintArray data) 698bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 699bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 700bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 701bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 702bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 703bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 704bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter2D)adapter, xoff, yoff, w, h, ptr); 705bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 706bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 707bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 708bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 709bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jfloatArray data) 710bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 711bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 712bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 713bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_f, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 714bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 715bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 716bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter1D)adapter, xoff, yoff, w, h, ptr); 717bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 718bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 719bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 720bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic jint 721bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason SamsnAdapter2DCreate(JNIEnv *_env, jobject _this) 722bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 723bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 724bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DCreate, con(%p)", con); 725bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter2DCreate(con); 726bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 727bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 728bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 729bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 730bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 731d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, jint script, jint alloc, jint slot) 732d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 733d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 734d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 735bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 736d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 737d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 738d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 73922534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearColor(JNIEnv *_env, jobject _this, jint script, jfloat r, jfloat g, jfloat b, jfloat a) 740d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 741d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 74222534176fb5c1257130ef4ee589739ca42766a32Jason Sams LOG_API("nScriptSetClearColor, con(%p), s(%p), r(%f), g(%f), b(%f), a(%f)", con, script, r, g, b, a); 743bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearColor(con, (RsScript)script, r, g, b, a); 744d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 745d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 746d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 74722534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearDepth(JNIEnv *_env, jobject _this, jint script, jfloat d) 748d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 749d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 75022534176fb5c1257130ef4ee589739ca42766a32Jason Sams LOG_API("nScriptCSetClearDepth, con(%p), s(%p), depth(%f)", con, script, d); 751bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearDepth(con, (RsScript)script, d); 752d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 753d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 754d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 75522534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetClearStencil(JNIEnv *_env, jobject _this, jint script, jint stencil) 756d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 757d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 75822534176fb5c1257130ef4ee589739ca42766a32Jason Sams LOG_API("nScriptCSetClearStencil, con(%p), s(%p), stencil(%i)", con, script, stencil); 759bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetClearStencil(con, (RsScript)script, stencil); 760d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 761d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 762d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 76322534176fb5c1257130ef4ee589739ca42766a32Jason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, jint script, jbyteArray timeZone) 764584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 765584a375df68ed7d62b38389078c6804edf228f9cRomain Guy RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 76622534176fb5c1257130ef4ee589739ca42766a32Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, script, timeZone); 767584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 768584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 769584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 770584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 771584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 772bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 773584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 774584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 775584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 776584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 777584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 778584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 77922534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 780334ea0c98f051b5a6b85bc616c93304651854298Jason SamsnScriptSetType(JNIEnv *_env, jobject _this, jint type, jboolean writable, jstring _str, jint slot) 78122534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 78222534176fb5c1257130ef4ee589739ca42766a32Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 783334ea0c98f051b5a6b85bc616c93304651854298Jason Sams LOG_API("nScriptCAddType, con(%p), type(%p), writable(%i), slot(%i)", con, (RsType)type, writable, slot); 784fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams const char* n = NULL; 785fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams if (_str) { 786fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams n = _env->GetStringUTFChars(_str, NULL); 787fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams } 788bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetType(con, (RsType)type, slot, writable, n); 789fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams if (n) { 790fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams _env->ReleaseStringUTFChars(_str, n); 791fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams } 79222534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 79322534176fb5c1257130ef4ee589739ca42766a32Jason Sams 794584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 795fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason SamsnScriptSetRoot(JNIEnv *_env, jobject _this, jboolean isRoot) 796d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 797d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 798fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCSetRoot, con(%p), isRoot(%i)", con, isRoot); 799bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetRoot(con, isRoot); 800d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 801d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 802fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 803fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 804d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 805fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason SamsnScriptCBegin(JNIEnv *_env, jobject _this) 806d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 807d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 808fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCBegin, con(%p)", con); 809bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCBegin(con); 810d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 811d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 812d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 81343702d8925c54360ad5f9f66b0d35d61d59f6910Jack PalevichnScriptCSetScript(JNIEnv *_env, jobject _this, jbyteArray scriptRef, 81443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint offset, jint length) 815d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 816d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 817d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("!!! nScriptCSetScript, con(%p)", con); 81843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 81943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 82043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_base = 0; 82143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_ptr; 82243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 82343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 82443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "script == null"); 82543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 82643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 82743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (offset < 0) { 82843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 82943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "offset < 0"); 83043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 83143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 83243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 83343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 83443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length < 0"); 83543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 83643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 83743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich remaining = _env->GetArrayLength(scriptRef) - offset; 83843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 83943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 84043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length > script.length - offset"); 84143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 84243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 84343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_base = (jbyte *) 84443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 84543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_ptr = script_base + offset; 84643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 847bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetText(con, (const char *)script_ptr, length); 84839ddc950c9064129ead5de04b200106c0659f937Jason Sams 84943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 85043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (script_base) { 85143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->ReleasePrimitiveArrayCritical(scriptRef, script_base, 85243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 85343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 854d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 855d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 856d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 857d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnScriptCCreate(JNIEnv *_env, jobject _this) 858d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 859d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 860d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 861bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsScriptCCreate(con); 862d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 863d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 864d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 865d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonScriptCAddDefineI32(JNIEnv *_env, jobject _this, jstring name, jint value) 866d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 867d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 868d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 869d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineI32, con(%p) name(%s) value(%d)", con, n, value); 870bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetDefineI32(con, n, value); 871d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 872d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 873d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 874d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 875d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonScriptCAddDefineF(JNIEnv *_env, jobject _this, jstring name, jfloat value) 876d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 877d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 878d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 879d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineF, con(%p) name(%s) value(%f)", con, n, value); 880bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetDefineF(con, n, value); 881d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 882d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 883d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 884d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 885d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 886d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 887d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreBegin(JNIEnv *_env, jobject _this, jint in, jint out) 888d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 889d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 890d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 891bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreBegin(con, (RsElement)in, (RsElement)out); 892d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 893d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 894d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 895d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDepthFunc(JNIEnv *_env, jobject _this, jint func) 896d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 897d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 898d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDepthFunc, con(%p), func(%i)", con, func); 899bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDepthFunc(con, (RsDepthFunc)func); 900d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 901d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 902d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 903d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDepthMask(JNIEnv *_env, jobject _this, jboolean enable) 904d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 905d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 906d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDepthMask, con(%p), enable(%i)", con, enable); 907bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDepthMask(con, enable); 908d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 909d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 910d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 911d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreColorMask(JNIEnv *_env, jobject _this, jboolean r, jboolean g, jboolean b, jboolean a) 912d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 913d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 914d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreColorMask, con(%p), r(%i), g(%i), b(%i), a(%i)", con, r, g, b, a); 915bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreColorMask(con, r, g, b, a); 916d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 917d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 918d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 919d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreBlendFunc(JNIEnv *_env, jobject _this, int src, int dst) 920d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 921d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 922d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreBlendFunc, con(%p), src(%i), dst(%i)", con, src, dst); 923bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreBlendFunc(con, (RsBlendSrcFunc)src, (RsBlendDstFunc)dst); 924d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 925d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 926d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 927d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreDither(JNIEnv *_env, jobject _this, jboolean enable) 928d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 929d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 930d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreDither, con(%p), enable(%i)", con, enable); 931bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentStoreDither(con, enable); 932d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 933d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 934d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 935d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentStoreCreate(JNIEnv *_env, jobject _this) 936d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 937d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 938d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentStoreCreate, con(%p)", con); 9393eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 940bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramFragmentStoreCreate(con); 941d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 942d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 943d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 944d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 945d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 946d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out) 947d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 948d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 949d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 950bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out); 951d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 952d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 953d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 954d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentBindTexture(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) 955d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 956d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 957d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 958bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 959d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 960d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 961d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 962d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) 963d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 964d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 965d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 966bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 967d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 968d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 969d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 970d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentSetType(JNIEnv *_env, jobject _this, jint slot, jint vt) 971d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 972d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 973d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentSetType, con(%p), slot(%i), vt(%p)", con, slot, (RsType)vt); 974bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentSetType(con, slot, (RsType)vt); 975d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 976d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 977d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 978d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentSetEnvMode(JNIEnv *_env, jobject _this, jint slot, jint env) 979d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 980d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 981d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentSetEnvMode, con(%p), slot(%i), vt(%i)", con, slot, env); 982bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentSetEnvMode(con, slot, (RsTexEnvMode)env); 983d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 984d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 985d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 986d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentSetTexEnable(JNIEnv *_env, jobject _this, jint slot, jboolean enable) 987d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 988d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 989d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentSetTexEnable, con(%p), slot(%i), enable(%i)", con, slot, enable); 990bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramFragmentSetTexEnable(con, slot, enable); 991d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 992d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 993d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 994d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnProgramFragmentCreate(JNIEnv *_env, jobject _this, jint slot, jboolean enable) 995d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 996d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 997d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nProgramFragmentCreate, con(%p)", con); 998bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramFragmentCreate(con); 999d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1000d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10011fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 10021fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10031fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic void 10041fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason SamsnProgramVertexBegin(JNIEnv *_env, jobject _this, jint in, jint out) 10051fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10061fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 10071fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 1008bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexBegin(con, (RsElement)in, (RsElement)out); 10091fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10101fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10111fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic void 10129bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason SamsnProgramVertexBindAllocation(JNIEnv *_env, jobject _this, jint vpv, jint a) 10131fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10141fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 10151fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexBindAllocation, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 1016bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexBindAllocation(con, (RsProgramFragment)vpv, (RsAllocation)a); 10171fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10181fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10191fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic void 10201fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason SamsnProgramVertexSetTextureMatrixEnable(JNIEnv *_env, jobject _this, jboolean enable) 10211fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10221fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 10231fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexSetTextureMatrixEnable, con(%p), enable(%i)", con, enable); 1024bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexSetTextureMatrixEnable(con, enable); 10251fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10261fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1027ee41112e1539de95596600fd2c6dada5d275217fJason Samsstatic void 1028ee41112e1539de95596600fd2c6dada5d275217fJason SamsnProgramVertexAddLight(JNIEnv *_env, jobject _this, jint light) 1029ee41112e1539de95596600fd2c6dada5d275217fJason Sams{ 1030ee41112e1539de95596600fd2c6dada5d275217fJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1031ee41112e1539de95596600fd2c6dada5d275217fJason Sams LOG_API("nProgramVertexAddLight, con(%p), light(%p)", con, (RsLight)light); 1032bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsProgramVertexAddLight(con, (RsLight)light); 1033ee41112e1539de95596600fd2c6dada5d275217fJason Sams} 1034ee41112e1539de95596600fd2c6dada5d275217fJason Sams 10351fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Samsstatic jint 10361fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason SamsnProgramVertexCreate(JNIEnv *_env, jobject _this) 10371fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10381fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 10391fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams LOG_API("nProgramVertexCreate, con(%p)", con); 1040bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsProgramVertexCreate(con); 10411fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10421fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10431fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1044d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1045d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1046d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1047d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1048d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, jint script) 1049d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1050d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1051d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1052bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1053d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1054d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1055d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1056d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindProgramFragmentStore(JNIEnv *_env, jobject _this, jint pfs) 1057d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1058d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1059d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragmentStore, con(%p), pfs(%p)", con, (RsProgramFragmentStore)pfs); 1060bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragmentStore(con, (RsProgramFragmentStore)pfs); 1061d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1062d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1063d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1064d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, jint pf) 1065d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1066d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1067d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1068bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1069d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1070d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10710826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 10720826a6f90f049bf94fc39fb23ad3a736a14b96ebJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, jint pf) 10730826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 10740826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 10750826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1076bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 10770826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 10780826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1079d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 1080d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonContextAddDefineI32(JNIEnv *_env, jobject _this, jstring name, jint value) 1081d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 1082d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1083d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 1084d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineI32, con(%p) name(%s) value(%d)", con, n, value); 1085bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextSetDefineI32(con, n, value); 1086d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 1087d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 1088d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 1089d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 1090d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe OnoratonContextAddDefineF(JNIEnv *_env, jobject _this, jstring name, jfloat value) 1091d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{ 1092d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1093d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato const char* n = _env->GetStringUTFChars(name, NULL); 1094d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato LOG_API("nScriptCAddDefineF, con(%p) name(%s) value(%f)", con, n, value); 1095bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextSetDefineF(con, n, value); 1096d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato _env->ReleaseStringUTFChars(name, n); 1097d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato} 1098d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 1099d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 110002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 110102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 110202fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 110302fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerBegin(JNIEnv *_env, jobject _this) 110402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 110502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 110602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerBegin, con(%p)", con); 1107bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerBegin(con); 110802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 110902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 111002fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 111102fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerSet(JNIEnv *_env, jobject _this, jint p, jint v) 111202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 111302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 111402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerSet, con(%p), param(%i), value(%i)", con, p, v); 1115bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerSet(con, (RsSamplerParam)p, (RsSamplerValue)v); 111602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 111702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 111802fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 111902fb2cb531035779a25dbf9595e0628ea40585b0Jason SamsnSamplerCreate(JNIEnv *_env, jobject _this) 112002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 112102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1122bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1123bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsSamplerCreate(con); 112402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 112502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1126bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1127bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1128bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1129bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightBegin(JNIEnv *_env, jobject _this) 1130bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1131bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1132bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightBegin, con(%p)", con); 1133bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightBegin(con); 1134bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1135bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1136bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1137bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetIsMono(JNIEnv *_env, jobject _this, jboolean isMono) 1138bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1139bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1140bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetIsMono, con(%p), isMono(%i)", con, isMono); 1141bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetMonochromatic(con, isMono); 1142bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1143bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1144bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1145bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetIsLocal(JNIEnv *_env, jobject _this, jboolean isLocal) 1146bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1147bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1148bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetIsLocal, con(%p), isLocal(%i)", con, isLocal); 1149bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetLocal(con, isLocal); 1150bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1151bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1152bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic jint 1153bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightCreate(JNIEnv *_env, jobject _this) 1154bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1155bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1156bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightCreate, con(%p)", con); 1157bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsLightCreate(con); 1158bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1159bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1160bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1161bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetColor(JNIEnv *_env, jobject _this, jint light, float r, float g, float b) 1162bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1163bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1164bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetColor, con(%p), light(%p), r(%f), g(%f), b(%f)", con, (RsLight)light, r, g, b); 1165bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetColor(con, (RsLight)light, r, g, b); 1166bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1167bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1168bba134c8a1dcfe0c8473307a95899a02c9553504Jason Samsstatic void 1169bba134c8a1dcfe0c8473307a95899a02c9553504Jason SamsnLightSetPosition(JNIEnv *_env, jobject _this, jint light, float x, float y, float z) 1170bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{ 1171bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 1172bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nLightSetPosition, con(%p), light(%p), x(%f), y(%f), z(%f)", con, (RsLight)light, x, y, z); 1173bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsLightSetPosition(con, (RsLight)light, x, y, z); 1174bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams} 1175d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1176d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1177d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 11781bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 11791bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshCreate(JNIEnv *_env, jobject _this, jint batchID, jint indexID, jintArray vtxIDs, jint primID) 11801bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 11811bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11821bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams jint len = _env->GetArrayLength(vtxIDs); 11831bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshCreate, con(%p), batchID(%i), indexID(%i), vtxIDs.len(%i), primID(%i)", 11841bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams con, batchID, indexID, len, primID); 11851bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams jint *ptr = _env->GetIntArrayElements(vtxIDs, NULL); 1186bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams int id = (int)rsSimpleMeshCreate(con, (void *)batchID, (void *)indexID, (void **)ptr, len, primID); 11871bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams _env->ReleaseIntArrayElements(vtxIDs, ptr, 0/*JNI_ABORT*/); 11881bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams return id; 11891bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 11901bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 11911bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic void 11921bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshBindVertex(JNIEnv *_env, jobject _this, jint s, jint alloc, jint slot) 11931bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 11941bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 11951bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshBindVertex, con(%p), SimpleMesh(%p), Alloc(%p), slot(%i)", con, (RsSimpleMesh)s, (RsAllocation)alloc, slot); 1196bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSimpleMeshBindVertex(con, (RsSimpleMesh)s, (RsAllocation)alloc, slot); 11971bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 11981bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 11991bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic void 12001bada8cd6e4f340de93cff4a2439835fc3b1456cJason SamsnSimpleMeshBindIndex(JNIEnv *_env, jobject _this, jint s, jint alloc) 12011bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{ 12021bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); 12031bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams LOG_API("nSimpleMeshBindIndex, con(%p), SimpleMesh(%p), Alloc(%p)", con, (RsSimpleMesh)s, (RsAllocation)alloc); 1204bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSimpleMeshBindIndex(con, (RsSimpleMesh)s, (RsAllocation)alloc); 12051bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams} 12061bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 12071bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams// --------------------------------------------------------------------------- 12081bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 1209d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 121094d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1211d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1212d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 1213d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"_nInit", "()V", (void*)_nInit }, 1214d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 1215d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 1216d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextCreate", "(ILandroid/view/Surface;I)I", (void*)nContextCreate }, 1217d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextDestroy", "(I)V", (void*)nContextDestroy }, 12183eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{"nAssignName", "(I[B)V", (void*)nAssignName }, 12197ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{"nObjDestroy", "(I)V", (void*)nObjDestroy }, 1220d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 122164676f3c21a07d650069315572811570cbf8f728Jason Sams{"nFileOpen", "([B)I", (void*)nFileOpen }, 122264676f3c21a07d650069315572811570cbf8f728Jason Sams 1223d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nElementBegin", "()V", (void*)nElementBegin }, 1224d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nElementAddPredefined", "(I)V", (void*)nElementAddPredefined }, 122543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nElementAdd", "(IIIILjava/lang/String;)V", (void*)nElementAdd }, 1226d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nElementCreate", "()I", (void*)nElementCreate }, 1227d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nElementGetPredefined", "(I)I", (void*)nElementGetPredefined }, 1228d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1229d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeBegin", "(I)V", (void*)nTypeBegin }, 1230d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeAdd", "(II)V", (void*)nTypeAdd }, 1231d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTypeCreate", "()I", (void*)nTypeCreate }, 123243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nTypeFinalDestroy", "(Landroid/renderscript/Type;)V", (void*)nTypeFinalDestroy }, 123343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nTypeSetupFields", "(Landroid/renderscript/Type;[I[I[Ljava/lang/reflect/Field;)V", (void*)nTypeSetupFields }, 1234d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1235d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationCreateTyped", "(I)I", (void*)nAllocationCreateTyped }, 1236d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationCreatePredefSized", "(II)I", (void*)nAllocationCreatePredefSized }, 1237d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationCreateSized", "(II)I", (void*)nAllocationCreateSized }, 1238ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{"nAllocationCreateFromBitmap", "(IZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap }, 1239b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams{"nAllocationCreateFromBitmapBoxed","(IZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmapBoxed }, 1240d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationUploadToTexture", "(II)V", (void*)nAllocationUploadToTexture }, 1241d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationData", "(I[I)V", (void*)nAllocationData_i }, 1242d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationData", "(I[F)V", (void*)nAllocationData_f }, 1243d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationSubData1D", "(III[I)V", (void*)nAllocationSubData1D_i }, 1244d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationSubData1D", "(III[F)V", (void*)nAllocationSubData1D_f }, 1245d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationSubData2D", "(IIIII[I)V", (void*)nAllocationSubData2D_i }, 1246d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAllocationSubData2D", "(IIIII[F)V", (void*)nAllocationSubData2D_f }, 124740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{"nAllocationRead", "(I[I)V", (void*)nAllocationRead_i }, 124840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{"nAllocationRead", "(I[F)V", (void*)nAllocationRead_f }, 124943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams{"nAllocationDataFromObject", "(ILandroid/renderscript/Type;Ljava/lang/Object;)V", (void*)nAllocationDataFromObject }, 1250d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1251d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshBegin", "(II)V", (void*)nTriangleMeshBegin }, 1252d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddVertex_XY", "(FF)V", (void*)nTriangleMeshAddVertex_XY }, 1253d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddVertex_XYZ", "(FFF)V", (void*)nTriangleMeshAddVertex_XYZ }, 1254d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddVertex_XY_ST", "(FFFF)V", (void*)nTriangleMeshAddVertex_XY_ST }, 1255d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddVertex_XYZ_ST", "(FFFFF)V", (void*)nTriangleMeshAddVertex_XYZ_ST }, 12560826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{"nTriangleMeshAddVertex_XYZ_ST_NORM", "(FFFFFFFF)V", (void*)nTriangleMeshAddVertex_XYZ_ST_NORM }, 1257d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshAddTriangle", "(III)V", (void*)nTriangleMeshAddTriangle }, 1258d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nTriangleMeshCreate", "()I", (void*)nTriangleMeshCreate }, 1259d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1260d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DBindAllocation", "(II)V", (void*)nAdapter1DBindAllocation }, 1261d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DSetConstraint", "(III)V", (void*)nAdapter1DSetConstraint }, 1262d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DData", "(I[I)V", (void*)nAdapter1DData_i }, 1263d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DData", "(I[F)V", (void*)nAdapter1DData_f }, 1264bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter1DSubData", "(III[I)V", (void*)nAdapter1DSubData_i }, 1265d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DSubData", "(III[F)V", (void*)nAdapter1DSubData_f }, 1266d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nAdapter1DCreate", "()I", (void*)nAdapter1DCreate }, 1267d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1268bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DBindAllocation", "(II)V", (void*)nAdapter2DBindAllocation }, 1269bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSetConstraint", "(III)V", (void*)nAdapter2DSetConstraint }, 1270bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DData", "(I[I)V", (void*)nAdapter2DData_i }, 1271bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DData", "(I[F)V", (void*)nAdapter2DData_f }, 1272bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSubData", "(IIIII[I)V", (void*)nAdapter2DSubData_i }, 1273bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DSubData", "(IIIII[F)V", (void*)nAdapter2DSubData_f }, 1274bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{"nAdapter2DCreate", "()I", (void*)nAdapter2DCreate }, 1275bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 1276d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptBindAllocation", "(III)V", (void*)nScriptBindAllocation }, 127722534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearColor", "(IFFFF)V", (void*)nScriptSetClearColor }, 127822534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearDepth", "(IF)V", (void*)nScriptSetClearDepth }, 127922534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetClearStencil", "(II)V", (void*)nScriptSetClearStencil }, 128022534176fb5c1257130ef4ee589739ca42766a32Jason Sams{"nScriptSetTimeZone", "(I[B)V", (void*)nScriptSetTimeZone }, 1281334ea0c98f051b5a6b85bc616c93304651854298Jason Sams{"nScriptSetType", "(IZLjava/lang/String;I)V", (void*)nScriptSetType }, 1282fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams{"nScriptSetRoot", "(Z)V", (void*)nScriptSetRoot }, 128322534176fb5c1257130ef4ee589739ca42766a32Jason Sams 1284d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptCBegin", "()V", (void*)nScriptCBegin }, 128543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich{"nScriptCSetScript", "([BII)V", (void*)nScriptCSetScript }, 1286d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nScriptCCreate", "()I", (void*)nScriptCCreate }, 1287d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{"nScriptCAddDefineI32", "(Ljava/lang/String;I)V", (void*)nScriptCAddDefineI32 }, 1288d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato{"nScriptCAddDefineF", "(Ljava/lang/String;F)V", (void*)nScriptCAddDefineF }, 1289d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1290d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreBegin", "(II)V", (void*)nProgramFragmentStoreBegin }, 1291d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDepthFunc", "(I)V", (void*)nProgramFragmentStoreDepthFunc }, 1292d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDepthMask", "(Z)V", (void*)nProgramFragmentStoreDepthMask }, 1293d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreColorMask", "(ZZZZ)V", (void*)nProgramFragmentStoreColorMask }, 1294d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreBlendFunc", "(II)V", (void*)nProgramFragmentStoreBlendFunc }, 1295d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreDither", "(Z)V", (void*)nProgramFragmentStoreDither }, 1296d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentStoreCreate", "()I", (void*)nProgramFragmentStoreCreate }, 1297d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1298d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentBegin", "(II)V", (void*)nProgramFragmentBegin }, 1299d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentBindTexture", "(III)V", (void*)nProgramFragmentBindTexture }, 1300d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentBindSampler", "(III)V", (void*)nProgramFragmentBindSampler }, 1301d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentSetType", "(II)V", (void*)nProgramFragmentSetType }, 1302d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentSetEnvMode", "(II)V", (void*)nProgramFragmentSetEnvMode }, 1303d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentSetTexEnable", "(IZ)V", (void*)nProgramFragmentSetTexEnable }, 1304d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nProgramFragmentCreate", "()I", (void*)nProgramFragmentCreate }, 1305d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 13069bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason Sams{"nProgramVertexBindAllocation", "(II)V", (void*)nProgramVertexBindAllocation }, 13071fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{"nProgramVertexBegin", "(II)V", (void*)nProgramVertexBegin }, 13081fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{"nProgramVertexSetTextureMatrixEnable", "(Z)V", (void*)nProgramVertexSetTextureMatrixEnable }, 1309ee41112e1539de95596600fd2c6dada5d275217fJason Sams{"nProgramVertexAddLight", "(I)V", (void*)nProgramVertexAddLight }, 13101fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{"nProgramVertexCreate", "()I", (void*)nProgramVertexCreate }, 13111fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1312bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightBegin", "()V", (void*)nLightBegin }, 1313bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetIsMono", "(Z)V", (void*)nLightSetIsMono }, 1314bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetIsLocal", "(Z)V", (void*)nLightSetIsLocal }, 1315bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightCreate", "()I", (void*)nLightCreate }, 1316bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetColor", "(IFFF)V", (void*)nLightSetColor }, 1317bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams{"nLightSetPosition", "(IFFF)V", (void*)nLightSetPosition }, 1318bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1319d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindRootScript", "(I)V", (void*)nContextBindRootScript }, 1320d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindProgramFragmentStore","(I)V", (void*)nContextBindProgramFragmentStore }, 1321d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nContextBindProgramFragment", "(I)V", (void*)nContextBindProgramFragment }, 13220826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{"nContextBindProgramVertex", "(I)V", (void*)nContextBindProgramVertex }, 1323d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 132402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerBegin", "()V", (void*)nSamplerBegin }, 132502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerSet", "(II)V", (void*)nSamplerSet }, 132602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{"nSamplerCreate", "()I", (void*)nSamplerCreate }, 132702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 13281bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshCreate", "(II[II)I", (void*)nSimpleMeshCreate }, 13291bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshBindVertex", "(III)V", (void*)nSimpleMeshBindVertex }, 13301bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{"nSimpleMeshBindIndex", "(II)V", (void*)nSimpleMeshBindIndex }, 13311bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 1332d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1333d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1334d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1335d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1336d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1337d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1338d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1339d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1340d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1341d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1342d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1343d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1344d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1345d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1346d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1347d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1348d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1349d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1350d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1351d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1352d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1353d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1354d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1355d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1356d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1357d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1358d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1359d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1360d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1361d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1362d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1363d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1364