1d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams/* 24cbe25a86b4aa3353c8016a129028671e902611fStephen Hines * Copyright (C) 2011-2012 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 26eece0dda56ae29fff6e9003df97594f6ac50b6e2Derek Sollenberger#include <SkBitmap.h> 27ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 28b13b9bdad2baf6ad1ec2e56b6b7598fa20f55fc4Mathias Agopian#include <androidfw/Asset.h> 29b13b9bdad2baf6ad1ec2e56b6b7598fa20f55fc4Mathias Agopian#include <androidfw/AssetManager.h> 30b13b9bdad2baf6ad1ec2e56b6b7598fa20f55fc4Mathias Agopian#include <androidfw/ResourceTypes.h> 31f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 32d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "jni.h" 33d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "JNIHelp.h" 34d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "android_runtime/AndroidRuntime.h" 35ee956053d6e3f7a7a82e41853b9b251fdc226d7aJim Miller#include "android_runtime/android_view_Surface.h" 36b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk#include "android_runtime/android_util_AssetManager.h" 37d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 381d6983af336b2b1d3a24aece58ce0850aa79e8a0Jason Sams#include <rs.h> 391d6983af336b2b1d3a24aece58ce0850aa79e8a0Jason Sams#include <rsEnv.h> 40fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams#include <gui/Surface.h> 41d47f7d8b5fe3a3861d7cbdc5f912235407823c8eAndy McFadden#include <gui/GLConsumer.h> 4252800617946c456e78ed010c82d0ec4358368164Mathias Agopian#include <gui/Surface.h> 43faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <android_runtime/android_graphics_SurfaceTexture.h> 44d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 453762c311729fe9f3af085c14c5c1fb471d994c03Steve Block//#define LOG_API ALOGE 46d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define LOG_API(...) 47d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 48d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android; 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 50414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines#define PER_ARRAY_TYPE(flag, fnc, readonly, ...) { \ 51e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams jint len = 0; \ 52e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams void *ptr = NULL; \ 5321659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams size_t typeBytes = 0; \ 54414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines jint relFlag = 0; \ 55414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines if (readonly) { \ 56414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines /* The on-release mode should only be JNI_ABORT for read-only accesses. */ \ 57414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines relFlag = JNI_ABORT; \ 58414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines } \ 59e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams switch(dataType) { \ 60e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_FLOAT_32: \ 61e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams len = _env->GetArrayLength((jfloatArray)data); \ 62e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams ptr = _env->GetFloatArrayElements((jfloatArray)data, flag); \ 6321659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams typeBytes = 4; \ 64e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams fnc(__VA_ARGS__); \ 65414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines _env->ReleaseFloatArrayElements((jfloatArray)data, (jfloat *)ptr, relFlag); \ 66e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams return; \ 67e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_FLOAT_64: \ 68e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams len = _env->GetArrayLength((jdoubleArray)data); \ 69e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams ptr = _env->GetDoubleArrayElements((jdoubleArray)data, flag); \ 7021659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams typeBytes = 8; \ 71e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams fnc(__VA_ARGS__); \ 72414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines _env->ReleaseDoubleArrayElements((jdoubleArray)data, (jdouble *)ptr, relFlag); \ 73e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams return; \ 74e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_SIGNED_8: \ 75e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_UNSIGNED_8: \ 76e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams len = _env->GetArrayLength((jbyteArray)data); \ 77e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams ptr = _env->GetByteArrayElements((jbyteArray)data, flag); \ 7821659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams typeBytes = 1; \ 79e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams fnc(__VA_ARGS__); \ 80414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines _env->ReleaseByteArrayElements((jbyteArray)data, (jbyte*)ptr, relFlag); \ 81e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams return; \ 82e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_SIGNED_16: \ 83e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_UNSIGNED_16: \ 84e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams len = _env->GetArrayLength((jshortArray)data); \ 85e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams ptr = _env->GetShortArrayElements((jshortArray)data, flag); \ 8621659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams typeBytes = 2; \ 87e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams fnc(__VA_ARGS__); \ 88414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines _env->ReleaseShortArrayElements((jshortArray)data, (jshort *)ptr, relFlag); \ 89e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams return; \ 90e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_SIGNED_32: \ 91e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_UNSIGNED_32: \ 92e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams len = _env->GetArrayLength((jintArray)data); \ 93e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams ptr = _env->GetIntArrayElements((jintArray)data, flag); \ 9421659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams typeBytes = 4; \ 95e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams fnc(__VA_ARGS__); \ 96414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines _env->ReleaseIntArrayElements((jintArray)data, (jint *)ptr, relFlag); \ 97e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams return; \ 98e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_SIGNED_64: \ 99e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams case RS_TYPE_UNSIGNED_64: \ 100e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams len = _env->GetArrayLength((jlongArray)data); \ 101e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams ptr = _env->GetLongArrayElements((jlongArray)data, flag); \ 10221659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams typeBytes = 8; \ 103e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams fnc(__VA_ARGS__); \ 104414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines _env->ReleaseLongArrayElements((jlongArray)data, (jlong *)ptr, relFlag); \ 105e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams return; \ 106e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams default: \ 107e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams break; \ 108e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams } \ 109e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams} 110e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams 111e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams 112b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukclass AutoJavaStringToUTF8 { 113b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukpublic: 1142123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringToUTF8(JNIEnv* env, jstring str) : fEnv(env), fJStr(str) { 115b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fCStr = env->GetStringUTFChars(str, NULL); 116b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fLength = env->GetStringUTFLength(str); 117b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 1182123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk ~AutoJavaStringToUTF8() { 119b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fEnv->ReleaseStringUTFChars(fJStr, fCStr); 120b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 121b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* c_str() const { return fCStr; } 122b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize length() const { return fLength; } 123b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 124b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukprivate: 125b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk JNIEnv* fEnv; 126b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fJStr; 127b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* fCStr; 128b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize fLength; 129b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk}; 130b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 1312123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchoukclass AutoJavaStringArrayToUTF8 { 1322123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchoukpublic: 1332123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8(JNIEnv* env, jobjectArray strings, jsize stringsLength) 1342123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk : mEnv(env), mStrings(strings), mStringsLength(stringsLength) { 1352123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mCStrings = NULL; 1362123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mSizeArray = NULL; 1372123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk if (stringsLength > 0) { 1382123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mCStrings = (const char **)calloc(stringsLength, sizeof(char *)); 1392123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mSizeArray = (size_t*)calloc(stringsLength, sizeof(size_t)); 1402123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk for (jsize ct = 0; ct < stringsLength; ct ++) { 1412123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct); 1422123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mCStrings[ct] = mEnv->GetStringUTFChars(s, NULL); 1432123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mSizeArray[ct] = mEnv->GetStringUTFLength(s); 1442123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 1452123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 1462123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 1472123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk ~AutoJavaStringArrayToUTF8() { 1482123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk for (jsize ct=0; ct < mStringsLength; ct++) { 1492123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct); 1502123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mEnv->ReleaseStringUTFChars(s, mCStrings[ct]); 1512123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 1522123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk free(mCStrings); 1532123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk free(mSizeArray); 1542123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 1552123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char **c_str() const { return mCStrings; } 1562123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t *c_str_len() const { return mSizeArray; } 1572123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jsize length() const { return mStringsLength; } 1582123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 1592123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchoukprivate: 1602123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk JNIEnv *mEnv; 1612123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jobjectArray mStrings; 1622123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char **mCStrings; 1632123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t *mSizeArray; 1642123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jsize mStringsLength; 1652123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk}; 1662123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 167d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 168d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 169ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gContextId = 0; 170ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gNativeBitmapID = 0; 17143ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic jfieldID gTypeNativeCache = 0; 172d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 173d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void _nInit(JNIEnv *_env, jclass _this) 174d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 175eff663f391fa4f119685d5c14489b94661ea126fTim Murray gContextId = _env->GetFieldID(_this, "mContext", "J"); 176ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 177ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); 17836bef0bf30d6bae48cf3837df351075ca4fce654Ashok Bhat gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "J"); 179d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 180d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 181d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 182d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1833eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsstatic void 184eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextFinish(JNIEnv *_env, jobject _this, jlong con) 18596ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams{ 18671a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextFinish, con(%p)", (RsContext)con); 187eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextFinish((RsContext)con); 18896ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams} 18996ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 19096ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Samsstatic void 191460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAssignName(JNIEnv *_env, jobject _this, jlong con, jlong obj, jbyteArray str) 1923eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{ 19371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAssignName, con(%p), obj(%p)", (RsContext)con, (void *)obj); 1943eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jint len = _env->GetArrayLength(str); 1953eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 196eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsAssignName((RsContext)con, (void *)obj, (const char *)cptr, len); 1973eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 1983eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams} 1993eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 200fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchoukstatic jstring 201460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynGetName(JNIEnv *_env, jobject _this, jlong con, jlong obj) 202fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk{ 20371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nGetName, con(%p), obj(%p)", (RsContext)con, (void *)obj); 204fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk const char *name = NULL; 205eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaGetName((RsContext)con, (void *)obj, &name); 206581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk if(name == NULL || strlen(name) == 0) { 207581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return NULL; 208581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk } 209fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk return _env->NewStringUTF(name); 210fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk} 211fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk 2127ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 213460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynObjDestroy(JNIEnv *_env, jobject _this, jlong con, jlong obj) 2147ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 21571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nObjDestroy, con(%p) obj(%p)", (RsContext)con, (void *)obj); 216eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsObjDestroy((RsContext)con, (void *)obj); 2177ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 2187ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 2193eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 2203eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 221eff663f391fa4f119685d5c14489b94661ea126fTim Murraystatic jlong 222d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 223d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 224d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 2253aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsDeviceCreate(); 226d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 227d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 228d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2295eaf468434e96bc7c8d4cfeb138699a1c7b256caTim MurraynDeviceDestroy(JNIEnv *_env, jobject _this, jlong dev) 230d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 231d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 232d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 233d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 234d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 235ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 2365eaf468434e96bc7c8d4cfeb138699a1c7b256caTim MurraynDeviceSetConfig(JNIEnv *_env, jobject _this, jlong dev, jint p, jint value) 237ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 238ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value); 239ebfb436a49673693b98469683451bd9ede797557Jason Sams return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value); 240ebfb436a49673693b98469683451bd9ede797557Jason Sams} 241ebfb436a49673693b98469683451bd9ede797557Jason Sams 242eff663f391fa4f119685d5c14489b94661ea126fTim Murraystatic jlong 243bb7e86ff0478ef9ea2e35065bfcb2d6e9ffa9292Jason SamsnContextCreate(JNIEnv *_env, jobject _this, jlong dev, jint flags, jint sdkVer, jint contextType) 244d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 245d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 246bb7e86ff0478ef9ea2e35065bfcb2d6e9ffa9292Jason Sams return (jlong)(uintptr_t)rsContextCreate((RsDevice)dev, 0, sdkVer, (RsContextType)contextType, flags); 247704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 248704ff64b099406bb328898a7443921f22dbffd6dJason Sams 249eff663f391fa4f119685d5c14489b94661ea126fTim Murraystatic jlong 2505eaf468434e96bc7c8d4cfeb138699a1c7b256caTim MurraynContextCreateGL(JNIEnv *_env, jobject _this, jlong dev, jint ver, jint sdkVer, 2510e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jint colorMin, jint colorPref, 2520e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jint alphaMin, jint alphaPref, 2530e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jint depthMin, jint depthPref, 2540e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jint stencilMin, jint stencilPref, 2550e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jint samplesMin, jint samplesPref, jfloat samplesQ, 2560e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jint dpi) 25711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams{ 25811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams RsSurfaceConfig sc; 25911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaMin = alphaMin; 26011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaPref = alphaPref; 26111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorMin = colorMin; 26211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorPref = colorPref; 26311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthMin = depthMin; 26411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthPref = depthPref; 26511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesMin = samplesMin; 26611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesPref = samplesPref; 26711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesQ = samplesQ; 26811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams 269704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nContextCreateGL"); 2703aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsContextCreateGL((RsDevice)dev, ver, sdkVer, sc, dpi); 271d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 272d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 273d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 274eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextSetPriority(JNIEnv *_env, jobject _this, jlong con, jint p) 2757d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{ 27671a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("ContextSetPriority, con(%p), priority(%i)", (RsContext)con, p); 277eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextSetPriority((RsContext)con, p); 2787d787b4722eaeb79cab42c36060336e092b77b5fJason Sams} 2797d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 2807d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 2817d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 2827d787b4722eaeb79cab42c36060336e092b77b5fJason Samsstatic void 283eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextSetSurface(JNIEnv *_env, jobject _this, jlong con, jint width, jint height, jobject wnd) 284efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 28571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", (RsContext)con, width, height, (Surface *)wnd); 286efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 2876c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk ANativeWindow * window = NULL; 288efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 289efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 290efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 29164a55af0ac700baecb0877235eb42caac59a3560Jeff Brown window = android_view_Surface_getNativeWindow(_env, wnd).get(); 292efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 293efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 294eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextSetSurface((RsContext)con, width, height, window); 295efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 296efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 297efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 298eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextDestroy(JNIEnv *_env, jobject _this, jlong con) 299d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 30071a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextDestroy, con(%p)", (RsContext)con); 301eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextDestroy((RsContext)con); 302d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 303d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 304715333b832fb448c32165c7d97d408a3fa43f7cbJason Samsstatic void 305eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextDump(JNIEnv *_env, jobject _this, jlong con, jint bits) 306715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{ 307715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits); 308715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDump((RsContext)con, bits); 309715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams} 310d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 311d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 312eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextPause(JNIEnv *_env, jobject _this, jlong con) 31365e7aa56f56097418d617663683544c25b3988eaJason Sams{ 31471a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextPause, con(%p)", (RsContext)con); 315eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextPause((RsContext)con); 31665e7aa56f56097418d617663683544c25b3988eaJason Sams} 31765e7aa56f56097418d617663683544c25b3988eaJason Sams 31865e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 319eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextResume(JNIEnv *_env, jobject _this, jlong con) 32065e7aa56f56097418d617663683544c25b3988eaJason Sams{ 32171a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextResume, con(%p)", (RsContext)con); 322eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextResume((RsContext)con); 32365e7aa56f56097418d617663683544c25b3988eaJason Sams} 32465e7aa56f56097418d617663683544c25b3988eaJason Sams 3251c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 3261c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jstring 327eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextGetErrorMessage(JNIEnv *_env, jobject _this, jlong con) 3281c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 32971a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextGetErrorMessage, con(%p)", (RsContext)con); 3301c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams char buf[1024]; 3311c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 3321c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 3331c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 334eff663f391fa4f119685d5c14489b94661ea126fTim Murray int id = rsContextGetMessage((RsContext)con, 33565bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams buf, sizeof(buf), 33665bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 337edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 3381c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (!id && receiveLen) { 33971f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("message receive buffer too small. %i", receiveLen); 3401c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 3411c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams return _env->NewStringUTF(buf); 3421c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 3431c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 344edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Samsstatic jint 345eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextGetUserMessage(JNIEnv *_env, jobject _this, jlong con, jintArray data) 346516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 347516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 34871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextGetMessage, con(%p), len(%i)", (RsContext)con, len); 349516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 350516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 3511c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 352eff663f391fa4f119685d5c14489b94661ea126fTim Murray int id = rsContextGetMessage((RsContext)con, 35365bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, len * 4, 35465bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 355edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 356516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 35771f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("message receive buffer too small. %i", receiveLen); 358516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 359516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 3600e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat return (jint)id; 3611c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 3621c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 3631c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jint 364eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextPeekMessage(JNIEnv *_env, jobject _this, jlong con, jintArray auxData) 3651c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 36671a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextPeekMessage, con(%p)", (RsContext)con); 3671c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); 3681c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 3691c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 370eff663f391fa4f119685d5c14489b94661ea126fTim Murray int id = rsContextPeekMessage((RsContext)con, &receiveLen, sizeof(receiveLen), 371edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 3721c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[0] = (jint)subID; 3731c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[1] = (jint)receiveLen; 3741c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); 3750e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat return (jint)id; 376516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 377516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 378eff663f391fa4f119685d5c14489b94661ea126fTim Murraystatic void nContextInitToClient(JNIEnv *_env, jobject _this, jlong con) 379516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 38071a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextInitToClient, con(%p)", (RsContext)con); 381eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextInitToClient((RsContext)con); 382516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 383516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 384eff663f391fa4f119685d5c14489b94661ea126fTim Murraystatic void nContextDeinitToClient(JNIEnv *_env, jobject _this, jlong con) 385516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 38671a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextDeinitToClient, con(%p)", (RsContext)con); 387eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextDeinitToClient((RsContext)con); 388516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 389516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 390455d64426615e5d269a3bd05cd91b67c3811fcdfJason Samsstatic void 391eff663f391fa4f119685d5c14489b94661ea126fTim MurraynContextSendMessage(JNIEnv *_env, jobject _this, jlong con, jint id, jintArray data) 392455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams{ 393455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams jint *ptr = NULL; 394455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams jint len = 0; 395455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams if (data) { 396455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams len = _env->GetArrayLength(data); 397a0eabfbc413cf6ee0659ac19243efc5ba2d0f733Stephen Hines ptr = _env->GetIntArrayElements(data, NULL); 398455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams } 39971a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextSendMessage, con(%p), id(%i), len(%i)", (RsContext)con, id, len); 400eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextSendMessage((RsContext)con, id, (const uint8_t *)ptr, len * sizeof(int)); 401455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams if (data) { 402455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 403455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams } 404455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams} 405455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams 406455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams 407516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 408460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 409460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynElementCreate(JNIEnv *_env, jobject _this, jlong con, jlong type, jint kind, jboolean norm, jint size) 410d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 41171a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", (RsContext)con, type, kind, norm, size); 4123aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsElementCreate((RsContext)con, (RsDataType)type, (RsDataKind)kind, norm, size); 413d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 414d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 415460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 416eff663f391fa4f119685d5c14489b94661ea126fTim MurraynElementCreate2(JNIEnv *_env, jobject _this, jlong con, 4179807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlongArray _ids, jobjectArray _names, jintArray _arraySizes) 418d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 419718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams int fieldCount = _env->GetArrayLength(_ids); 42071a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nElementCreate2, con(%p)", (RsContext)con); 421718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 4229807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jIds = _env->GetLongArrayElements(_ids, NULL); 4239807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jint *jArraySizes = _env->GetIntArrayElements(_arraySizes, NULL); 4249807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 4259807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat RsElement *ids = (RsElement*)malloc(fieldCount * sizeof(RsElement)); 4269807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat uint32_t *arraySizes = (uint32_t *)malloc(fieldCount * sizeof(uint32_t)); 4279807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 4289807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < fieldCount; i ++) { 4299807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat ids[i] = (RsElement)jIds[i]; 4309807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat arraySizes[i] = (uint32_t)jArraySizes[i]; 4319807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 432718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 4332123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8 names(_env, _names, fieldCount); 4342123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 4352123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char **nameArray = names.c_str(); 4362123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t *sizeArray = names.c_str_len(); 4372123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 4383aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsElementCreate2((RsContext)con, 4399807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat (const RsElement *)ids, fieldCount, 4407a22e107d100caea2a661ec73e4525d69f0f9759Jason Sams nameArray, fieldCount * sizeof(size_t), sizeArray, 441e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk (const uint32_t *)arraySizes, fieldCount); 4422123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 4439807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(ids); 4449807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(arraySizes); 4459807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(_ids, jIds, JNI_ABORT); 4469807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseIntArrayElements(_arraySizes, jArraySizes, JNI_ABORT); 4479807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 4483aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)id; 449d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 450d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 451dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 452460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynElementGetNativeData(JNIEnv *_env, jobject _this, jlong con, jlong id, jintArray _elementData) 453dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 454dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_elementData); 45571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nElementGetNativeData, con(%p)", (RsContext)con); 456dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 457dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements 458dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(dataSize == 5); 459dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 46078c0ce56129d8109fa2427de769f4d25a971d162Narayan Kamath uintptr_t elementData[5]; 461eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaElementGetNativeData((RsContext)con, (RsElement)id, elementData, dataSize); 462dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 463dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < dataSize; i ++) { 4649807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat const jint data = (jint)elementData[i]; 4659807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->SetIntArrayRegion(_elementData, i, 1, &data); 466dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 467dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 468dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 469dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 470dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 471460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynElementGetSubElements(JNIEnv *_env, jobject _this, jlong con, jlong id, 4729807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlongArray _IDs, 4737d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk jobjectArray _names, 4747d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk jintArray _arraySizes) 475dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 4769807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat uint32_t dataSize = _env->GetArrayLength(_IDs); 47771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nElementGetSubElements, con(%p)", (RsContext)con); 478dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 4799807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat uintptr_t *ids = (uintptr_t*)malloc(dataSize * sizeof(uintptr_t)); 4809807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat const char **names = (const char **)malloc(dataSize * sizeof(const char *)); 48178c0ce56129d8109fa2427de769f4d25a971d162Narayan Kamath uint32_t *arraySizes = (uint32_t *)malloc(dataSize * sizeof(uint32_t)); 482dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 483eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaElementGetSubElements((RsContext)con, (RsElement)id, ids, names, arraySizes, (uint32_t)dataSize); 484dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 4859807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(uint32_t i = 0; i < dataSize; i++) { 4863aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray const jlong id = (jlong)(uintptr_t)ids[i]; 4879807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat const jint arraySize = (jint)arraySizes[i]; 488dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i])); 4899807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->SetLongArrayRegion(_IDs, i, 1, &id); 4909807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->SetIntArrayRegion(_arraySizes, i, 1, &arraySize); 491dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 492dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 493dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(ids); 494dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(names); 4957d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk free(arraySizes); 496dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 497dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 498d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 499d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 500460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 501460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynTypeCreate(JNIEnv *_env, jobject _this, jlong con, jlong eid, 502b109cc78616abee7291eb42094cd156b5db3355dJason Sams jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces, jint yuv) 503d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 504b109cc78616abee7291eb42094cd156b5db3355dJason Sams LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i), yuv(%i)", 50571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray (RsContext)con, eid, dimx, dimy, dimz, mips, faces, yuv); 5063b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams 5073aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsTypeCreate((RsContext)con, (RsElement)eid, dimx, dimy, dimz, mips, faces, yuv); 508d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 509d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 510dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 5119807155b11a25fb6068edc9b1cd82928ac2f05deAshok BhatnTypeGetNativeData(JNIEnv *_env, jobject _this, jlong con, jlong id, jlongArray _typeData) 512dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 513dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // We are packing 6 items: mDimX; mDimY; mDimZ; 514dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // mDimLOD; mDimFaces; mElement; into typeData 515dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int elementCount = _env->GetArrayLength(_typeData); 516dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 517dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(elementCount == 6); 5180e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat LOG_API("nTypeGetNativeData, con(%p)", (RsContext)con); 519dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 5209807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat uintptr_t typeData[6]; 521eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaTypeGetNativeData((RsContext)con, (RsType)id, typeData, 6); 522dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 523dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < elementCount; i ++) { 5243aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray const jlong data = (jlong)(uintptr_t)typeData[i]; 5259807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->SetLongArrayRegion(_typeData, i, 1, &data); 526dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 527dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 528dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 529d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 530d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 531460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 5329807155b11a25fb6068edc9b1cd82928ac2f05deAshok BhatnAllocationCreateTyped(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mips, jint usage, jlong pointer) 533d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 53471a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationCreateTyped, con(%p), type(%p), mip(%i), usage(%i), ptr(%p)", (RsContext)con, (RsElement)type, mips, usage, (void *)pointer); 5353aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t) rsAllocationCreateTyped((RsContext)con, (RsType)type, (RsAllocationMipmapControl)mips, (uint32_t)usage, (uintptr_t)pointer); 536d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 537d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 538d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 539460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationSyncAll(JNIEnv *_env, jobject _this, jlong con, jlong a, jint bits) 5405476b450e50939940dcf3f15c92335cee2fc572dJason Sams{ 54171a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationSyncAll, con(%p), a(%p), bits(0x%08x)", (RsContext)con, (RsAllocation)a, bits); 542eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsAllocationSyncAll((RsContext)con, (RsAllocation)a, (RsAllocationUsageType)bits); 5435476b450e50939940dcf3f15c92335cee2fc572dJason Sams} 5445476b450e50939940dcf3f15c92335cee2fc572dJason Sams 54572226e0543461133b9e177a3e78ae50b0c65e797Jason Samsstatic jobject 546460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationGetSurface(JNIEnv *_env, jobject _this, jlong con, jlong a) 547615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams{ 54871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationGetSurface, con(%p), a(%p)", (RsContext)con, (RsAllocation)a); 549615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams 550eff663f391fa4f119685d5c14489b94661ea126fTim Murray IGraphicBufferProducer *v = (IGraphicBufferProducer *)rsAllocationGetSurface((RsContext)con, (RsAllocation)a); 55172226e0543461133b9e177a3e78ae50b0c65e797Jason Sams sp<IGraphicBufferProducer> bp = v; 55272226e0543461133b9e177a3e78ae50b0c65e797Jason Sams v->decStrong(NULL); 553fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams 55472226e0543461133b9e177a3e78ae50b0c65e797Jason Sams jobject o = android_view_Surface_createFromIGraphicBufferProducer(_env, bp); 55572226e0543461133b9e177a3e78ae50b0c65e797Jason Sams return o; 556fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams} 557fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams 558fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Samsstatic void 559460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationSetSurface(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobject sur) 560163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams{ 56106883b71d0b75eee255b292ba66684eddc5fb172Stephen Hines LOG_API("nAllocationSetSurface, con(%p), alloc(%p), surface(%p)", 56271a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray (RsContext)con, (RsAllocation)alloc, (Surface *)sur); 563163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 564fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams sp<Surface> s; 565163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams if (sur != 0) { 56664a55af0ac700baecb0877235eb42caac59a3560Jeff Brown s = android_view_Surface_getSurface(_env, sur); 567163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams } 568163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 569460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray rsAllocationSetSurface((RsContext)con, (RsAllocation)alloc, static_cast<ANativeWindow *>(s.get())); 570163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams} 571163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 572163766cbe798baf8e86eb8201bc6c3def931d59aJason Samsstatic void 573460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationIoSend(JNIEnv *_env, jobject _this, jlong con, jlong alloc) 574163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams{ 57571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationIoSend, con(%p), alloc(%p)", (RsContext)con, alloc); 576460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray rsAllocationIoSend((RsContext)con, (RsAllocation)alloc); 577163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams} 578163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 579163766cbe798baf8e86eb8201bc6c3def931d59aJason Samsstatic void 580460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationIoReceive(JNIEnv *_env, jobject _this, jlong con, jlong alloc) 581163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams{ 58271a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationIoReceive, con(%p), alloc(%p)", (RsContext)con, alloc); 583460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray rsAllocationIoReceive((RsContext)con, (RsAllocation)alloc); 584163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams} 585163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 586163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 587163766cbe798baf8e86eb8201bc6c3def931d59aJason Samsstatic void 588460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationGenerateMipmaps(JNIEnv *_env, jobject _this, jlong con, jlong alloc) 589f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams{ 59071a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationGenerateMipmaps, con(%p), a(%p)", (RsContext)con, (RsAllocation)alloc); 591eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsAllocationGenerateMipmaps((RsContext)con, (RsAllocation)alloc); 592f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams} 593f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams 594460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 595460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mip, jobject jbitmap, jint usage) 596fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 597ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 59836bef0bf30d6bae48cf3837df351075ca4fce654Ashok Bhat (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID); 599ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 600fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 6015476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 6025476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 6033aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsAllocationCreateFromBitmap((RsContext)con, 60465bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 60565bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 6065476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 6075476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 608ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 609fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 610460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 611460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationCreateBitmapBackedAllocation(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mip, jobject jbitmap, jint usage) 612a314551d69098537337c970da615a8f8af58e1f1Tim Murray{ 613a314551d69098537337c970da615a8f8af58e1f1Tim Murray SkBitmap const * nativeBitmap = 61436bef0bf30d6bae48cf3837df351075ca4fce654Ashok Bhat (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID); 615a314551d69098537337c970da615a8f8af58e1f1Tim Murray const SkBitmap& bitmap(*nativeBitmap); 616a314551d69098537337c970da615a8f8af58e1f1Tim Murray 617a314551d69098537337c970da615a8f8af58e1f1Tim Murray bitmap.lockPixels(); 618a314551d69098537337c970da615a8f8af58e1f1Tim Murray const void* ptr = bitmap.getPixels(); 6193aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsAllocationCreateTyped((RsContext)con, 620a314551d69098537337c970da615a8f8af58e1f1Tim Murray (RsType)type, (RsAllocationMipmapControl)mip, 6219807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat (uint32_t)usage, (uintptr_t)ptr); 622a314551d69098537337c970da615a8f8af58e1f1Tim Murray bitmap.unlockPixels(); 623a314551d69098537337c970da615a8f8af58e1f1Tim Murray return id; 624a314551d69098537337c970da615a8f8af58e1f1Tim Murray} 625a314551d69098537337c970da615a8f8af58e1f1Tim Murray 626460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 627460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mip, jobject jbitmap, jint usage) 62867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk{ 62967f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk SkBitmap const * nativeBitmap = 63036bef0bf30d6bae48cf3837df351075ca4fce654Ashok Bhat (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID); 63167f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 63267f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 6335476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 6345476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 6353aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsAllocationCubeCreateFromBitmap((RsContext)con, 63665bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 63765bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 6385476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 6395476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 64067f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk} 64167f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 64226ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchoukstatic void 643460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationCopyFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobject jbitmap) 64426ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk{ 64526ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk SkBitmap const * nativeBitmap = 64636bef0bf30d6bae48cf3837df351075ca4fce654Ashok Bhat (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID); 64726ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 648f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int w = bitmap.width(); 649f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int h = bitmap.height(); 65026ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk 6514ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 6524ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const void* ptr = bitmap.getPixels(); 653eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsAllocation2DData((RsContext)con, (RsAllocation)alloc, 0, 0, 654304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, 65538faea3019b8aa68c25ec7bac3e17964524dad12Tim Murray w, h, ptr, bitmap.getSize(), 0); 6564ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 6578a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 6588a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 6594ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void 660460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationCopyToBitmap(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobject jbitmap) 6618a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 6624ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = 66336bef0bf30d6bae48cf3837df351075ca4fce654Ashok Bhat (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID); 6644ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const SkBitmap& bitmap(*nativeBitmap); 6658a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 6664ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 6674ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams void* ptr = bitmap.getPixels(); 668eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsAllocationCopyToBitmap((RsContext)con, (RsAllocation)alloc, ptr, bitmap.getSize()); 6694ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 670835b8544cc333ef87e42b1d71cf8ad3cddccdc19Alex Sakhartchouk bitmap.notifyPixelsChanged(); 6718a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 6728a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 6734ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void ReleaseBitmapCallback(void *bmp) 674650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 6754ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; 6764ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams nativeBitmap->unlockPixels(); 677650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 678650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 6794ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 680414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// Copies from the Java object data into the Allocation pointed to by _alloc. 681d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 682460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationData1D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint offset, jint lod, 6830e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jint count, jobject data, jint sizeBytes, jint dataType) 684d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 685e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams RsAllocation *alloc = (RsAllocation *)_alloc; 68671a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocation1DData, con(%p), adapter(%p), offset(%i), count(%i), sizeBytes(%i), dataType(%i)", 68771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray (RsContext)con, (RsAllocation)alloc, offset, count, sizeBytes, dataType); 688414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines PER_ARRAY_TYPE(NULL, rsAllocation1DData, true, (RsContext)con, alloc, offset, lod, count, ptr, sizeBytes); 689d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 690d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 691414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// Copies from the Java array data into the Allocation pointed to by alloc. 692d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6930e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat// native void rsnAllocationElementData1D(long con, long id, int xoff, int compIdx, byte[] d, int sizeBytes); 6940e0c0885aed99a119052a792becb5a0c5a93632dAshok BhatnAllocationElementData1D(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jint offset, jint lod, jint compIdx, jbyteArray data, jint sizeBytes) 69549bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{ 69649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jint len = _env->GetArrayLength(data); 69771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", (RsContext)con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); 69849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 699eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsAllocation1DElementData((RsContext)con, (RsAllocation)alloc, offset, lod, ptr, sizeBytes, compIdx); 70049bdaf0293408159df18a1d8540360f9623c40f7Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 70149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams} 70249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 703414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// Copies from the Java object data into the Allocation pointed to by _alloc. 70449bdaf0293408159df18a1d8540360f9623c40f7Jason Samsstatic void 705460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationData2D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint lod, jint _face, 7060e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jint w, jint h, jobject data, jint sizeBytes, jint dataType) 707d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 708e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams RsAllocation *alloc = (RsAllocation *)_alloc; 709e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams RsAllocationCubemapFace face = (RsAllocationCubemapFace)_face; 710e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams LOG_API("nAllocation2DData, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i) type(%i)", 71171a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray (RsContext)con, alloc, xoff, yoff, w, h, sizeBytes, dataType); 712414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines PER_ARRAY_TYPE(NULL, rsAllocation2DData, true, (RsContext)con, alloc, xoff, yoff, lod, face, w, h, ptr, sizeBytes, 0); 713d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 714d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 715414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// Copies from the Allocation pointed to by srcAlloc into the Allocation 716414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// pointed to by dstAlloc. 71740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 718eff663f391fa4f119685d5c14489b94661ea126fTim MurraynAllocationData2D_alloc(JNIEnv *_env, jobject _this, jlong con, 719460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray jlong dstAlloc, jint dstXoff, jint dstYoff, 720304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint dstMip, jint dstFace, 721304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint width, jint height, 722460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray jlong srcAlloc, jint srcXoff, jint srcYoff, 723304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint srcMip, jint srcFace) 724304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk{ 7254c2e4c80ce519e09e5b00fd7533e64a834d70639Jason Sams LOG_API("nAllocation2DData_s, con(%p), dstAlloc(%p), dstXoff(%i), dstYoff(%i)," 726304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " dstMip(%i), dstFace(%i), width(%i), height(%i)," 727304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i), srcFace(%i)", 72871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray (RsContext)con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, dstFace, 729304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip, srcFace); 730304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 731eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsAllocationCopy2DRange((RsContext)con, 732304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)dstAlloc, 733304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstXoff, dstYoff, 734304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstMip, dstFace, 735304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, 736304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)srcAlloc, 737304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcXoff, srcYoff, 738304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcMip, srcFace); 739304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk} 740304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 741414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// Copies from the Java object data into the Allocation pointed to by _alloc. 742304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchoukstatic void 743460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationData3D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint zoff, jint lod, 744e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams jint w, jint h, jint d, jobject data, int sizeBytes, int dataType) 745b05d689653b1bc94836f716f29e9578677c29075Jason Sams{ 746e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams RsAllocation *alloc = (RsAllocation *)_alloc; 747e729a9400f3ed2234a95a53aadb3420b76436d63Jason Sams LOG_API("nAllocation3DData, con(%p), alloc(%p), xoff(%i), yoff(%i), zoff(%i), lod(%i), w(%i), h(%i), d(%i), sizeBytes(%i)", 74871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray (RsContext)con, (RsAllocation)alloc, xoff, yoff, zoff, lod, w, h, d, sizeBytes); 749414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines PER_ARRAY_TYPE(NULL, rsAllocation3DData, true, (RsContext)con, alloc, xoff, yoff, zoff, lod, w, h, d, ptr, sizeBytes, 0); 750b05d689653b1bc94836f716f29e9578677c29075Jason Sams} 751b05d689653b1bc94836f716f29e9578677c29075Jason Sams 752414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// Copies from the Allocation pointed to by srcAlloc into the Allocation 753414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// pointed to by dstAlloc. 754b05d689653b1bc94836f716f29e9578677c29075Jason Samsstatic void 755eff663f391fa4f119685d5c14489b94661ea126fTim MurraynAllocationData3D_alloc(JNIEnv *_env, jobject _this, jlong con, 756460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray jlong dstAlloc, jint dstXoff, jint dstYoff, jint dstZoff, 757b05d689653b1bc94836f716f29e9578677c29075Jason Sams jint dstMip, 758b05d689653b1bc94836f716f29e9578677c29075Jason Sams jint width, jint height, jint depth, 759460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray jlong srcAlloc, jint srcXoff, jint srcYoff, jint srcZoff, 760b05d689653b1bc94836f716f29e9578677c29075Jason Sams jint srcMip) 761b05d689653b1bc94836f716f29e9578677c29075Jason Sams{ 762b05d689653b1bc94836f716f29e9578677c29075Jason Sams LOG_API("nAllocationData3D_alloc, con(%p), dstAlloc(%p), dstXoff(%i), dstYoff(%i)," 763b05d689653b1bc94836f716f29e9578677c29075Jason Sams " dstMip(%i), width(%i), height(%i)," 764b05d689653b1bc94836f716f29e9578677c29075Jason Sams " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i)", 76571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray (RsContext)con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, 76671a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip); 767b05d689653b1bc94836f716f29e9578677c29075Jason Sams 768eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsAllocationCopy3DRange((RsContext)con, 769b05d689653b1bc94836f716f29e9578677c29075Jason Sams (RsAllocation)dstAlloc, 770b05d689653b1bc94836f716f29e9578677c29075Jason Sams dstXoff, dstYoff, dstZoff, dstMip, 771b05d689653b1bc94836f716f29e9578677c29075Jason Sams width, height, depth, 772b05d689653b1bc94836f716f29e9578677c29075Jason Sams (RsAllocation)srcAlloc, 773b05d689653b1bc94836f716f29e9578677c29075Jason Sams srcXoff, srcYoff, srcZoff, srcMip); 774b05d689653b1bc94836f716f29e9578677c29075Jason Sams} 775b05d689653b1bc94836f716f29e9578677c29075Jason Sams 77640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 777414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// Copies from the Allocation pointed to by _alloc into the Java object data. 77840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 779460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationRead(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jobject data, int dataType) 780fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 78121659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams RsAllocation *alloc = (RsAllocation *)_alloc; 78271a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationRead, con(%p), alloc(%p)", (RsContext)con, (RsAllocation)alloc); 783414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines PER_ARRAY_TYPE(0, rsAllocationRead, false, (RsContext)con, alloc, ptr, len * typeBytes); 784fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 785fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 786414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// Copies from the Allocation pointed to by _alloc into the Java object data. 787fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 788460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationRead1D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint offset, jint lod, 78921659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams jint count, jobject data, int sizeBytes, int dataType) 790fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 79121659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams RsAllocation *alloc = (RsAllocation *)_alloc; 79271a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocation1DRead, con(%p), adapter(%p), offset(%i), count(%i), sizeBytes(%i), dataType(%i)", 79371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray (RsContext)con, alloc, offset, count, sizeBytes, dataType); 794414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines PER_ARRAY_TYPE(0, rsAllocation1DRead, false, (RsContext)con, alloc, offset, lod, count, ptr, sizeBytes); 795fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 796fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 797414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines// Copies from the Allocation pointed to by _alloc into the Java object data. 798fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 799460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationRead2D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint lod, jint _face, 80021659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams jint w, jint h, jobject data, int sizeBytes, int dataType) 80140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 80221659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams RsAllocation *alloc = (RsAllocation *)_alloc; 80321659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams RsAllocationCubemapFace face = (RsAllocationCubemapFace)_face; 80421659ac4c83d272f3ffd2f9b6333acbe5f0b02a1Jason Sams LOG_API("nAllocation2DRead, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i) type(%i)", 80571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray (RsContext)con, alloc, xoff, yoff, w, h, sizeBytes, dataType); 806414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines PER_ARRAY_TYPE(0, rsAllocation2DRead, false, (RsContext)con, alloc, xoff, yoff, lod, face, w, h, ptr, sizeBytes, 0); 80740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 808d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 809460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 810460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationGetType(JNIEnv *_env, jobject _this, jlong con, jlong a) 811dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 81271a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationGetType, con(%p), a(%p)", (RsContext)con, (RsAllocation)a); 8133aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t) rsaAllocationGetType((RsContext)con, (RsAllocation)a); 814dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 815dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 8165edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 817460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynAllocationResize1D(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jint dimX) 8185edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 81971a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", (RsContext)con, (RsAllocation)alloc, dimX); 820eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsAllocationResize1D((RsContext)con, (RsAllocation)alloc, dimX); 8215edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 8225edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 823aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk// ----------------------------------- 824aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 825460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 826460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, jlong con, jlong native_asset) 827aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 828aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 8290e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat ALOGV("______nFileA3D %p", asset); 830aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 8313aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsaFileA3DCreateFromMemory((RsContext)con, asset->getBuffer(false), asset->getLength()); 832b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 833b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 834b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 835460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 836eff663f391fa4f119685d5c14489b94661ea126fTim MurraynFileA3DCreateFromAsset(JNIEnv *_env, jobject _this, jlong con, jobject _assetMgr, jstring _path) 837b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 838b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 839b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 840b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 841b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 842b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 843b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 844b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 845b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 846b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 847b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 848b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 8493aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsaFileA3DCreateFromAsset((RsContext)con, asset); 850b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 851b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 852b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 853460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 854eff663f391fa4f119685d5c14489b94661ea126fTim MurraynFileA3DCreateFromFile(JNIEnv *_env, jobject _this, jlong con, jstring fileName) 855b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 856b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 8573aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsaFileA3DCreateFromFile((RsContext)con, fileNameUTF.c_str()); 858b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 859aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 860aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 861aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 862460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jint 863460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, jlong con, jlong fileA3D) 864aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 865aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk int32_t numEntries = 0; 866eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaFileA3DGetNumIndexEntries((RsContext)con, &numEntries, (RsFile)fileA3D); 8670e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat return (jint)numEntries; 868aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 869aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 870aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic void 871460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, jlong con, jlong fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries) 872aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 8730e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat ALOGV("______nFileA3D %p", (RsFile) fileA3D); 874aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry)); 875aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 876eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaFileA3DGetIndexEntries((RsContext)con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D); 877aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 878aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk for(jint i = 0; i < numEntries; i ++) { 879aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName)); 880aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID); 881aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk } 882aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 883aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk free(fileEntries); 884aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 885aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 8860e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhatstatic jlong 887460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, jlong con, jlong fileA3D, jint index) 888aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 8890e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat ALOGV("______nFileA3D %p", (RsFile) fileA3D); 8903aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsaFileA3DGetEntryByIndex((RsContext)con, (uint32_t)index, (RsFile)fileA3D); 891aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 892aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 893d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 894d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 895d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 8960e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhatstatic jlong 897eff663f391fa4f119685d5c14489b94661ea126fTim MurraynFontCreateFromFile(JNIEnv *_env, jobject _this, jlong con, 898b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fileName, jfloat fontSize, jint dpi) 8999b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk{ 900b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 9013aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsFontCreateFromFile((RsContext)con, 902e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fileNameUTF.c_str(), fileNameUTF.length(), 903e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi); 904b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 905b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 906b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 907b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 9080e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhatstatic jlong 909eff663f391fa4f119685d5c14489b94661ea126fTim MurraynFontCreateFromAssetStream(JNIEnv *_env, jobject _this, jlong con, 9100e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jstring name, jfloat fontSize, jint dpi, jlong native_asset) 911b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 912b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 913b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 nameUTF(_env, name); 914b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 9153aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsFontCreateFromMemory((RsContext)con, 916e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk nameUTF.c_str(), nameUTF.length(), 917e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 918b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 919b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 920b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 921b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 9220e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhatstatic jlong 923eff663f391fa4f119685d5c14489b94661ea126fTim MurraynFontCreateFromAsset(JNIEnv *_env, jobject _this, jlong con, jobject _assetMgr, jstring _path, 924b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jfloat fontSize, jint dpi) 925b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 926b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 927b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 928b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 929b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 930b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 931b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 932b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 933b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 934b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 935b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 9369b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 9373aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsFontCreateFromMemory((RsContext)con, 938e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk str.c_str(), str.length(), 939e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 940b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 941b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk delete asset; 9429b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return id; 9439b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk} 9449b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 945bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 946bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 947bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 948460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptBindAllocation(JNIEnv *_env, jobject _this, jlong con, jlong script, jlong alloc, jint slot) 949d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 95071a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", (RsContext)con, (RsScript)script, (RsAllocation)alloc, slot); 951eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptBindAllocation((RsContext)con, (RsScript)script, (RsAllocation)alloc, slot); 952d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 953d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 954d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 955460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptSetVarI(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jint val) 9564d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 95771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", (RsContext)con, (void *)script, slot, val); 958eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptSetVarI((RsContext)con, (RsScript)script, slot, val); 9594d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 9604d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 9617c4caadb939b1563328251c156262c179a685c70Tim Murraystatic jint 962460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptGetVarI(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot) 9637c4caadb939b1563328251c156262c179a685c70Tim Murray{ 96471a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptGetVarI, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 9657c4caadb939b1563328251c156262c179a685c70Tim Murray int value = 0; 966eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptGetVarV((RsContext)con, (RsScript)script, slot, &value, sizeof(value)); 9677c4caadb939b1563328251c156262c179a685c70Tim Murray return value; 9687c4caadb939b1563328251c156262c179a685c70Tim Murray} 9697c4caadb939b1563328251c156262c179a685c70Tim Murray 9704d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 971460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptSetVarObj(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jlong val) 9726f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{ 97371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptSetVarObj, con(%p), s(%p), slot(%i), val(%i)", (RsContext)con, (void *)script, slot, val); 974eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptSetVarObj((RsContext)con, (RsScript)script, slot, (RsObjectBase)val); 9756f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams} 9766f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams 9776f4cf0b8885403ead157ae00fd43cf1282331c23Jason Samsstatic void 978460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptSetVarJ(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jlong val) 979031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{ 98071a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", (RsContext)con, (void *)script, slot, val); 981eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptSetVarJ((RsContext)con, (RsScript)script, slot, val); 982031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines} 983031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines 9847c4caadb939b1563328251c156262c179a685c70Tim Murraystatic jlong 985460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptGetVarJ(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot) 9867c4caadb939b1563328251c156262c179a685c70Tim Murray{ 98771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptGetVarJ, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 9887c4caadb939b1563328251c156262c179a685c70Tim Murray jlong value = 0; 989eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptGetVarV((RsContext)con, (RsScript)script, slot, &value, sizeof(value)); 9907c4caadb939b1563328251c156262c179a685c70Tim Murray return value; 9917c4caadb939b1563328251c156262c179a685c70Tim Murray} 9927c4caadb939b1563328251c156262c179a685c70Tim Murray 993031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hinesstatic void 994460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptSetVarF(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, float val) 9954d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 99671a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", (RsContext)con, (void *)script, slot, val); 997eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptSetVarF((RsContext)con, (RsScript)script, slot, val); 9984d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 9994d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 10007c4caadb939b1563328251c156262c179a685c70Tim Murraystatic jfloat 1001460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptGetVarF(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot) 10027c4caadb939b1563328251c156262c179a685c70Tim Murray{ 100371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptGetVarF, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 10047c4caadb939b1563328251c156262c179a685c70Tim Murray jfloat value = 0; 1005eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptGetVarV((RsContext)con, (RsScript)script, slot, &value, sizeof(value)); 10067c4caadb939b1563328251c156262c179a685c70Tim Murray return value; 10077c4caadb939b1563328251c156262c179a685c70Tim Murray} 10087c4caadb939b1563328251c156262c179a685c70Tim Murray 10094d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 1010460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptSetVarD(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, double val) 1011ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{ 101271a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", (RsContext)con, (void *)script, slot, val); 1013eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptSetVarD((RsContext)con, (RsScript)script, slot, val); 1014ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines} 1015ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 10167c4caadb939b1563328251c156262c179a685c70Tim Murraystatic jdouble 1017460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptGetVarD(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot) 10187c4caadb939b1563328251c156262c179a685c70Tim Murray{ 101971a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptGetVarD, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 10207c4caadb939b1563328251c156262c179a685c70Tim Murray jdouble value = 0; 1021eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptGetVarV((RsContext)con, (RsScript)script, slot, &value, sizeof(value)); 10227c4caadb939b1563328251c156262c179a685c70Tim Murray return value; 10237c4caadb939b1563328251c156262c179a685c70Tim Murray} 10247c4caadb939b1563328251c156262c179a685c70Tim Murray 1025ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hinesstatic void 1026460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptSetVarV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data) 10274d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 102871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 10294d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 10304d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 1031eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptSetVarV((RsContext)con, (RsScript)script, slot, ptr, len); 10324d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 10334d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 10344d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 1035adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hinesstatic void 1036460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptGetVarV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data) 10377c4caadb939b1563328251c156262c179a685c70Tim Murray{ 103871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 10397c4caadb939b1563328251c156262c179a685c70Tim Murray jint len = _env->GetArrayLength(data); 10407c4caadb939b1563328251c156262c179a685c70Tim Murray jbyte *ptr = _env->GetByteArrayElements(data, NULL); 1041eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptGetVarV((RsContext)con, (RsScript)script, slot, ptr, len); 1042414fa2c93a763dce6b3adf898fbc68cf13667c07Stephen Hines _env->ReleaseByteArrayElements(data, ptr, 0); 10437c4caadb939b1563328251c156262c179a685c70Tim Murray} 10447c4caadb939b1563328251c156262c179a685c70Tim Murray 10457c4caadb939b1563328251c156262c179a685c70Tim Murraystatic void 1046460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptSetVarVE(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data, jlong elem, jintArray dims) 1047adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines{ 104871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptSetVarVE, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 1049adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines jint len = _env->GetArrayLength(data); 1050adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines jbyte *ptr = _env->GetByteArrayElements(data, NULL); 1051adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines jint dimsLen = _env->GetArrayLength(dims) * sizeof(int); 1052adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines jint *dimsPtr = _env->GetIntArrayElements(dims, NULL); 1053eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptSetVarVE((RsContext)con, (RsScript)script, slot, ptr, len, (RsElement)elem, 1054bc5d3eeedcbdff2e8331a6792902c6992db9bd31Stephen Hines (const uint32_t*) dimsPtr, dimsLen); 1055adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 1056adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines _env->ReleaseIntArrayElements(dims, dimsPtr, JNI_ABORT); 1057adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines} 1058adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines 1059d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1060d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1061460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptSetTimeZone(JNIEnv *_env, jobject _this, jlong con, jlong script, jbyteArray timeZone) 1062584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 106371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptCSetTimeZone, con(%p), s(%p)", (RsContext)con, (void *)script); 1064584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 1065584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 1066584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 1067584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 1068584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 1069eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptSetTimeZone((RsContext)con, (RsScript)script, (const char *)timeZone_ptr, length); 1070584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 1071584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 1072584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 1073584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 1074584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 1075584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 107622534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 1077460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptInvoke(JNIEnv *_env, jobject _this, jlong con, jlong obj, jint slot) 107822534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 107971a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptInvoke, con(%p), script(%p)", (RsContext)con, (void *)obj); 1080eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptInvoke((RsContext)con, (RsScript)obj, slot); 108122534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 108222534176fb5c1257130ef4ee589739ca42766a32Jason Sams 1083584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 1084460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptInvokeV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data) 1085be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 108671a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 10874d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 10884d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 1089eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptInvokeV((RsContext)con, (RsScript)script, slot, ptr, len); 10904d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 1091be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 1092be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 10936e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 1094eff663f391fa4f119685d5c14489b94661ea126fTim MurraynScriptForEach(JNIEnv *_env, jobject _this, jlong con, 1095460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray jlong script, jint slot, jlong ain, jlong aout) 10966e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 109771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 1098eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0, NULL, 0); 10996e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 11006e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 1101eff663f391fa4f119685d5c14489b94661ea126fTim MurraynScriptForEachV(JNIEnv *_env, jobject _this, jlong con, 1102460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray jlong script, jint slot, jlong ain, jlong aout, jbyteArray params) 11036e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 110471a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 11056e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint len = _env->GetArrayLength(params); 11066e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jbyte *ptr = _env->GetByteArrayElements(params, NULL); 1107eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len, NULL, 0); 11086e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT); 11096e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 11106e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams 1111eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murraystatic void 1112eff663f391fa4f119685d5c14489b94661ea126fTim MurraynScriptForEachClipped(JNIEnv *_env, jobject _this, jlong con, 1113460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray jlong script, jint slot, jlong ain, jlong aout, 1114dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines jint xstart, jint xend, 1115eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray jint ystart, jint yend, jint zstart, jint zend) 1116eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray{ 111771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 1118dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines RsScriptCall sc; 1119dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines sc.xStart = xstart; 1120dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines sc.xEnd = xend; 1121dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines sc.yStart = ystart; 1122dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines sc.yEnd = yend; 1123dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines sc.zStart = zstart; 1124dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines sc.zEnd = zend; 1125dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE; 1126dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines sc.arrayStart = 0; 1127dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines sc.arrayEnd = 0; 1128eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0, &sc, sizeof(sc)); 1129dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines} 1130dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines 1131dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hinesstatic void 1132eff663f391fa4f119685d5c14489b94661ea126fTim MurraynScriptForEachClippedV(JNIEnv *_env, jobject _this, jlong con, 1133460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray jlong script, jint slot, jlong ain, jlong aout, 1134dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines jbyteArray params, jint xstart, jint xend, 1135dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines jint ystart, jint yend, jint zstart, jint zend) 1136dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines{ 113771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 1138eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray jint len = _env->GetArrayLength(params); 1139eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray jbyte *ptr = _env->GetByteArrayElements(params, NULL); 1140eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray RsScriptCall sc; 1141eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray sc.xStart = xstart; 1142eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray sc.xEnd = xend; 1143eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray sc.yStart = ystart; 1144eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray sc.yEnd = yend; 1145eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray sc.zStart = zstart; 1146eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray sc.zEnd = zend; 1147eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE; 1148eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray sc.arrayStart = 0; 1149eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray sc.arrayEnd = 0; 1150eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len, &sc, sizeof(sc)); 1151eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT); 1152eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray} 1153d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1154949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailesstatic void 1155949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris WailesnScriptForEachMultiClipped(JNIEnv *_env, jobject _this, jlong con, 1156949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jlong script, jint slot, jlongArray ains, jlong aout, 1157949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jint xstart, jint xend, 1158949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jint ystart, jint yend, jint zstart, jint zend) 1159949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes{ 1160949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes LOG_API("nScriptForEachMultiClipped, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 1161949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1162949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jint in_len = _env->GetArrayLength(ains); 1163949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jlong* in_ptr = _env->GetLongArrayElements(ains, NULL); 1164949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1165949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes RsAllocation *in_allocs = NULL; 1166949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1167949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes if (sizeof(RsAllocation) == sizeof(jlong)) { 1168949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes in_allocs = (RsAllocation*)in_ptr; 1169949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1170949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } else { 1171949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes // Convert from 64-bit jlong types to the native pointer type. 1172949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1173949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes in_allocs = new RsAllocation[in_len]; 1174949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1175949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes for (int index = in_len; --index >= 0;) { 1176949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes in_allocs[index] = (RsAllocation)in_ptr[index]; 1177949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 1178949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 1179949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1180949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes RsScriptCall sc; 1181949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.xStart = xstart; 1182949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.xEnd = xend; 1183949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.yStart = ystart; 1184949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.yEnd = yend; 1185949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.zStart = zstart; 1186949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.zEnd = zend; 1187949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE; 1188949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.arrayStart = 0; 1189949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.arrayEnd = 0; 1190949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1191949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes rsScriptForEachMulti((RsContext)con, (RsScript)script, slot, in_allocs, in_len, (RsAllocation)aout, NULL, 0, &sc, sizeof(sc)); 1192949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1193949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes if (sizeof(RsAllocation) != sizeof(jlong)) { 1194949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes delete[] in_allocs; 1195949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 1196949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1197949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT); 1198949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes} 1199949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1200949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailesstatic void 1201949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris WailesnScriptForEachMultiClippedV(JNIEnv *_env, jobject _this, jlong con, 1202949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jlong script, jint slot, jlongArray ains, jlong aout, 1203949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jbyteArray params, jint xstart, jint xend, 1204949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jint ystart, jint yend, jint zstart, jint zend) 1205949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes{ 1206949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes LOG_API("nScriptForEachMultiClippedV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); 1207949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1208949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jint in_len = _env->GetArrayLength(ains); 1209949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jlong* in_ptr = _env->GetLongArrayElements(ains, NULL); 1210949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1211949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes RsAllocation *in_allocs = NULL; 1212949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1213949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes if (sizeof(RsAllocation) == sizeof(jlong)) { 1214949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes in_allocs = (RsAllocation*)in_ptr; 1215949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1216949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } else { 1217949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes // Convert from 64-bit jlong types to the native pointer type. 1218949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1219949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes in_allocs = new RsAllocation[in_len]; 1220949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1221949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes for (int index = in_len; --index >= 0;) { 1222949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes in_allocs[index] = (RsAllocation)in_ptr[index]; 1223949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 1224949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 1225949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1226949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jint param_len = _env->GetArrayLength(params); 1227949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes jbyte* param_ptr = _env->GetByteArrayElements(params, NULL); 1228949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1229949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes RsScriptCall sc; 1230949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.xStart = xstart; 1231949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.xEnd = xend; 1232949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.yStart = ystart; 1233949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.yEnd = yend; 1234949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.zStart = zstart; 1235949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.zEnd = zend; 1236949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE; 1237949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.arrayStart = 0; 1238949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes sc.arrayEnd = 0; 1239949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes rsScriptForEachMulti((RsContext)con, (RsScript)script, slot, in_allocs, in_len, (RsAllocation)aout, param_ptr, param_len, &sc, sizeof(sc)); 1240949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1241949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes if (sizeof(RsAllocation) != sizeof(jlong)) { 1242949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes delete[] in_allocs; 1243949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 1244949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1245949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT); 1246949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes _env->ReleaseByteArrayElements(params, param_ptr, JNI_ABORT); 1247949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes} 1248949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 1249fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 1250fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 12510e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhatstatic jlong 1252eff663f391fa4f119685d5c14489b94661ea126fTim MurraynScriptCCreate(JNIEnv *_env, jobject _this, jlong con, 1253e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jstring resName, jstring cacheDir, 1254e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jbyteArray scriptRef, jint length) 1255d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 125671a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptCCreate, con(%p)", (RsContext)con); 1257e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 1258e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 resNameUTF(_env, resName); 1259e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir); 12600e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat jlong ret = 0; 12618451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes jbyte* script_ptr = NULL; 126243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 126343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 126443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 126543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 12668451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "script == null"); 126743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 126843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 126943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 127043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 12718451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "length < 0"); 127243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 127343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 1274e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams remaining = _env->GetArrayLength(scriptRef); 127543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 127643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 12778451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", 12788451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes // "length > script.length - offset"); 127943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 128043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 1281e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams script_ptr = (jbyte *) 128243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 128343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 1284eff663f391fa4f119685d5c14489b94661ea126fTim Murray //rsScriptCSetText((RsContext)con, (const char *)script_ptr, length); 1285e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 12863aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray ret = (jlong)(uintptr_t)rsScriptCCreate((RsContext)con, 1287e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk resNameUTF.c_str(), resNameUTF.length(), 1288e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk cacheDirUTF.c_str(), cacheDirUTF.length(), 1289e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams (const char *)script_ptr, length); 129039ddc950c9064129ead5de04b200106c0659f937Jason Sams 129143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 1292e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams if (script_ptr) { 1293e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams _env->ReleasePrimitiveArrayCritical(scriptRef, script_ptr, 129443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 129543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 1296d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 12973aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)ret; 1298d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1299d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1300460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 1301460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptIntrinsicCreate(JNIEnv *_env, jobject _this, jlong con, jint id, jlong eid) 13026ab97682fd444586ee135912a4210417a1c8781bJason Sams{ 130371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptIntrinsicCreate, con(%p) id(%i) element(%p)", (RsContext)con, id, (void *)eid); 13043aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsScriptIntrinsicCreate((RsContext)con, id, (RsElement)eid); 13056ab97682fd444586ee135912a4210417a1c8781bJason Sams} 13066ab97682fd444586ee135912a4210417a1c8781bJason Sams 1307460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 1308460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptKernelIDCreate(JNIEnv *_env, jobject _this, jlong con, jlong sid, jint slot, jint sig) 130908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams{ 131071a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptKernelIDCreate, con(%p) script(%p), slot(%i), sig(%i)", (RsContext)con, (void *)sid, slot, sig); 13113aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsScriptKernelIDCreate((RsContext)con, (RsScript)sid, slot, sig); 131208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams} 131308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 1314460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 1315460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptFieldIDCreate(JNIEnv *_env, jobject _this, jlong con, jlong sid, jint slot) 131608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams{ 131771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptFieldIDCreate, con(%p) script(%p), slot(%i)", (RsContext)con, (void *)sid, slot); 13183aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsScriptFieldIDCreate((RsContext)con, (RsScript)sid, slot); 131908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams} 132008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 1321460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 13229807155b11a25fb6068edc9b1cd82928ac2f05deAshok BhatnScriptGroupCreate(JNIEnv *_env, jobject _this, jlong con, jlongArray _kernels, jlongArray _src, 13239807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlongArray _dstk, jlongArray _dstf, jlongArray _types) 132408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams{ 132571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptGroupCreate, con(%p)", (RsContext)con); 132608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 13279807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jint kernelsLen = _env->GetArrayLength(_kernels); 13289807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jKernelsPtr = _env->GetLongArrayElements(_kernels, NULL); 13299807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat RsScriptKernelID* kernelsPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * kernelsLen); 13309807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < kernelsLen; ++i) { 13319807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat kernelsPtr[i] = (RsScriptKernelID)jKernelsPtr[i]; 13329807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 13339807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 13349807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jint srcLen = _env->GetArrayLength(_src); 13359807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jSrcPtr = _env->GetLongArrayElements(_src, NULL); 13369807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat RsScriptKernelID* srcPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * srcLen); 13379807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < srcLen; ++i) { 13389807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat srcPtr[i] = (RsScriptKernelID)jSrcPtr[i]; 13399807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 13409807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 13419807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jint dstkLen = _env->GetArrayLength(_dstk); 13429807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jDstkPtr = _env->GetLongArrayElements(_dstk, NULL); 13439807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat RsScriptKernelID* dstkPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstkLen); 13449807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < dstkLen; ++i) { 13459807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat dstkPtr[i] = (RsScriptKernelID)jDstkPtr[i]; 13469807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 13479807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 13489807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jint dstfLen = _env->GetArrayLength(_dstf); 13499807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jDstfPtr = _env->GetLongArrayElements(_dstf, NULL); 13509807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat RsScriptKernelID* dstfPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstfLen); 13519807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < dstfLen; ++i) { 13529807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat dstfPtr[i] = (RsScriptKernelID)jDstfPtr[i]; 13539807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 13549807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 13559807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jint typesLen = _env->GetArrayLength(_types); 13569807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jTypesPtr = _env->GetLongArrayElements(_types, NULL); 13579807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat RsType* typesPtr = (RsType*) malloc(sizeof(RsType) * typesLen); 13589807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < typesLen; ++i) { 13599807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat typesPtr[i] = (RsType)jTypesPtr[i]; 13609807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 13619807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 13623aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsScriptGroupCreate((RsContext)con, 13639807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat (RsScriptKernelID *)kernelsPtr, kernelsLen * sizeof(RsScriptKernelID), 13649807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat (RsScriptKernelID *)srcPtr, srcLen * sizeof(RsScriptKernelID), 13659807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat (RsScriptKernelID *)dstkPtr, dstkLen * sizeof(RsScriptKernelID), 13669807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat (RsScriptFieldID *)dstfPtr, dstfLen * sizeof(RsScriptKernelID), 13679807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat (RsType *)typesPtr, typesLen * sizeof(RsType)); 13689807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 13699807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(kernelsPtr); 13709807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(srcPtr); 13719807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(dstkPtr); 13729807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(dstfPtr); 13739807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(typesPtr); 13749807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(_kernels, jKernelsPtr, 0); 13759807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(_src, jSrcPtr, 0); 13769807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(_dstk, jDstkPtr, 0); 13779807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(_dstf, jDstfPtr, 0); 13789807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(_types, jTypesPtr, 0); 137908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams return id; 138008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams} 138108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 138208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Samsstatic void 1383460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptGroupSetInput(JNIEnv *_env, jobject _this, jlong con, jlong gid, jlong kid, jlong alloc) 138408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams{ 138571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptGroupSetInput, con(%p) group(%p), kernelId(%p), alloc(%p)", (RsContext)con, 138608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams (void *)gid, (void *)kid, (void *)alloc); 1387eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptGroupSetInput((RsContext)con, (RsScriptGroup)gid, (RsScriptKernelID)kid, (RsAllocation)alloc); 138808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams} 138908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 139008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Samsstatic void 1391460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptGroupSetOutput(JNIEnv *_env, jobject _this, jlong con, jlong gid, jlong kid, jlong alloc) 139208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams{ 139371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptGroupSetOutput, con(%p) group(%p), kernelId(%p), alloc(%p)", (RsContext)con, 139408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams (void *)gid, (void *)kid, (void *)alloc); 1395eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptGroupSetOutput((RsContext)con, (RsScriptGroup)gid, (RsScriptKernelID)kid, (RsAllocation)alloc); 139608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams} 139708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 139808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Samsstatic void 1399460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynScriptGroupExecute(JNIEnv *_env, jobject _this, jlong con, jlong gid) 140008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams{ 140171a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nScriptGroupSetOutput, con(%p) group(%p)", (RsContext)con, (void *)gid); 1402eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsScriptGroupExecute((RsContext)con, (RsScriptGroup)gid); 140308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams} 140408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 1405d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1406d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 14070e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhatstatic jlong 1408eff663f391fa4f119685d5c14489b94661ea126fTim MurraynProgramStoreCreate(JNIEnv *_env, jobject _this, jlong con, 1409331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean colorMaskR, jboolean colorMaskG, jboolean colorMaskB, jboolean colorMaskA, 1410331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean depthMask, jboolean ditherEnable, 1411331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint srcFunc, jint destFunc, 1412331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint depthFunc) 1413d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 141471a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nProgramStoreCreate, con(%p)", (RsContext)con); 14153aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsProgramStoreCreate((RsContext)con, colorMaskR, colorMaskG, colorMaskB, colorMaskA, 1416331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams depthMask, ditherEnable, (RsBlendSrcFunc)srcFunc, 1417331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams (RsBlendDstFunc)destFunc, (RsDepthFunc)depthFunc); 1418d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1419d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 14200011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 14210011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 14220011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 1423460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynProgramBindConstants(JNIEnv *_env, jobject _this, jlong con, jlong vpv, jint slot, jlong a) 14240011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 142571a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", (RsContext)con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 1426eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsProgramBindConstants((RsContext)con, (RsProgram)vpv, slot, (RsAllocation)a); 14270011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 142854c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 1429d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1430460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynProgramBindTexture(JNIEnv *_env, jobject _this, jlong con, jlong vpf, jint slot, jlong a) 143154c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 143271a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", (RsContext)con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 1433eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsProgramBindTexture((RsContext)con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 143454c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 143554c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 143654c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 1437460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynProgramBindSampler(JNIEnv *_env, jobject _this, jlong con, jlong vpf, jint slot, jlong a) 1438d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 143971a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", (RsContext)con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1440eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsProgramBindSampler((RsContext)con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1441d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1442d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 144368afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 1444d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1445460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 1446eff663f391fa4f119685d5c14489b94661ea126fTim MurraynProgramFragmentCreate(JNIEnv *_env, jobject _this, jlong con, jstring shader, 14479807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jobjectArray texNames, jlongArray params) 14487e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 1449b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 14509807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jParamPtr = _env->GetLongArrayElements(params, NULL); 14517e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 14527e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 14532123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk int texCount = _env->GetArrayLength(texNames); 14542123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8 names(_env, texNames, texCount); 14552123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char ** nameArray = names.c_str(); 14562123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t* sizeArray = names.c_str_len(); 14572123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 145871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", (RsContext)con, paramLen); 14597e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 14609807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat uintptr_t * paramPtr = (uintptr_t*) malloc(sizeof(uintptr_t) * paramLen); 14619807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < paramLen; ++i) { 14629807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat paramPtr[i] = (uintptr_t)jParamPtr[i]; 14639807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 14643aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong ret = (jlong)(uintptr_t)rsProgramFragmentCreate((RsContext)con, shaderUTF.c_str(), shaderUTF.length(), 14652123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk nameArray, texCount, sizeArray, 14669807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat paramPtr, paramLen); 14672123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 14689807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(paramPtr); 14699807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(params, jParamPtr, JNI_ABORT); 14707e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 14717e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 14727e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 14737e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 14741fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 14751fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1476460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 1477eff663f391fa4f119685d5c14489b94661ea126fTim MurraynProgramVertexCreate(JNIEnv *_env, jobject _this, jlong con, jstring shader, 14789807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jobjectArray texNames, jlongArray params) 14791fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 1480b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 14819807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jParamPtr = _env->GetLongArrayElements(params, NULL); 14820011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 14831fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 148471a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nProgramVertexCreate, con(%p), paramLen(%i)", (RsContext)con, paramLen); 1485ee41112e1539de95596600fd2c6dada5d275217fJason Sams 14862123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk int texCount = _env->GetArrayLength(texNames); 14872123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8 names(_env, texNames, texCount); 14882123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char ** nameArray = names.c_str(); 14892123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t* sizeArray = names.c_str_len(); 14902123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 14919807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat uintptr_t * paramPtr = (uintptr_t*) malloc(sizeof(uintptr_t) * paramLen); 14929807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < paramLen; ++i) { 14939807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat paramPtr[i] = (uintptr_t)jParamPtr[i]; 14949807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 14959807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 14963aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong ret = (jlong)(uintptr_t)rsProgramVertexCreate((RsContext)con, shaderUTF.c_str(), shaderUTF.length(), 14972123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk nameArray, texCount, sizeArray, 14989807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat paramPtr, paramLen); 14992123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 15009807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(paramPtr); 15019807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(params, jParamPtr, JNI_ABORT); 15020011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 15031fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 15041fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1505ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1506ebfb436a49673693b98469683451bd9ede797557Jason Sams 1507460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 1508eff663f391fa4f119685d5c14489b94661ea126fTim MurraynProgramRasterCreate(JNIEnv *_env, jobject _this, jlong con, jboolean pointSprite, jint cull) 1509ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 151071a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nProgramRasterCreate, con(%p), pointSprite(%i), cull(%i)", (RsContext)con, pointSprite, cull); 15113aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsProgramRasterCreate((RsContext)con, pointSprite, (RsCullMode)cull); 1512ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1513ebfb436a49673693b98469683451bd9ede797557Jason Sams 1514d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1515d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1516d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1517d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 151878c0ce56129d8109fa2427de769f4d25a971d162Narayan KamathnContextBindRootScript(JNIEnv *_env, jobject _this, jlong con, jlong script) 1519d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 152071a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextBindRootScript, con(%p), script(%p)", (RsContext)con, (RsScript)script); 1521eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextBindRootScript((RsContext)con, (RsScript)script); 1522d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1523d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1524d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 152578c0ce56129d8109fa2427de769f4d25a971d162Narayan KamathnContextBindProgramStore(JNIEnv *_env, jobject _this, jlong con, jlong pfs) 1526d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 152771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", (RsContext)con, (RsProgramStore)pfs); 1528eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextBindProgramStore((RsContext)con, (RsProgramStore)pfs); 1529d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1530d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1531d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 153278c0ce56129d8109fa2427de769f4d25a971d162Narayan KamathnContextBindProgramFragment(JNIEnv *_env, jobject _this, jlong con, jlong pf) 1533d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 153471a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", (RsContext)con, (RsProgramFragment)pf); 1535eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextBindProgramFragment((RsContext)con, (RsProgramFragment)pf); 1536d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1537d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 15380826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 153978c0ce56129d8109fa2427de769f4d25a971d162Narayan KamathnContextBindProgramVertex(JNIEnv *_env, jobject _this, jlong con, jlong pf) 15400826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 154171a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", (RsContext)con, (RsProgramVertex)pf); 1542eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextBindProgramVertex((RsContext)con, (RsProgramVertex)pf); 15430826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 15440826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1545d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 154678c0ce56129d8109fa2427de769f4d25a971d162Narayan KamathnContextBindProgramRaster(JNIEnv *_env, jobject _this, jlong con, jlong pf) 1547ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 154871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", (RsContext)con, (RsProgramRaster)pf); 1549eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsContextBindProgramRaster((RsContext)con, (RsProgramRaster)pf); 1550ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1551ebfb436a49673693b98469683451bd9ede797557Jason Sams 1552d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 155302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 155402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 15550e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhatstatic jlong 1556eff663f391fa4f119685d5c14489b94661ea126fTim MurraynSamplerCreate(JNIEnv *_env, jobject _this, jlong con, jint magFilter, jint minFilter, 1557a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk jint wrapS, jint wrapT, jint wrapR, jfloat aniso) 155802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 155971a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nSamplerCreate, con(%p)", (RsContext)con); 15603aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray return (jlong)(uintptr_t)rsSamplerCreate((RsContext)con, 1561a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)magFilter, 1562a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)minFilter, 1563a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapS, 1564a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapT, 1565a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapR, 1566a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk aniso); 156702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 156802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1569bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1570bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1571460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 15720e0c0885aed99a119052a792becb5a0c5a93632dAshok BhatnPathCreate(JNIEnv *_env, jobject _this, jlong con, jint prim, jboolean isStatic, jlong _vtx, jlong _loop, jfloat q) { 157371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nPathCreate, con(%p)", (RsContext)con); 1574f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams 15753aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsPathCreate((RsContext)con, (RsPathPrimitive)prim, isStatic, 1576460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray (RsAllocation)_vtx, 1577460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray (RsAllocation)_loop, q); 1578f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams return id; 1579f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams} 1580f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams 1581460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murraystatic jlong 15829807155b11a25fb6068edc9b1cd82928ac2f05deAshok BhatnMeshCreate(JNIEnv *_env, jobject _this, jlong con, jlongArray _vtx, jlongArray _idx, jintArray _prim) 1583164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 158471a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nMeshCreate, con(%p)", (RsContext)con); 1585164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 158625999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint vtxLen = _env->GetArrayLength(_vtx); 15879807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jVtxPtr = _env->GetLongArrayElements(_vtx, NULL); 15889807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat RsAllocation* vtxPtr = (RsAllocation*) malloc(sizeof(RsAllocation) * vtxLen); 15899807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < vtxLen; ++i) { 15909807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat vtxPtr[i] = (RsAllocation)(uintptr_t)jVtxPtr[i]; 15919807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 15929807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 159325999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint idxLen = _env->GetArrayLength(_idx); 15949807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat jlong *jIdxPtr = _env->GetLongArrayElements(_idx, NULL); 15959807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat RsAllocation* idxPtr = (RsAllocation*) malloc(sizeof(RsAllocation) * idxLen); 15969807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat for(int i = 0; i < idxLen; ++i) { 15979807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat idxPtr[i] = (RsAllocation)(uintptr_t)jIdxPtr[i]; 15989807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat } 15999807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat 160025999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint primLen = _env->GetArrayLength(_prim); 160125999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *primPtr = _env->GetIntArrayElements(_prim, NULL); 1602164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 16033aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray jlong id = (jlong)(uintptr_t)rsMeshCreate((RsContext)con, 160425999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)vtxPtr, vtxLen, 160525999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)idxPtr, idxLen, 160625999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (uint32_t *)primPtr, primLen); 160780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 16089807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(vtxPtr); 16099807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat free(idxPtr); 16109807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(_vtx, jVtxPtr, 0); 16119807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->ReleaseLongArrayElements(_idx, jIdxPtr, 0); 161225999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_prim, primPtr, 0); 161325999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk return id; 16149d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk} 16159d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk 161680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 1617460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, jlong con, jlong mesh) 161880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 161971a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", (RsContext)con, (RsMesh)mesh); 162080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint vtxCount = 0; 1621eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaMeshGetVertexBufferCount((RsContext)con, (RsMesh)mesh, &vtxCount); 162280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return vtxCount; 162380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 162480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 162580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 1626460a04971c494fec39ffcb38e873bb8fdd82d113Tim MurraynMeshGetIndexCount(JNIEnv *_env, jobject _this, jlong con, jlong mesh) 162780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 162871a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", (RsContext)con, (RsMesh)mesh); 162980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint idxCount = 0; 1630eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaMeshGetIndexCount((RsContext)con, (RsMesh)mesh, &idxCount); 163180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return idxCount; 163280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 163380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 163480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 16359807155b11a25fb6068edc9b1cd82928ac2f05deAshok BhatnMeshGetVertices(JNIEnv *_env, jobject _this, jlong con, jlong mesh, jlongArray _ids, jint numVtxIDs) 163680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 163771a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", (RsContext)con, (RsMesh)mesh); 163880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 163980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation)); 1640eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaMeshGetVertices((RsContext)con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs); 164180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 164280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numVtxIDs; i ++) { 16433aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray const jlong alloc = (jlong)(uintptr_t)allocs[i]; 16449807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->SetLongArrayRegion(_ids, i, 1, &alloc); 164580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 164680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 164780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 164880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 164980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 165080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 16519807155b11a25fb6068edc9b1cd82928ac2f05deAshok BhatnMeshGetIndices(JNIEnv *_env, jobject _this, jlong con, jlong mesh, jlongArray _idxIds, jintArray _primitives, jint numIndices) 165280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 165371a01b8648a440d4773acf0d2376d015c129ebb5Tim Murray LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", (RsContext)con, (RsMesh)mesh); 165480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 165580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation)); 165680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t)); 165780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1658eff663f391fa4f119685d5c14489b94661ea126fTim Murray rsaMeshGetIndices((RsContext)con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices); 165980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 166080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numIndices; i ++) { 16613aa89c1e243a2fae2b9d98fdbad574227c5b5bfaTim Murray const jlong alloc = (jlong)(uintptr_t)allocs[i]; 16629807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat const jint prim = (jint)prims[i]; 16639807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->SetLongArrayRegion(_idxIds, i, 1, &alloc); 16649807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat _env->SetIntArrayRegion(_primitives, i, 1, &prim); 166580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 166680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 166780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 166880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(prims); 1669164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1670164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 167156f9e6f8d5436d50530807950661e66ca5efe2bbTim Murraystatic jint 167256f9e6f8d5436d50530807950661e66ca5efe2bbTim MurraynSystemGetPointerSize(JNIEnv *_env, jobject _this) { 167356f9e6f8d5436d50530807950661e66ca5efe2bbTim Murray return (jint)sizeof(void*); 167456f9e6f8d5436d50530807950661e66ca5efe2bbTim Murray} 167556f9e6f8d5436d50530807950661e66ca5efe2bbTim Murray 167656f9e6f8d5436d50530807950661e66ca5efe2bbTim Murray 1677164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk// --------------------------------------------------------------------------- 1678164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1679d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 168094d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1681d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1682d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 16831c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"_nInit", "()V", (void*)_nInit }, 16841c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 1685eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"nDeviceCreate", "()J", (void*)nDeviceCreate }, 1686eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"nDeviceDestroy", "(J)V", (void*)nDeviceDestroy }, 1687eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"nDeviceSetConfig", "(JII)V", (void*)nDeviceSetConfig }, 1688eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"nContextGetUserMessage", "(J[I)I", (void*)nContextGetUserMessage }, 1689eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"nContextGetErrorMessage", "(J)Ljava/lang/String;", (void*)nContextGetErrorMessage }, 1690eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"nContextPeekMessage", "(J[I)I", (void*)nContextPeekMessage }, 16911c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 1692eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"nContextInitToClient", "(J)V", (void*)nContextInitToClient }, 1693eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"nContextDeinitToClient", "(J)V", (void*)nContextDeinitToClient }, 16942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 16952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 16962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams// All methods below are thread protected in java. 1697eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextCreate", "(JIII)J", (void*)nContextCreate }, 1698eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextCreateGL", "(JIIIIIIIIIIIIFI)J", (void*)nContextCreateGL }, 1699eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextFinish", "(J)V", (void*)nContextFinish }, 1700eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextSetPriority", "(JI)V", (void*)nContextSetPriority }, 1701eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextSetSurface", "(JIILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1702eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextDestroy", "(J)V", (void*)nContextDestroy }, 1703eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextDump", "(JI)V", (void*)nContextDump }, 1704eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextPause", "(J)V", (void*)nContextPause }, 1705eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextResume", "(J)V", (void*)nContextResume }, 1706eff663f391fa4f119685d5c14489b94661ea126fTim Murray{"rsnContextSendMessage", "(JI[I)V", (void*)nContextSendMessage }, 1707460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAssignName", "(JJ[B)V", (void*)nAssignName }, 1708460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnGetName", "(JJ)Ljava/lang/String;", (void*)nGetName }, 1709460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnObjDestroy", "(JJ)V", (void*)nObjDestroy }, 1710eff663f391fa4f119685d5c14489b94661ea126fTim Murray 1711460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnFileA3DCreateFromFile", "(JLjava/lang/String;)J", (void*)nFileA3DCreateFromFile }, 17120e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat{"rsnFileA3DCreateFromAssetStream", "(JJ)J", (void*)nFileA3DCreateFromAssetStream }, 1713460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnFileA3DCreateFromAsset", "(JLandroid/content/res/AssetManager;Ljava/lang/String;)J", (void*)nFileA3DCreateFromAsset }, 1714460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnFileA3DGetNumIndexEntries", "(JJ)I", (void*)nFileA3DGetNumIndexEntries }, 1715460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnFileA3DGetIndexEntries", "(JJI[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, 17160e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat{"rsnFileA3DGetEntryByIndex", "(JJI)J", (void*)nFileA3DGetEntryByIndex }, 1717eff663f391fa4f119685d5c14489b94661ea126fTim Murray 17180e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat{"rsnFontCreateFromFile", "(JLjava/lang/String;FI)J", (void*)nFontCreateFromFile }, 17190e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat{"rsnFontCreateFromAssetStream", "(JLjava/lang/String;FIJ)J", (void*)nFontCreateFromAssetStream }, 17200e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat{"rsnFontCreateFromAsset", "(JLandroid/content/res/AssetManager;Ljava/lang/String;FI)J", (void*)nFontCreateFromAsset }, 1721eff663f391fa4f119685d5c14489b94661ea126fTim Murray 1722460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnElementCreate", "(JJIZI)J", (void*)nElementCreate }, 17239807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnElementCreate2", "(J[J[Ljava/lang/String;[I)J", (void*)nElementCreate2 }, 1724460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnElementGetNativeData", "(JJ[I)V", (void*)nElementGetNativeData }, 17259807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnElementGetSubElements", "(JJ[J[Ljava/lang/String;[I)V", (void*)nElementGetSubElements }, 1726460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray 1727460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnTypeCreate", "(JJIIIZZI)J", (void*)nTypeCreate }, 17289807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnTypeGetNativeData", "(JJ[J)V", (void*)nTypeGetNativeData }, 1729460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray 17309807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnAllocationCreateTyped", "(JJIIJ)J", (void*)nAllocationCreateTyped }, 1731460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationCreateFromBitmap", "(JJILandroid/graphics/Bitmap;I)J", (void*)nAllocationCreateFromBitmap }, 1732460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationCreateBitmapBackedAllocation", "(JJILandroid/graphics/Bitmap;I)J", (void*)nAllocationCreateBitmapBackedAllocation }, 1733460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationCubeCreateFromBitmap","(JJILandroid/graphics/Bitmap;I)J", (void*)nAllocationCubeCreateFromBitmap }, 1734460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray 1735460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationCopyFromBitmap", "(JJLandroid/graphics/Bitmap;)V", (void*)nAllocationCopyFromBitmap }, 1736460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationCopyToBitmap", "(JJLandroid/graphics/Bitmap;)V", (void*)nAllocationCopyToBitmap }, 1737460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray 1738460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationSyncAll", "(JJI)V", (void*)nAllocationSyncAll }, 1739460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationGetSurface", "(JJ)Landroid/view/Surface;", (void*)nAllocationGetSurface }, 1740460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationSetSurface", "(JJLandroid/view/Surface;)V", (void*)nAllocationSetSurface }, 1741460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationIoSend", "(JJ)V", (void*)nAllocationIoSend }, 1742460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationIoReceive", "(JJ)V", (void*)nAllocationIoReceive }, 1743460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationData1D", "(JJIIILjava/lang/Object;II)V", (void*)nAllocationData1D }, 1744460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationElementData1D", "(JJIII[BI)V", (void*)nAllocationElementData1D }, 1745460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationData2D", "(JJIIIIIILjava/lang/Object;II)V", (void*)nAllocationData2D }, 1746460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationData2D", "(JJIIIIIIJIIII)V", (void*)nAllocationData2D_alloc }, 1747460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationData3D", "(JJIIIIIIILjava/lang/Object;II)V", (void*)nAllocationData3D }, 1748460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationData3D", "(JJIIIIIIIJIIII)V", (void*)nAllocationData3D_alloc }, 1749460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationRead", "(JJLjava/lang/Object;I)V", (void*)nAllocationRead }, 1750460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationRead1D", "(JJIIILjava/lang/Object;II)V", (void*)nAllocationRead1D }, 1751460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationRead2D", "(JJIIIIIILjava/lang/Object;II)V", (void*)nAllocationRead2D }, 1752460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationGetType", "(JJ)J", (void*)nAllocationGetType}, 1753460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationResize1D", "(JJI)V", (void*)nAllocationResize1D }, 1754460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnAllocationGenerateMipmaps", "(JJ)V", (void*)nAllocationGenerateMipmaps }, 1755460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray 1756460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptBindAllocation", "(JJJI)V", (void*)nScriptBindAllocation }, 1757460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptSetTimeZone", "(JJ[B)V", (void*)nScriptSetTimeZone }, 1758460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptInvoke", "(JJI)V", (void*)nScriptInvoke }, 1759460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptInvokeV", "(JJI[B)V", (void*)nScriptInvokeV }, 1760460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptForEach", "(JJIJJ)V", (void*)nScriptForEach }, 1761460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptForEach", "(JJIJJ[B)V", (void*)nScriptForEachV }, 1762460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptForEachClipped", "(JJIJJIIIIII)V", (void*)nScriptForEachClipped }, 1763460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptForEachClipped", "(JJIJJ[BIIIIII)V", (void*)nScriptForEachClippedV }, 1764949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes{"rsnScriptForEachMultiClipped", "(JJI[JJIIIIII)V", (void*)nScriptForEachMultiClipped }, 1765949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes{"rsnScriptForEachMultiClipped", "(JJI[JJ[BIIIIII)V", (void*)nScriptForEachMultiClippedV }, 1766460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptSetVarI", "(JJII)V", (void*)nScriptSetVarI }, 1767460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptGetVarI", "(JJI)I", (void*)nScriptGetVarI }, 1768460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptSetVarJ", "(JJIJ)V", (void*)nScriptSetVarJ }, 1769460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptGetVarJ", "(JJI)J", (void*)nScriptGetVarJ }, 1770460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptSetVarF", "(JJIF)V", (void*)nScriptSetVarF }, 1771460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptGetVarF", "(JJI)F", (void*)nScriptGetVarF }, 1772460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptSetVarD", "(JJID)V", (void*)nScriptSetVarD }, 1773460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptGetVarD", "(JJI)D", (void*)nScriptGetVarD }, 1774460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptSetVarV", "(JJI[B)V", (void*)nScriptSetVarV }, 1775460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptGetVarV", "(JJI[B)V", (void*)nScriptGetVarV }, 1776460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptSetVarVE", "(JJI[BJ[I)V", (void*)nScriptSetVarVE }, 1777460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptSetVarObj", "(JJIJ)V", (void*)nScriptSetVarObj }, 1778eff663f391fa4f119685d5c14489b94661ea126fTim Murray 17790e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat{"rsnScriptCCreate", "(JLjava/lang/String;Ljava/lang/String;[BI)J", (void*)nScriptCCreate }, 1780460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptIntrinsicCreate", "(JIJ)J", (void*)nScriptIntrinsicCreate }, 1781460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptKernelIDCreate", "(JJII)J", (void*)nScriptKernelIDCreate }, 1782460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptFieldIDCreate", "(JJI)J", (void*)nScriptFieldIDCreate }, 17839807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnScriptGroupCreate", "(J[J[J[J[J[J)J", (void*)nScriptGroupCreate }, 1784460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptGroupSetInput", "(JJJJ)V", (void*)nScriptGroupSetInput }, 1785460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptGroupSetOutput", "(JJJJ)V", (void*)nScriptGroupSetOutput }, 1786460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnScriptGroupExecute", "(JJ)V", (void*)nScriptGroupExecute }, 1787eff663f391fa4f119685d5c14489b94661ea126fTim Murray 17880e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat{"rsnProgramStoreCreate", "(JZZZZZZIII)J", (void*)nProgramStoreCreate }, 1789eff663f391fa4f119685d5c14489b94661ea126fTim Murray 1790460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnProgramBindConstants", "(JJIJ)V", (void*)nProgramBindConstants }, 1791460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnProgramBindTexture", "(JJIJ)V", (void*)nProgramBindTexture }, 1792460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnProgramBindSampler", "(JJIJ)V", (void*)nProgramBindSampler }, 1793eff663f391fa4f119685d5c14489b94661ea126fTim Murray 17949807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnProgramFragmentCreate", "(JLjava/lang/String;[Ljava/lang/String;[J)J", (void*)nProgramFragmentCreate }, 1795460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnProgramRasterCreate", "(JZI)J", (void*)nProgramRasterCreate }, 17969807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnProgramVertexCreate", "(JLjava/lang/String;[Ljava/lang/String;[J)J", (void*)nProgramVertexCreate }, 1797eff663f391fa4f119685d5c14489b94661ea126fTim Murray 179878c0ce56129d8109fa2427de769f4d25a971d162Narayan Kamath{"rsnContextBindRootScript", "(JJ)V", (void*)nContextBindRootScript }, 179978c0ce56129d8109fa2427de769f4d25a971d162Narayan Kamath{"rsnContextBindProgramStore", "(JJ)V", (void*)nContextBindProgramStore }, 180078c0ce56129d8109fa2427de769f4d25a971d162Narayan Kamath{"rsnContextBindProgramFragment", "(JJ)V", (void*)nContextBindProgramFragment }, 180178c0ce56129d8109fa2427de769f4d25a971d162Narayan Kamath{"rsnContextBindProgramVertex", "(JJ)V", (void*)nContextBindProgramVertex }, 180278c0ce56129d8109fa2427de769f4d25a971d162Narayan Kamath{"rsnContextBindProgramRaster", "(JJ)V", (void*)nContextBindProgramRaster }, 1803eff663f391fa4f119685d5c14489b94661ea126fTim Murray 18040e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat{"rsnSamplerCreate", "(JIIIIIF)J", (void*)nSamplerCreate }, 1805eff663f391fa4f119685d5c14489b94661ea126fTim Murray 18060e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat{"rsnPathCreate", "(JIZJJF)J", (void*)nPathCreate }, 18079807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnMeshCreate", "(J[J[J[I)J", (void*)nMeshCreate }, 1808eff663f391fa4f119685d5c14489b94661ea126fTim Murray 1809460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnMeshGetVertexBufferCount", "(JJ)I", (void*)nMeshGetVertexBufferCount }, 1810460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray{"rsnMeshGetIndexCount", "(JJ)I", (void*)nMeshGetIndexCount }, 18119807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnMeshGetVertices", "(JJ[JI)V", (void*)nMeshGetVertices }, 18129807155b11a25fb6068edc9b1cd82928ac2f05deAshok Bhat{"rsnMeshGetIndices", "(JJ[J[II)V", (void*)nMeshGetIndices }, 181380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 181456f9e6f8d5436d50530807950661e66ca5efe2bbTim Murray{"rsnSystemGetPointerSize", "()I", (void*)nSystemGetPointerSize }, 1815d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1816d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1817d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1818d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1819d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1820d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1821d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1822d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1823d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1824d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1825d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1826d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1827d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1828d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1829d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1830d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 18313762c311729fe9f3af085c14c5c1fb471d994c03Steve Block ALOGE("ERROR: GetEnv failed\n"); 1832d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1833d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1834d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1835d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1836d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 18370e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat ALOGE("ERROR: Renderscript native registration failed\n"); 1838d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1839d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1840d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1841d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1842d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1843d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1844d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1845d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1846d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1847