android_renderscript_RenderScript.cpp revision 2123b46ba85adb2cfb78068f8368e830640118d3
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 26000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/Surface.h> 27d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 28ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams#include <core/SkBitmap.h> 29650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkPixelRef.h> 30650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkStream.h> 31650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkTemplates.h> 32650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <images/SkImageDecoder.h> 33ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 34650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <utils/Asset.h> 35b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk#include <utils/AssetManager.h> 36650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <utils/ResourceTypes.h> 37f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "jni.h" 39d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "JNIHelp.h" 40d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "android_runtime/AndroidRuntime.h" 41ee956053d6e3f7a7a82e41853b9b251fdc226d7aJim Miller#include "android_runtime/android_view_Surface.h" 42b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk#include "android_runtime/android_util_AssetManager.h" 43d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 44e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScript.h> 45e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScriptEnv.h> 46faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <gui/SurfaceTexture.h> 47faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <gui/SurfaceTextureClient.h> 48faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <android_runtime/android_graphics_SurfaceTexture.h> 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 503762c311729fe9f3af085c14c5c1fb471d994c03Steve Block//#define LOG_API ALOGE 51d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define LOG_API(...) 52d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 53d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android; 54d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 55b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukclass AutoJavaStringToUTF8 { 56b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukpublic: 572123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringToUTF8(JNIEnv* env, jstring str) : fEnv(env), fJStr(str) { 58b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fCStr = env->GetStringUTFChars(str, NULL); 59b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fLength = env->GetStringUTFLength(str); 60b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 612123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk ~AutoJavaStringToUTF8() { 62b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fEnv->ReleaseStringUTFChars(fJStr, fCStr); 63b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 64b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* c_str() const { return fCStr; } 65b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize length() const { return fLength; } 66b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 67b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukprivate: 68b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk JNIEnv* fEnv; 69b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fJStr; 70b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* fCStr; 71b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize fLength; 72b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk}; 73b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 742123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchoukclass AutoJavaStringArrayToUTF8 { 752123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchoukpublic: 762123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8(JNIEnv* env, jobjectArray strings, jsize stringsLength) 772123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk : mEnv(env), mStrings(strings), mStringsLength(stringsLength) { 782123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mCStrings = NULL; 792123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mSizeArray = NULL; 802123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk if (stringsLength > 0) { 812123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mCStrings = (const char **)calloc(stringsLength, sizeof(char *)); 822123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mSizeArray = (size_t*)calloc(stringsLength, sizeof(size_t)); 832123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk for (jsize ct = 0; ct < stringsLength; ct ++) { 842123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct); 852123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mCStrings[ct] = mEnv->GetStringUTFChars(s, NULL); 862123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mSizeArray[ct] = mEnv->GetStringUTFLength(s); 872123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 882123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 892123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 902123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk ~AutoJavaStringArrayToUTF8() { 912123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk for (jsize ct=0; ct < mStringsLength; ct++) { 922123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct); 932123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mEnv->ReleaseStringUTFChars(s, mCStrings[ct]); 942123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 952123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk free(mCStrings); 962123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk free(mSizeArray); 972123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 982123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char **c_str() const { return mCStrings; } 992123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t *c_str_len() const { return mSizeArray; } 1002123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jsize length() const { return mStringsLength; } 1012123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 1022123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchoukprivate: 1032123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk JNIEnv *mEnv; 1042123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jobjectArray mStrings; 1052123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char **mCStrings; 1062123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t *mSizeArray; 1072123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jsize mStringsLength; 1082123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk}; 1092123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 110d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 111d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 112ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gContextId = 0; 113ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gNativeBitmapID = 0; 11443ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic jfieldID gTypeNativeCache = 0; 115d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 116d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void _nInit(JNIEnv *_env, jclass _this) 117d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 118d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams gContextId = _env->GetFieldID(_this, "mContext", "I"); 119ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 120ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); 121ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I"); 122d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 123d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 124d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 125d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1263eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsstatic void 1272e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextFinish(JNIEnv *_env, jobject _this, RsContext con) 12896ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams{ 12996ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams LOG_API("nContextFinish, con(%p)", con); 13096ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams rsContextFinish(con); 13196ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams} 13296ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 13396ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Samsstatic void 1342e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAssignName(JNIEnv *_env, jobject _this, RsContext con, jint obj, jbyteArray str) 1353eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{ 13607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAssignName, con(%p), obj(%p)", con, (void *)obj); 1373eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jint len = _env->GetArrayLength(str); 1383eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 139bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAssignName(con, (void *)obj, (const char *)cptr, len); 1403eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 1413eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams} 1423eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 143fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchoukstatic jstring 1442e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnGetName(JNIEnv *_env, jobject _this, RsContext con, jint obj) 145fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk{ 146fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk LOG_API("nGetName, con(%p), obj(%p)", con, (void *)obj); 147fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk const char *name = NULL; 148581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaGetName(con, (void *)obj, &name); 149581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk if(name == NULL || strlen(name) == 0) { 150581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return NULL; 151581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk } 152fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk return _env->NewStringUTF(name); 153fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk} 154fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk 1557ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 1562e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnObjDestroy(JNIEnv *_env, jobject _this, RsContext con, jint obj) 1577ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 1587ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj); 1599c25aee52672f9c8908e062bde502341c189970eJason Sams rsObjDestroy(con, (void *)obj); 1607ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 1617ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 1623eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 1633eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 164d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 165d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 166d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 167d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 168d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsDeviceCreate(); 169d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 170d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 171d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 172d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) 173d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 174d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 175d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 176d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 177d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 178ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 179ebfb436a49673693b98469683451bd9ede797557Jason SamsnDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value) 180ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 181ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value); 182ebfb436a49673693b98469683451bd9ede797557Jason Sams return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value); 183ebfb436a49673693b98469683451bd9ede797557Jason Sams} 184ebfb436a49673693b98469683451bd9ede797557Jason Sams 185d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 1864382467a80dd12c6362d57edca7f2367f7ae877cStephen HinesnContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver, jint sdkVer) 187d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 188d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 1894382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines return (jint)rsContextCreate((RsDevice)dev, ver, sdkVer); 190704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 191704ff64b099406bb328898a7443921f22dbffd6dJason Sams 192704ff64b099406bb328898a7443921f22dbffd6dJason Samsstatic jint 1934382467a80dd12c6362d57edca7f2367f7ae877cStephen HinesnContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, jint sdkVer, 19411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 19511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 19611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 19711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 1982c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int samplesMin, int samplesPref, float samplesQ, 1992c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int dpi) 20011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams{ 20111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams RsSurfaceConfig sc; 20211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaMin = alphaMin; 20311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaPref = alphaPref; 20411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorMin = colorMin; 20511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorPref = colorPref; 20611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthMin = depthMin; 20711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthPref = depthPref; 20811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesMin = samplesMin; 20911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesPref = samplesPref; 21011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesQ = samplesQ; 21111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams 212704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nContextCreateGL"); 2134382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines return (jint)rsContextCreateGL((RsDevice)dev, ver, sdkVer, sc, dpi); 214d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 215d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 216d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2172e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetPriority(JNIEnv *_env, jobject _this, RsContext con, jint p) 2187d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{ 2197d787b4722eaeb79cab42c36060336e092b77b5fJason Sams LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p); 2207d787b4722eaeb79cab42c36060336e092b77b5fJason Sams rsContextSetPriority(con, p); 2217d787b4722eaeb79cab42c36060336e092b77b5fJason Sams} 2227d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 2237d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 2247d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 2257d787b4722eaeb79cab42c36060336e092b77b5fJason Samsstatic void 2262e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetSurface(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject wnd) 227efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 2283bc47d438171dce294e816366d53bc9eca772c5bJason Sams LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)wnd); 229efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 2306c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk ANativeWindow * window = NULL; 231efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 232efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 233efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 2346c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk window = android_Surface_getNativeWindow(_env, wnd).get(); 235efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 236efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 2376c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk rsContextSetSurface(con, width, height, window); 238efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 239efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 240efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 241faa32b33b50ad941f631716dd0915e936bdc3ac5Jason SamsnContextSetSurfaceTexture(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject sur) 242faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams{ 243faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams LOG_API("nContextSetSurfaceTexture, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)sur); 244faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 245faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams sp<ANativeWindow> window; 246faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams sp<SurfaceTexture> st; 247faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams if (sur == 0) { 248faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 249faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } else { 250faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams st = SurfaceTexture_getSurfaceTexture(_env, sur); 251faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams window = new SurfaceTextureClient(st); 252faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } 253faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 254faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams rsContextSetSurface(con, width, height, window.get()); 255faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams} 256faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 257faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Samsstatic void 2582e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDestroy(JNIEnv *_env, jobject _this, RsContext con) 259d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 2602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams LOG_API("nContextDestroy, con(%p)", con); 2612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsContextDestroy(con); 262d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 263d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 264715333b832fb448c32165c7d97d408a3fa43f7cbJason Samsstatic void 2652e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDump(JNIEnv *_env, jobject _this, RsContext con, jint bits) 266715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{ 267715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits); 268715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDump((RsContext)con, bits); 269715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams} 270d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 271d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2722e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextPause(JNIEnv *_env, jobject _this, RsContext con) 27365e7aa56f56097418d617663683544c25b3988eaJason Sams{ 27465e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextPause, con(%p)", con); 27565e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextPause(con); 27665e7aa56f56097418d617663683544c25b3988eaJason Sams} 27765e7aa56f56097418d617663683544c25b3988eaJason Sams 27865e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 2792e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextResume(JNIEnv *_env, jobject _this, RsContext con) 28065e7aa56f56097418d617663683544c25b3988eaJason Sams{ 28165e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextResume, con(%p)", con); 28265e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextResume(con); 28365e7aa56f56097418d617663683544c25b3988eaJason Sams} 28465e7aa56f56097418d617663683544c25b3988eaJason Sams 2851c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2861c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jstring 2871c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetErrorMessage(JNIEnv *_env, jobject _this, RsContext con) 2881c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2891c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextGetErrorMessage, con(%p)", con); 2901c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams char buf[1024]; 2911c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2921c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2931c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 29465bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextGetMessage(con, 29565bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams buf, sizeof(buf), 29665bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 297edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 2981c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (!id && receiveLen) { 29971f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("message receive buffer too small. %i", receiveLen); 3001c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 3011c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams return _env->NewStringUTF(buf); 3021c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 3031c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 304edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Samsstatic jint 3051c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) 306516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 307516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 308516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextGetMessage, con(%p), len(%i)", con, len); 309516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 310516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 3111c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 31265bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextGetMessage(con, 31365bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, len * 4, 31465bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 315edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 316516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 31771f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("message receive buffer too small. %i", receiveLen); 318516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 319516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 320edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams return id; 3211c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 3221c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 3231c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jint 324edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason SamsnContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData) 3251c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 3261c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextPeekMessage, con(%p)", con); 3271c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); 3281c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 3291c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 33065bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextPeekMessage(con, &receiveLen, sizeof(receiveLen), 331edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 3321c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[0] = (jint)subID; 3331c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[1] = (jint)receiveLen; 3341c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); 335516c31911578db8ce53529483c3ded918ac7dc6bJason Sams return id; 336516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 337516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 3382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextInitToClient(JNIEnv *_env, jobject _this, RsContext con) 339516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 340516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextInitToClient, con(%p)", con); 341516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextInitToClient(con); 342516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 343516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 3442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextDeinitToClient(JNIEnv *_env, jobject _this, RsContext con) 345516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 346516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextDeinitToClient, con(%p)", con); 347516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextDeinitToClient(con); 348516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 349516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 350516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 351718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 3522e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementCreate(JNIEnv *_env, jobject _this, RsContext con, jint type, jint kind, jboolean norm, jint size) 353d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 354718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size); 355718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)rsElementCreate(con, (RsDataType)type, (RsDataKind)kind, norm, size); 356d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 357d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 358718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 3592123b46ba85adb2cfb78068f8368e830640118d3Alex SakhartchouknElementCreate2(JNIEnv *_env, jobject _this, RsContext con, 3602123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jintArray _ids, jobjectArray _names, jintArray _arraySizes) 361d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 362718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams int fieldCount = _env->GetArrayLength(_ids); 363704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nElementCreate2, con(%p)", con); 364718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 365718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jint *ids = _env->GetIntArrayElements(_ids, NULL); 36670d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint *arraySizes = _env->GetIntArrayElements(_arraySizes, NULL); 367718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 3682123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8 names(_env, _names, fieldCount); 3692123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 3702123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char **nameArray = names.c_str(); 3712123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t *sizeArray = names.c_str_len(); 3722123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 373e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsElementCreate2(con, 374e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk (RsElement *)ids, fieldCount, 3757a22e107d100caea2a661ec73e4525d69f0f9759Jason Sams nameArray, fieldCount * sizeof(size_t), sizeArray, 376e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk (const uint32_t *)arraySizes, fieldCount); 3772123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 378718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseIntArrayElements(_ids, ids, JNI_ABORT); 37970d4e5024298f71edb3b04867e05568f5495b4ceJason Sams _env->ReleaseIntArrayElements(_arraySizes, arraySizes, JNI_ABORT); 380718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)id; 381d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 382d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 383dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3842e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _elementData) 385dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 386dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_elementData); 387dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetNativeData, con(%p)", con); 388dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 389dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements 390dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(dataSize == 5); 391dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 392dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t elementData[5]; 393581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetNativeData(con, (RsElement)id, elementData, dataSize); 394dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 395dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < dataSize; i ++) { 396dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_elementData, i, 1, (const jint*)&elementData[i]); 397dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 398dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 399dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 400dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 401dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 4027d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex SakhartchouknElementGetSubElements(JNIEnv *_env, jobject _this, RsContext con, jint id, 4037d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk jintArray _IDs, 4047d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk jobjectArray _names, 4057d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk jintArray _arraySizes) 406dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 407dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_IDs); 408dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetSubElements, con(%p)", con); 409dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 410dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t *ids = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t)); 411dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk const char **names = (const char **)malloc((uint32_t)dataSize * sizeof(const char *)); 4127d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk uint32_t *arraySizes = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t)); 413dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 4147d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk rsaElementGetSubElements(con, (RsElement)id, ids, names, arraySizes, (uint32_t)dataSize); 415dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 41611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams for(jint i = 0; i < dataSize; i++) { 417dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i])); 418dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_IDs, i, 1, (const jint*)&ids[i]); 4197d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk _env->SetIntArrayRegion(_arraySizes, i, 1, (const jint*)&arraySizes[i]); 420dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 421dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 422dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(ids); 423dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(names); 4247d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk free(arraySizes); 425dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 426dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 427d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 428d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 4293b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Samsstatic int 430bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason SamsnTypeCreate(JNIEnv *_env, jobject _this, RsContext con, RsElement eid, 431bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces) 432d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 433bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i)", 434bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams con, eid, dimx, dimy, dimz, mips, faces); 4353b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams 436c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsTypeCreate(con, (RsElement)eid, dimx, dimy, dimz, mips, faces); 4373b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams return (jint)id; 438d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 439d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 440dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 4412e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _typeData) 442dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 443dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // We are packing 6 items: mDimX; mDimY; mDimZ; 444dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // mDimLOD; mDimFaces; mElement; into typeData 445dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int elementCount = _env->GetArrayLength(_typeData); 446dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 447dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(elementCount == 6); 448dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nTypeCreate, con(%p)", con); 449dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 450dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t typeData[6]; 451581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaTypeGetNativeData(con, (RsType)id, typeData, 6); 452dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 453dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < elementCount; i ++) { 454dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_typeData, i, 1, (const jint*)&typeData[i]); 455dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 456dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 457dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 458d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 459d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 460d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 461857d0c7017da763a420e825fffa2f260eb982c97Jason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mips, jint usage, jint pointer) 462d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 463857d0c7017da763a420e825fffa2f260eb982c97Jason Sams LOG_API("nAllocationCreateTyped, con(%p), type(%p), mip(%i), usage(%i), ptr(%p)", con, (RsElement)type, mips, usage, (void *)pointer); 464857d0c7017da763a420e825fffa2f260eb982c97Jason Sams return (jint) rsAllocationCreateTyped(con, (RsType)type, (RsAllocationMipmapControl)mips, (uint32_t)usage, (uint32_t)pointer); 465d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 466d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 467d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 4685476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationSyncAll(JNIEnv *_env, jobject _this, RsContext con, jint a, jint bits) 4695476b450e50939940dcf3f15c92335cee2fc572dJason Sams{ 4705476b450e50939940dcf3f15c92335cee2fc572dJason Sams LOG_API("nAllocationSyncAll, con(%p), a(%p), bits(0x%08x)", con, (RsAllocation)a, bits); 4715476b450e50939940dcf3f15c92335cee2fc572dJason Sams rsAllocationSyncAll(con, (RsAllocation)a, (RsAllocationUsageType)bits); 4725476b450e50939940dcf3f15c92335cee2fc572dJason Sams} 4735476b450e50939940dcf3f15c92335cee2fc572dJason Sams 474615e7cee03d1a53072b0369fa9f247811ac56845Jason Samsstatic jint 475615e7cee03d1a53072b0369fa9f247811ac56845Jason SamsnAllocationGetSurfaceTextureID(JNIEnv *_env, jobject _this, RsContext con, jint a) 476615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams{ 477615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams LOG_API("nAllocationGetSurfaceTextureID, con(%p), a(%p)", con, (RsAllocation)a); 478615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams return rsAllocationGetSurfaceTextureID(con, (RsAllocation)a); 479615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams} 480615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams 481f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Samsstatic void 482f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason SamsnAllocationGenerateMipmaps(JNIEnv *_env, jobject _this, RsContext con, jint alloc) 483f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams{ 484f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams LOG_API("nAllocationGenerateMipmaps, con(%p), a(%p)", con, (RsAllocation)alloc); 485f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsAllocationGenerateMipmaps(con, (RsAllocation)alloc); 486f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams} 487f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams 488fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 4895476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 490fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 491ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 492ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 493ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 494fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 4955476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 4965476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 497c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, 49865bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 49965bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 5005476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 5015476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 502ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 503fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 50467f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchoukstatic int 5055476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 50667f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk{ 50767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk SkBitmap const * nativeBitmap = 50867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 50967f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 51067f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 5115476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 5125476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 513c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsAllocationCubeCreateFromBitmap(con, 51465bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 51565bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 5165476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 5175476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 51867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk} 51967f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 52026ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchoukstatic void 5214ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 52226ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk{ 52326ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk SkBitmap const * nativeBitmap = 52426ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 52526ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 526f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int w = bitmap.width(); 527f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int h = bitmap.height(); 52826ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk 5294ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 5304ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const void* ptr = bitmap.getPixels(); 531f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, 0, 0, 532304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, 533f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams w, h, ptr, bitmap.getSize()); 5344ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 5358a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 5368a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5374ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void 5384ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyToBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 5398a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 5404ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = 5414ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 5424ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const SkBitmap& bitmap(*nativeBitmap); 5438a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5444ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 5454ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams void* ptr = bitmap.getPixels(); 5464ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsAllocationCopyToBitmap(con, (RsAllocation)alloc, ptr, bitmap.getSize()); 5474ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 548835b8544cc333ef87e42b1d71cf8ad3cddccdc19Alex Sakhartchouk bitmap.notifyPixelsChanged(); 5498a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 5508a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5514ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void ReleaseBitmapCallback(void *bmp) 552650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 5534ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; 5544ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams nativeBitmap->unlockPixels(); 555650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 556650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 5574ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 558d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 55949a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jintArray data, int sizeBytes) 560d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 561d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 56249a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 563d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 56449a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 565d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 566d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 567d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 568d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 56949a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jshortArray data, int sizeBytes) 570d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 571d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 57249a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 573768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 57449a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 575768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 576d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 577d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 578d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 57949a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jbyteArray data, int sizeBytes) 580d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 581d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 58249a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 583768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 58449a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 585768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 586d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 587d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 588d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 58949a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jfloatArray data, int sizeBytes) 590d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 591d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 59249a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 593d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 59449a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 595d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 596d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 597d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 598d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 59949a05d7b82956009f03acbb92a064eed054eb031Jason Sams// native void rsnAllocationElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes); 60049a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationElementData1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint compIdx, jbyteArray data, int sizeBytes) 60149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{ 60249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jint len = _env->GetArrayLength(data); 60349a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocationElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); 60449bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 6054cbe25a86b4aa3353c8016a129028671e902611fStephen Hines rsAllocation1DElementData(con, (RsAllocation)alloc, offset, lod, ptr, sizeBytes, compIdx); 60649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 60749bdaf0293408159df18a1d8540360f9623c40f7Jason Sams} 60849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 60949bdaf0293408159df18a1d8540360f9623c40f7Jason Samsstatic void 610fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationData2D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 611fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint w, jint h, jshortArray data, int sizeBytes) 612fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 613fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 614fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocation2DData_s, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 615fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 616fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 617fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 618fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 619fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 620fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 621fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationData2D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 622fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint w, jint h, jbyteArray data, int sizeBytes) 623fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 624fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 625fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocation2DData_b, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 626fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 627fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 628fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 629fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 630fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 631fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 63249a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 63349a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jintArray data, int sizeBytes) 634d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 635d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 63649a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation2DData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 637d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 63849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 639d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 640d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 641d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 642d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 64349a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 64449a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jfloatArray data, int sizeBytes) 645d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 646d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 64749a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation2DData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 648d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 64949a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 650d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 651d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 652d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 65340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 654304b1f5497155bcf91e7b855cfab7a675e80bf26Alex SakhartchouknAllocationData2D_alloc(JNIEnv *_env, jobject _this, RsContext con, 655304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint dstAlloc, jint dstXoff, jint dstYoff, 656304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint dstMip, jint dstFace, 657304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint width, jint height, 658304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint srcAlloc, jint srcXoff, jint srcYoff, 659304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint srcMip, jint srcFace) 660304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk{ 6614c2e4c80ce519e09e5b00fd7533e64a834d70639Jason Sams LOG_API("nAllocation2DData_s, con(%p), dstAlloc(%p), dstXoff(%i), dstYoff(%i)," 662304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " dstMip(%i), dstFace(%i), width(%i), height(%i)," 663304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i), srcFace(%i)", 664304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, dstFace, 665304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip, srcFace); 666304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 667304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk rsAllocationCopy2DRange(con, 668304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)dstAlloc, 669304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstXoff, dstYoff, 670304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstMip, dstFace, 671304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, 672304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)srcAlloc, 673304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcXoff, srcYoff, 674304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcMip, srcFace); 675304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk} 676304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 677304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchoukstatic void 6782e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jintArray data) 67940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 68040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 68140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 68240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 683e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 684e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 685ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 68640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 68740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 68840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 689fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationRead_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jshortArray data) 690fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 691fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 692fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 693fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 694e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 695e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 696fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseShortArrayElements(data, ptr, 0); 697fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 698fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 699fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 700fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationRead_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jbyteArray data) 701fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 702fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 703fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 704fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 705e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 706e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 707fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseByteArrayElements(data, ptr, 0); 708fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 709fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 710fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 7112e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jfloatArray data) 71240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 71340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 714a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 71540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 716e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 717e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 718ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 71940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 720d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 721dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic jint 7222e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationGetType(JNIEnv *_env, jobject _this, RsContext con, jint a) 723dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 724dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nAllocationGetType, con(%p), a(%p)", con, (RsAllocation)a); 725581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return (jint) rsaAllocationGetType(con, (RsAllocation)a); 726dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 727dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 7285edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 7295edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX) 7305edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 7315edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", con, (RsAllocation)alloc, dimX); 7325edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize1D(con, (RsAllocation)alloc, dimX); 7335edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 7345edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 7355edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 7365edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize2D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX, jint dimY) 7375edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 7385edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i), sizeY(%i)", con, (RsAllocation)alloc, dimX, dimY); 7395edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize2D(con, (RsAllocation)alloc, dimX, dimY); 7405edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 7415edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 742aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk// ----------------------------------- 743aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 744aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 7452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint native_asset) 746aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 74771f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("______nFileA3D %u", (uint32_t) native_asset); 748aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 749aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 750aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 751b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromMemory(con, asset->getBuffer(false), asset->getLength()); 752b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 753b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 754b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 755b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 756b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFileA3DCreateFromAsset(JNIEnv *_env, jobject _this, RsContext con, jobject _assetMgr, jstring _path) 757b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 758b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 759b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 760b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 761b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 762b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 763b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 764b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 765b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 766b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 767b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 768b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 769b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromAsset(con, asset); 770b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 771b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 772b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 773b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 774b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFileA3DCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, jstring fileName) 775b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 776b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 777b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromFile(con, fileNameUTF.c_str()); 778b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 779aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 780aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 781aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 782aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 7832e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D) 784aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 785aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk int32_t numEntries = 0; 786581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetNumIndexEntries(con, &numEntries, (RsFile)fileA3D); 787aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return numEntries; 788aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 789aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 790aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic void 7912e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries) 792aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 79371f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("______nFileA3D %u", (uint32_t) fileA3D); 794aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry)); 795aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 796581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetIndexEntries(con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D); 797aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 798aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk for(jint i = 0; i < numEntries; i ++) { 799aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName)); 800aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID); 801aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk } 802aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 803aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk free(fileEntries); 804aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 805aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 806aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 8072e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint index) 808aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 80971f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("______nFileA3D %u", (uint32_t) fileA3D); 810581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk jint id = (jint)rsaFileA3DGetEntryByIndex(con, (uint32_t)index, (RsFile)fileA3D); 811aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 812aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 813d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 814d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 815d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 8169b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchoukstatic int 817b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, 818b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fileName, jfloat fontSize, jint dpi) 8199b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk{ 820b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 821e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromFile(con, 822e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fileNameUTF.c_str(), fileNameUTF.length(), 823e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi); 824b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 825b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 826b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 827b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 828b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 829b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, 830b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring name, jfloat fontSize, jint dpi, jint native_asset) 831b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 832b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 833b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 nameUTF(_env, name); 834b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 835e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromMemory(con, 836e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk nameUTF.c_str(), nameUTF.length(), 837e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 838b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 839b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 840b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 841b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 842b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 843b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromAsset(JNIEnv *_env, jobject _this, RsContext con, jobject _assetMgr, jstring _path, 844b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jfloat fontSize, jint dpi) 845b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 846b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 847b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 848b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 849b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 850b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 851b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 852b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 853b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 854b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 855b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 8569b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 857e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromMemory(con, 858e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk str.c_str(), str.length(), 859e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 860b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 861b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk delete asset; 8629b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return id; 8639b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk} 8649b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 865bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 866bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 867bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 8682e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint script, jint alloc, jint slot) 869d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 870d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 871bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 872d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 873d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 874d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarI(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 8764d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 877cfc04366998cd0c626594c9cf70336a11bdf5996Jason Sams LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 8784d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarI(con, (RsScript)script, slot, val); 8794d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8804d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 8814d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 8826f4cf0b8885403ead157ae00fd43cf1282331c23Jason SamsnScriptSetVarObj(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 8836f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{ 8846f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams LOG_API("nScriptSetVarObj, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 8856f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams rsScriptSetVarObj(con, (RsScript)script, slot, (RsObjectBase)val); 8866f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams} 8876f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams 8886f4cf0b8885403ead157ae00fd43cf1282331c23Jason Samsstatic void 889031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen HinesnScriptSetVarJ(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jlong val) 890031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{ 891031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", con, (void *)script, slot, val); 892031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsScriptSetVarJ(con, (RsScript)script, slot, val); 893031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines} 894031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines 895031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hinesstatic void 8962e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarF(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, float val) 8974d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 898ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", con, (void *)script, slot, val); 8994d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarF(con, (RsScript)script, slot, val); 9004d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 9014d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 9024d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 903ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen HinesnScriptSetVarD(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, double val) 904ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{ 905ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", con, (void *)script, slot, val); 906ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsScriptSetVarD(con, (RsScript)script, slot, val); 907ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines} 908ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 909ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hinesstatic void 9102e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 9114d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 9124d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9134d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 9144d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 9154d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarV(con, (RsScript)script, slot, ptr, len); 9164d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 9174d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 9184d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 919d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 920d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9212e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone) 922584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 92307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 924584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 925584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 926584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 927584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 928584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 929bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 930584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 931584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 932584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 933584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 934584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 935584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 93622534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 9372e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvoke(JNIEnv *_env, jobject _this, RsContext con, jint obj, jint slot) 93822534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 9394d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 9404d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 94122534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 94222534176fb5c1257130ef4ee589739ca42766a32Jason Sams 943584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 9442e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 945be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 9464d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9474d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 9484d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 9494d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvokeV(con, (RsScript)script, slot, ptr, len); 9504d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 951be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 952be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 9536e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 9546e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason SamsnScriptForEach(JNIEnv *_env, jobject _this, RsContext con, 9556e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint script, jint slot, jint ain, jint aout) 9566e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 9576e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9586e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0); 9596e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 9606e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 9616e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason SamsnScriptForEachV(JNIEnv *_env, jobject _this, RsContext con, 9626e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint script, jint slot, jint ain, jint aout, jbyteArray params) 9636e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 9646e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9656e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint len = _env->GetArrayLength(params); 9666e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jbyte *ptr = _env->GetByteArrayElements(params, NULL); 9676e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len); 9686e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT); 9696e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 9706e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams 971d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 972fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 973fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 974e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Samsstatic jint 975e4a06c5fc738bf219f2a495e12a637b2d0871651Jason SamsnScriptCCreate(JNIEnv *_env, jobject _this, RsContext con, 976e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jstring resName, jstring cacheDir, 977e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jbyteArray scriptRef, jint length) 978d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 979e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 980e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 981e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 resNameUTF(_env, resName); 982e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir); 983e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jint ret = 0; 9848451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes jbyte* script_ptr = NULL; 98543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 98643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 98743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 98843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 9898451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "script == null"); 99043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 99143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 99243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 99343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 9948451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "length < 0"); 99543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 99643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 997e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams remaining = _env->GetArrayLength(scriptRef); 99843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 99943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 10008451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", 10018451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes // "length > script.length - offset"); 100243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 100343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 1004e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams script_ptr = (jbyte *) 100543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 100643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 1007e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams //rsScriptCSetText(con, (const char *)script_ptr, length); 1008e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 1009e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk ret = (jint)rsScriptCCreate(con, 1010e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk resNameUTF.c_str(), resNameUTF.length(), 1011e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk cacheDirUTF.c_str(), cacheDirUTF.length(), 1012e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams (const char *)script_ptr, length); 101339ddc950c9064129ead5de04b200106c0659f937Jason Sams 101443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 1015e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams if (script_ptr) { 1016e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams _env->ReleasePrimitiveArrayCritical(scriptRef, script_ptr, 101743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 101843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 1019d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1020e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams return ret; 1021d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1022d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1023d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1024d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1025d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 1026331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason SamsnProgramStoreCreate(JNIEnv *_env, jobject _this, RsContext con, 1027331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean colorMaskR, jboolean colorMaskG, jboolean colorMaskB, jboolean colorMaskA, 1028331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean depthMask, jboolean ditherEnable, 1029331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint srcFunc, jint destFunc, 1030331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint depthFunc) 1031d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 103254db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreCreate, con(%p)", con); 1033331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams return (jint)rsProgramStoreCreate(con, colorMaskR, colorMaskG, colorMaskB, colorMaskA, 1034331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams depthMask, ditherEnable, (RsBlendSrcFunc)srcFunc, 1035331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams (RsBlendDstFunc)destFunc, (RsDepthFunc)depthFunc); 1036d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1037d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10380011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 10390011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 10400011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 10412e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindConstants(JNIEnv *_env, jobject _this, RsContext con, jint vpv, jint slot, jint a) 10420011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 10430011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 10440011bcf57ff711a221a3a4c73f2a79125111647dJason Sams rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a); 10450011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 104654c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 1047d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10482e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindTexture(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 104954c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 105068afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 105168afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 105254c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 105354c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 105454c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 10552e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindSampler(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 1056d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 105768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 105868afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1059d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1060d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 106168afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 1062d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 106368afd01ec9fd37774d8291192952a25e5605b6fbJason Samsstatic jint 10642123b46ba85adb2cfb78068f8368e830640118d3Alex SakhartchouknProgramFragmentCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, 10652123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jobjectArray texNames, jintArray params) 10667e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 1067b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 10687e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10697e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 10707e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10712123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk int texCount = _env->GetArrayLength(texNames); 10722123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8 names(_env, texNames, texCount); 10732123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char ** nameArray = names.c_str(); 10742123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t* sizeArray = names.c_str_len(); 10752123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 1076991040c8261237997915f8a4c899a6ea5012fb42Jason Sams LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, paramLen); 10777e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10782123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jint ret = (jint)rsProgramFragmentCreate(con, shaderUTF.c_str(), shaderUTF.length(), 10792123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk nameArray, texCount, sizeArray, 10802123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk (uint32_t *)paramPtr, paramLen); 10812123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 10827e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10837e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 10847e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 10857e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10867e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10871fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 10881fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10890011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 10902123b46ba85adb2cfb78068f8368e830640118d3Alex SakhartchouknProgramVertexCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, 10912123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jobjectArray texNames, jintArray params) 10921fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 1093b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 10940011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10950011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 10961fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1097991040c8261237997915f8a4c899a6ea5012fb42Jason Sams LOG_API("nProgramVertexCreate, con(%p), paramLen(%i)", con, paramLen); 1098ee41112e1539de95596600fd2c6dada5d275217fJason Sams 10992123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk int texCount = _env->GetArrayLength(texNames); 11002123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8 names(_env, texNames, texCount); 11012123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char ** nameArray = names.c_str(); 11022123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t* sizeArray = names.c_str_len(); 11032123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 11042123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jint ret = (jint)rsProgramVertexCreate(con, shaderUTF.c_str(), shaderUTF.length(), 11052123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk nameArray, texCount, sizeArray, 11062123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk (uint32_t *)paramPtr, paramLen); 11072123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 11080011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 11090011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 11101fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11111fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1112ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1113ebfb436a49673693b98469683451bd9ede797557Jason Sams 1114ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 111594aaed38467c71a6c804f0e18b41346a4013c25bJason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, RsContext con, jboolean pointSprite, jint cull) 1116ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 111794aaed38467c71a6c804f0e18b41346a4013c25bJason Sams LOG_API("nProgramRasterCreate, con(%p), pointSprite(%i), cull(%i)", con, pointSprite, cull); 111894aaed38467c71a6c804f0e18b41346a4013c25bJason Sams return (jint)rsProgramRasterCreate(con, pointSprite, (RsCullMode)cull); 1119ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1120ebfb436a49673693b98469683451bd9ede797557Jason Sams 1121d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1122d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1123d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1124d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 11252e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, RsContext con, jint script) 1126d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1127d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1128bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1129d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1130d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1131d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 11322e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramStore(JNIEnv *_env, jobject _this, RsContext con, jint pfs) 1133d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 113454db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", con, (RsProgramStore)pfs); 113554db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsContextBindProgramStore(con, (RsProgramStore)pfs); 1136d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1137d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1138d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 11392e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1140d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1141d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1142bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1143d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1144d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 11450826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 11462e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, RsContext con, jint pf) 11470826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 11480826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1149bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 11500826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 11510826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1152d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 11532e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1154ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1155ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 1156ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 1157ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1158ebfb436a49673693b98469683451bd9ede797557Jason Sams 1159d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 116002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 116102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 116202fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 1163a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex SakhartchouknSamplerCreate(JNIEnv *_env, jobject _this, RsContext con, jint magFilter, jint minFilter, 1164a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk jint wrapS, jint wrapT, jint wrapR, jfloat aniso) 116502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 1166bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1167a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk return (jint)rsSamplerCreate(con, 1168a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)magFilter, 1169a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)minFilter, 1170a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapS, 1171a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapT, 1172a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapR, 1173a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk aniso); 117402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 117502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1176bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1177bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1178f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams//native int rsnPathCreate(int con, int prim, boolean isStatic, int vtx, int loop, float q); 1179f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Samsstatic jint 1180f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason SamsnPathCreate(JNIEnv *_env, jobject _this, RsContext con, jint prim, jboolean isStatic, jint _vtx, jint _loop, jfloat q) { 1181f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams LOG_API("nPathCreate, con(%p)", con); 1182f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams 1183f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams int id = (int)rsPathCreate(con, (RsPathPrimitive)prim, isStatic, 1184f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams (RsAllocation)_vtx, 1185f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams (RsAllocation)_loop, q); 1186f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams return id; 1187f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams} 1188f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams 11891bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 119025999a08a6652ff5d7d0973f279f1e92e04b3506Alex SakhartchouknMeshCreate(JNIEnv *_env, jobject _this, RsContext con, jintArray _vtx, jintArray _idx, jintArray _prim) 1191164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 119225999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk LOG_API("nMeshCreate, con(%p)", con); 1193164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 119425999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint vtxLen = _env->GetArrayLength(_vtx); 119525999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *vtxPtr = _env->GetIntArrayElements(_vtx, NULL); 119625999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint idxLen = _env->GetArrayLength(_idx); 119725999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *idxPtr = _env->GetIntArrayElements(_idx, NULL); 119825999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint primLen = _env->GetArrayLength(_prim); 119925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *primPtr = _env->GetIntArrayElements(_prim, NULL); 1200164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 120125999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk int id = (int)rsMeshCreate(con, 120225999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)vtxPtr, vtxLen, 120325999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)idxPtr, idxLen, 120425999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (uint32_t *)primPtr, primLen); 120580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 120625999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_vtx, vtxPtr, 0); 120725999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_idx, idxPtr, 0); 120825999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_prim, primPtr, 0); 120925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk return id; 12109d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk} 12119d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk 121280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 12132e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 121480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 121580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 121680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint vtxCount = 0; 1217581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertexBufferCount(con, (RsMesh)mesh, &vtxCount); 121880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return vtxCount; 121980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 122080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 122180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 12222e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndexCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 122380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 122480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 122580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint idxCount = 0; 1226581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndexCount(con, (RsMesh)mesh, &idxCount); 122780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return idxCount; 122880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 122980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 123080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 12312e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _ids, int numVtxIDs) 123280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 123380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 123480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 123580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation)); 1236581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertices(con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs); 123780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 123880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numVtxIDs; i ++) { 123980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&allocs[i]); 124080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 124180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 124280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 124380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 124480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 124580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 12462e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _idxIds, jintArray _primitives, int numIndices) 124780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 124880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 124980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 125080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation)); 125180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t)); 125280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1253581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndices(con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices); 125480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 125580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numIndices; i ++) { 125680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_idxIds, i, 1, (const jint*)&allocs[i]); 125780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_primitives, i, 1, (const jint*)&prims[i]); 125880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 125980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 126080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 126180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(prims); 1262164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1263164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1264164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk// --------------------------------------------------------------------------- 1265164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1266d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 126794d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1268d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1269d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 12701c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"_nInit", "()V", (void*)_nInit }, 12711c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 12721c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 12731c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 12741c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 1275edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams{"nContextGetUserMessage", "(I[I)I", (void*)nContextGetUserMessage }, 12761c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, 1277edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams{"nContextPeekMessage", "(I[I)I", (void*)nContextPeekMessage }, 12781c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 12791c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, 12801c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, 12812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams// All methods below are thread protected in java. 12844382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines{"rsnContextCreate", "(III)I", (void*)nContextCreate }, 12854382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines{"rsnContextCreateGL", "(IIIIIIIIIIIIIFI)I", (void*)nContextCreateGL }, 12862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextFinish", "(I)V", (void*)nContextFinish }, 12872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority }, 12882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1289faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams{"rsnContextSetSurfaceTexture", "(IIILandroid/graphics/SurfaceTexture;)V", (void*)nContextSetSurfaceTexture }, 1290b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextDestroy", "(I)V", (void*)nContextDestroy }, 12912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextDump", "(II)V", (void*)nContextDump }, 12922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextPause", "(I)V", (void*)nContextPause }, 12932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextResume", "(I)V", (void*)nContextResume }, 12942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAssignName", "(II[B)V", (void*)nAssignName }, 1295b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnGetName", "(II)Ljava/lang/String;", (void*)nGetName }, 12962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnObjDestroy", "(II)V", (void*)nObjDestroy }, 12972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1298b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFileA3DCreateFromFile", "(ILjava/lang/String;)I", (void*)nFileA3DCreateFromFile }, 12992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DCreateFromAssetStream", "(II)I", (void*)nFileA3DCreateFromAssetStream }, 1300b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFileA3DCreateFromAsset", "(ILandroid/content/res/AssetManager;Ljava/lang/String;)I", (void*)nFileA3DCreateFromAsset }, 13012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetNumIndexEntries", "(II)I", (void*)nFileA3DGetNumIndexEntries }, 1302b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFileA3DGetIndexEntries", "(III[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, 13032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetEntryByIndex", "(III)I", (void*)nFileA3DGetEntryByIndex }, 13042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1305e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk{"rsnFontCreateFromFile", "(ILjava/lang/String;FI)I", (void*)nFontCreateFromFile }, 1306b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFontCreateFromAssetStream", "(ILjava/lang/String;FII)I", (void*)nFontCreateFromAssetStream }, 1307b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFontCreateFromAsset", "(ILandroid/content/res/AssetManager;Ljava/lang/String;FI)I", (void*)nFontCreateFromAsset }, 13082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementCreate", "(IIIZI)I", (void*)nElementCreate }, 131070d4e5024298f71edb3b04867e05568f5495b4ceJason Sams{"rsnElementCreate2", "(I[I[Ljava/lang/String;[I)I", (void*)nElementCreate2 }, 13112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementGetNativeData", "(II[I)V", (void*)nElementGetNativeData }, 13127d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk{"rsnElementGetSubElements", "(II[I[Ljava/lang/String;[I)V", (void*)nElementGetSubElements }, 13132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1314bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams{"rsnTypeCreate", "(IIIIIZZ)I", (void*)nTypeCreate }, 1315b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData }, 13162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1317857d0c7017da763a420e825fffa2f260eb982c97Jason Sams{"rsnAllocationCreateTyped", "(IIIII)I", (void*)nAllocationCreateTyped }, 13185476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCreateFromBitmap", "(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCreateFromBitmap }, 13195476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCubeCreateFromBitmap","(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCubeCreateFromBitmap }, 13205476b450e50939940dcf3f15c92335cee2fc572dJason Sams 13214ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyFromBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyFromBitmap }, 13224ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyToBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyToBitmap }, 13234ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 13245476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationSyncAll", "(III)V", (void*)nAllocationSyncAll }, 1325615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams{"rsnAllocationGetSurfaceTextureID", "(II)I", (void*)nAllocationGetSurfaceTextureID }, 132649a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[II)V", (void*)nAllocationData1D_i }, 132749a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[SI)V", (void*)nAllocationData1D_s }, 132849a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[BI)V", (void*)nAllocationData1D_b }, 132949a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[FI)V", (void*)nAllocationData1D_f }, 133049a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationElementData1D", "(IIIII[BI)V", (void*)nAllocationElementData1D }, 133149a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[II)V", (void*)nAllocationData2D_i }, 1332fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationData2D", "(IIIIIIII[SI)V", (void*)nAllocationData2D_s }, 1333fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationData2D", "(IIIIIIII[BI)V", (void*)nAllocationData2D_b }, 133449a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[FI)V", (void*)nAllocationData2D_f }, 1335304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk{"rsnAllocationData2D", "(IIIIIIIIIIIII)V", (void*)nAllocationData2D_alloc }, 13362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[I)V", (void*)nAllocationRead_i }, 1337fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationRead", "(II[S)V", (void*)nAllocationRead_s }, 1338fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationRead", "(II[B)V", (void*)nAllocationRead_b }, 13392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[F)V", (void*)nAllocationRead_f }, 13402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationGetType", "(II)I", (void*)nAllocationGetType}, 13415edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize1D", "(III)V", (void*)nAllocationResize1D }, 13425edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize2D", "(IIII)V", (void*)nAllocationResize2D }, 1343f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams{"rsnAllocationGenerateMipmaps", "(II)V", (void*)nAllocationGenerateMipmaps }, 13442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptBindAllocation", "(IIII)V", (void*)nScriptBindAllocation }, 13462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone }, 13472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke }, 13482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV }, 13496e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{"rsnScriptForEach", "(IIIII)V", (void*)nScriptForEach }, 13506e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{"rsnScriptForEach", "(IIIII[B)V", (void*)nScriptForEachV }, 13512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI }, 1352031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{"rsnScriptSetVarJ", "(IIIJ)V", (void*)nScriptSetVarJ }, 13532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, 1354ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD }, 13552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV }, 13566f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{"rsnScriptSetVarObj", "(IIII)V", (void*)nScriptSetVarObj }, 13572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1358e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams{"rsnScriptCCreate", "(ILjava/lang/String;Ljava/lang/String;[BI)I", (void*)nScriptCCreate }, 13592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1360331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams{"rsnProgramStoreCreate", "(IZZZZZZIII)I", (void*)nProgramStoreCreate }, 13612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindConstants", "(IIII)V", (void*)nProgramBindConstants }, 13632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindTexture", "(IIII)V", (void*)nProgramBindTexture }, 13642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindSampler", "(IIII)V", (void*)nProgramBindSampler }, 13652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13662123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk{"rsnProgramFragmentCreate", "(ILjava/lang/String;[Ljava/lang/String;[I)I", (void*)nProgramFragmentCreate }, 136794aaed38467c71a6c804f0e18b41346a4013c25bJason Sams{"rsnProgramRasterCreate", "(IZI)I", (void*)nProgramRasterCreate }, 13682123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk{"rsnProgramVertexCreate", "(ILjava/lang/String;[Ljava/lang/String;[I)I", (void*)nProgramVertexCreate }, 13692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindRootScript", "(II)V", (void*)nContextBindRootScript }, 1371b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextBindProgramStore", "(II)V", (void*)nContextBindProgramStore }, 13722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramFragment", "(II)V", (void*)nContextBindProgramFragment }, 13732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramVertex", "(II)V", (void*)nContextBindProgramVertex }, 13742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramRaster", "(II)V", (void*)nContextBindProgramRaster }, 13752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1376a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk{"rsnSamplerCreate", "(IIIIIIF)I", (void*)nSamplerCreate }, 13772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1378f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams{"rsnPathCreate", "(IIZIIF)I", (void*)nPathCreate }, 137925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk{"rsnMeshCreate", "(I[I[I[I)I", (void*)nMeshCreate }, 13802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetVertexBufferCount", "(II)I", (void*)nMeshGetVertexBufferCount }, 13822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndexCount", "(II)I", (void*)nMeshGetIndexCount }, 1383b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnMeshGetVertices", "(II[II)V", (void*)nMeshGetVertices }, 13842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndices", "(II[I[II)V", (void*)nMeshGetIndices }, 138580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1386d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1387d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1388d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1389d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1390d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1391d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1392d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1393d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1394d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1395d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1396d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1397d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1398d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1399d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1400d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1401d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 14023762c311729fe9f3af085c14c5c1fb471d994c03Steve Block ALOGE("ERROR: GetEnv failed\n"); 1403d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1404d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1405d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1406d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1407d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 14083762c311729fe9f3af085c14c5c1fb471d994c03Steve Block ALOGE("ERROR: MediaPlayer native registration failed\n"); 1409d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1410d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1411d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1412d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1413d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1414d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1415d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1416d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1417d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1418