android_renderscript_RenderScript.cpp revision fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33
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 26ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams#include <core/SkBitmap.h> 27650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkPixelRef.h> 28650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkStream.h> 29650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkTemplates.h> 30650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <images/SkImageDecoder.h> 31ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 32b13b9bdad2baf6ad1ec2e56b6b7598fa20f55fc4Mathias Agopian#include <androidfw/Asset.h> 33b13b9bdad2baf6ad1ec2e56b6b7598fa20f55fc4Mathias Agopian#include <androidfw/AssetManager.h> 34b13b9bdad2baf6ad1ec2e56b6b7598fa20f55fc4Mathias Agopian#include <androidfw/ResourceTypes.h> 35f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 36d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "jni.h" 37d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "JNIHelp.h" 38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "android_runtime/AndroidRuntime.h" 39ee956053d6e3f7a7a82e41853b9b251fdc226d7aJim Miller#include "android_runtime/android_view_Surface.h" 40b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk#include "android_runtime/android_util_AssetManager.h" 41d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 421d6983af336b2b1d3a24aece58ce0850aa79e8a0Jason Sams#include <rs.h> 431d6983af336b2b1d3a24aece58ce0850aa79e8a0Jason Sams#include <rsEnv.h> 44fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams#include <gui/Surface.h> 45faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <gui/SurfaceTexture.h> 46faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <gui/SurfaceTextureClient.h> 47faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <android_runtime/android_graphics_SurfaceTexture.h> 48d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 493762c311729fe9f3af085c14c5c1fb471d994c03Steve Block//#define LOG_API ALOGE 50d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define LOG_API(...) 51d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 52d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android; 53d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 54b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukclass AutoJavaStringToUTF8 { 55b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukpublic: 562123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringToUTF8(JNIEnv* env, jstring str) : fEnv(env), fJStr(str) { 57b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fCStr = env->GetStringUTFChars(str, NULL); 58b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fLength = env->GetStringUTFLength(str); 59b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 602123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk ~AutoJavaStringToUTF8() { 61b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fEnv->ReleaseStringUTFChars(fJStr, fCStr); 62b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 63b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* c_str() const { return fCStr; } 64b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize length() const { return fLength; } 65b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 66b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukprivate: 67b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk JNIEnv* fEnv; 68b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fJStr; 69b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* fCStr; 70b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize fLength; 71b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk}; 72b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 732123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchoukclass AutoJavaStringArrayToUTF8 { 742123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchoukpublic: 752123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8(JNIEnv* env, jobjectArray strings, jsize stringsLength) 762123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk : mEnv(env), mStrings(strings), mStringsLength(stringsLength) { 772123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mCStrings = NULL; 782123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mSizeArray = NULL; 792123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk if (stringsLength > 0) { 802123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mCStrings = (const char **)calloc(stringsLength, sizeof(char *)); 812123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mSizeArray = (size_t*)calloc(stringsLength, sizeof(size_t)); 822123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk for (jsize ct = 0; ct < stringsLength; ct ++) { 832123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct); 842123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mCStrings[ct] = mEnv->GetStringUTFChars(s, NULL); 852123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mSizeArray[ct] = mEnv->GetStringUTFLength(s); 862123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 872123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 882123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 892123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk ~AutoJavaStringArrayToUTF8() { 902123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk for (jsize ct=0; ct < mStringsLength; ct++) { 912123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct); 922123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk mEnv->ReleaseStringUTFChars(s, mCStrings[ct]); 932123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 942123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk free(mCStrings); 952123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk free(mSizeArray); 962123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk } 972123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char **c_str() const { return mCStrings; } 982123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t *c_str_len() const { return mSizeArray; } 992123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jsize length() const { return mStringsLength; } 1002123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 1012123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchoukprivate: 1022123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk JNIEnv *mEnv; 1032123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jobjectArray mStrings; 1042123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char **mCStrings; 1052123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t *mSizeArray; 1062123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jsize mStringsLength; 1072123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk}; 1082123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 109d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 110d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 111ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gContextId = 0; 112ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gNativeBitmapID = 0; 11343ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic jfieldID gTypeNativeCache = 0; 114d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 115d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void _nInit(JNIEnv *_env, jclass _this) 116d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 117d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams gContextId = _env->GetFieldID(_this, "mContext", "I"); 118ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 119ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); 120ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I"); 121d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 122d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 123d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 124d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1253eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsstatic void 1262e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextFinish(JNIEnv *_env, jobject _this, RsContext con) 12796ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams{ 12896ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams LOG_API("nContextFinish, con(%p)", con); 12996ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams rsContextFinish(con); 13096ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams} 13196ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 13296ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Samsstatic void 1332e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAssignName(JNIEnv *_env, jobject _this, RsContext con, jint obj, jbyteArray str) 1343eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{ 13507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAssignName, con(%p), obj(%p)", con, (void *)obj); 1363eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jint len = _env->GetArrayLength(str); 1373eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 138bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAssignName(con, (void *)obj, (const char *)cptr, len); 1393eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 1403eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams} 1413eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 142fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchoukstatic jstring 1432e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnGetName(JNIEnv *_env, jobject _this, RsContext con, jint obj) 144fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk{ 145fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk LOG_API("nGetName, con(%p), obj(%p)", con, (void *)obj); 146fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk const char *name = NULL; 147581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaGetName(con, (void *)obj, &name); 148581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk if(name == NULL || strlen(name) == 0) { 149581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return NULL; 150581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk } 151fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk return _env->NewStringUTF(name); 152fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk} 153fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk 1547ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 1552e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnObjDestroy(JNIEnv *_env, jobject _this, RsContext con, jint obj) 1567ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 1577ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj); 1589c25aee52672f9c8908e062bde502341c189970eJason Sams rsObjDestroy(con, (void *)obj); 1597ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 1607ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 1613eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 1623eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 163d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 164d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 165d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 166d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 167d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsDeviceCreate(); 168d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 169d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 170d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 171d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) 172d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 173d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 174d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 175d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 176d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 177ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 178ebfb436a49673693b98469683451bd9ede797557Jason SamsnDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value) 179ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 180ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value); 181ebfb436a49673693b98469683451bd9ede797557Jason Sams return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value); 182ebfb436a49673693b98469683451bd9ede797557Jason Sams} 183ebfb436a49673693b98469683451bd9ede797557Jason Sams 184d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 1854382467a80dd12c6362d57edca7f2367f7ae877cStephen HinesnContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver, jint sdkVer) 186d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 187d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 1884382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines return (jint)rsContextCreate((RsDevice)dev, ver, sdkVer); 189704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 190704ff64b099406bb328898a7443921f22dbffd6dJason Sams 191704ff64b099406bb328898a7443921f22dbffd6dJason Samsstatic jint 1924382467a80dd12c6362d57edca7f2367f7ae877cStephen HinesnContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, jint sdkVer, 19311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 19411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 19511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 19611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 1972c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int samplesMin, int samplesPref, float samplesQ, 1982c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int dpi) 19911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams{ 20011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams RsSurfaceConfig sc; 20111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaMin = alphaMin; 20211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaPref = alphaPref; 20311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorMin = colorMin; 20411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorPref = colorPref; 20511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthMin = depthMin; 20611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthPref = depthPref; 20711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesMin = samplesMin; 20811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesPref = samplesPref; 20911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesQ = samplesQ; 21011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams 211704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nContextCreateGL"); 2124382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines return (jint)rsContextCreateGL((RsDevice)dev, ver, sdkVer, sc, dpi); 213d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 214d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 215d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2162e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetPriority(JNIEnv *_env, jobject _this, RsContext con, jint p) 2177d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{ 2187d787b4722eaeb79cab42c36060336e092b77b5fJason Sams LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p); 2197d787b4722eaeb79cab42c36060336e092b77b5fJason Sams rsContextSetPriority(con, p); 2207d787b4722eaeb79cab42c36060336e092b77b5fJason Sams} 2217d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 2227d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 2237d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 2247d787b4722eaeb79cab42c36060336e092b77b5fJason Samsstatic void 2252e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetSurface(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject wnd) 226efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 2273bc47d438171dce294e816366d53bc9eca772c5bJason Sams LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)wnd); 228efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 2296c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk ANativeWindow * window = NULL; 230efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 231efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 232efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 2336c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk window = android_Surface_getNativeWindow(_env, wnd).get(); 234efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 235efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 2366c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk rsContextSetSurface(con, width, height, window); 237efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 238efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 239efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 240faa32b33b50ad941f631716dd0915e936bdc3ac5Jason SamsnContextSetSurfaceTexture(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject sur) 241faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams{ 242faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams LOG_API("nContextSetSurfaceTexture, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)sur); 243faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 244faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams sp<ANativeWindow> window; 245faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams sp<SurfaceTexture> st; 246faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams if (sur == 0) { 247faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 248faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } else { 249faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams st = SurfaceTexture_getSurfaceTexture(_env, sur); 250faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams window = new SurfaceTextureClient(st); 251faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } 252faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 253faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams rsContextSetSurface(con, width, height, window.get()); 254faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams} 255faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 256faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Samsstatic void 2572e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDestroy(JNIEnv *_env, jobject _this, RsContext con) 258d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 2592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams LOG_API("nContextDestroy, con(%p)", con); 2602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsContextDestroy(con); 261d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 262d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 263715333b832fb448c32165c7d97d408a3fa43f7cbJason Samsstatic void 2642e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDump(JNIEnv *_env, jobject _this, RsContext con, jint bits) 265715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{ 266715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits); 267715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDump((RsContext)con, bits); 268715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams} 269d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 270d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2712e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextPause(JNIEnv *_env, jobject _this, RsContext con) 27265e7aa56f56097418d617663683544c25b3988eaJason Sams{ 27365e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextPause, con(%p)", con); 27465e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextPause(con); 27565e7aa56f56097418d617663683544c25b3988eaJason Sams} 27665e7aa56f56097418d617663683544c25b3988eaJason Sams 27765e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 2782e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextResume(JNIEnv *_env, jobject _this, RsContext con) 27965e7aa56f56097418d617663683544c25b3988eaJason Sams{ 28065e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextResume, con(%p)", con); 28165e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextResume(con); 28265e7aa56f56097418d617663683544c25b3988eaJason Sams} 28365e7aa56f56097418d617663683544c25b3988eaJason Sams 2841c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2851c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jstring 2861c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetErrorMessage(JNIEnv *_env, jobject _this, RsContext con) 2871c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2881c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextGetErrorMessage, con(%p)", con); 2891c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams char buf[1024]; 2901c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2911c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2921c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 29365bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextGetMessage(con, 29465bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams buf, sizeof(buf), 29565bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 296edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 2971c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (!id && receiveLen) { 29871f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("message receive buffer too small. %i", receiveLen); 2991c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 3001c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams return _env->NewStringUTF(buf); 3011c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 3021c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 303edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Samsstatic jint 3041c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) 305516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 306516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 307516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextGetMessage, con(%p), len(%i)", con, len); 308516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 309516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 3101c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 31165bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextGetMessage(con, 31265bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, len * 4, 31365bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 314edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 315516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 31671f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("message receive buffer too small. %i", receiveLen); 317516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 318516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 319edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams return id; 3201c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 3211c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 3221c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jint 323edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason SamsnContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData) 3241c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 3251c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextPeekMessage, con(%p)", con); 3261c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); 3271c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 3281c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 32965bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextPeekMessage(con, &receiveLen, sizeof(receiveLen), 330edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 3311c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[0] = (jint)subID; 3321c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[1] = (jint)receiveLen; 3331c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); 334516c31911578db8ce53529483c3ded918ac7dc6bJason Sams return id; 335516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 336516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 3372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextInitToClient(JNIEnv *_env, jobject _this, RsContext con) 338516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 339516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextInitToClient, con(%p)", con); 340516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextInitToClient(con); 341516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 342516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 3432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextDeinitToClient(JNIEnv *_env, jobject _this, RsContext con) 344516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 345516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextDeinitToClient, con(%p)", con); 346516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextDeinitToClient(con); 347516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 348516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 349516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 350718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 3512e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementCreate(JNIEnv *_env, jobject _this, RsContext con, jint type, jint kind, jboolean norm, jint size) 352d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 353718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size); 354718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)rsElementCreate(con, (RsDataType)type, (RsDataKind)kind, norm, size); 355d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 356d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 357718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 3582123b46ba85adb2cfb78068f8368e830640118d3Alex SakhartchouknElementCreate2(JNIEnv *_env, jobject _this, RsContext con, 3592123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jintArray _ids, jobjectArray _names, jintArray _arraySizes) 360d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 361718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams int fieldCount = _env->GetArrayLength(_ids); 362704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nElementCreate2, con(%p)", con); 363718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 364718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jint *ids = _env->GetIntArrayElements(_ids, NULL); 36570d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint *arraySizes = _env->GetIntArrayElements(_arraySizes, NULL); 366718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 3672123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8 names(_env, _names, fieldCount); 3682123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 3692123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char **nameArray = names.c_str(); 3702123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t *sizeArray = names.c_str_len(); 3712123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 372e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsElementCreate2(con, 373e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk (RsElement *)ids, fieldCount, 3747a22e107d100caea2a661ec73e4525d69f0f9759Jason Sams nameArray, fieldCount * sizeof(size_t), sizeArray, 375e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk (const uint32_t *)arraySizes, fieldCount); 3762123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 377718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseIntArrayElements(_ids, ids, JNI_ABORT); 37870d4e5024298f71edb3b04867e05568f5495b4ceJason Sams _env->ReleaseIntArrayElements(_arraySizes, arraySizes, JNI_ABORT); 379718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)id; 380d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 381d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 382dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3832e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _elementData) 384dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 385dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_elementData); 386dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetNativeData, con(%p)", con); 387dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 388dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements 389dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(dataSize == 5); 390dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 391dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t elementData[5]; 392581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetNativeData(con, (RsElement)id, elementData, dataSize); 393dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 394dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < dataSize; i ++) { 395dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_elementData, i, 1, (const jint*)&elementData[i]); 396dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 397dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 398dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 399dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 400dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 4017d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex SakhartchouknElementGetSubElements(JNIEnv *_env, jobject _this, RsContext con, jint id, 4027d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk jintArray _IDs, 4037d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk jobjectArray _names, 4047d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk jintArray _arraySizes) 405dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 406dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_IDs); 407dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetSubElements, con(%p)", con); 408dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 409dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t *ids = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t)); 410dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk const char **names = (const char **)malloc((uint32_t)dataSize * sizeof(const char *)); 4117d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk uint32_t *arraySizes = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t)); 412dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 4137d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk rsaElementGetSubElements(con, (RsElement)id, ids, names, arraySizes, (uint32_t)dataSize); 414dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 41511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams for(jint i = 0; i < dataSize; i++) { 416dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i])); 417dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_IDs, i, 1, (const jint*)&ids[i]); 4187d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk _env->SetIntArrayRegion(_arraySizes, i, 1, (const jint*)&arraySizes[i]); 419dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 420dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 421dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(ids); 422dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(names); 4237d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk free(arraySizes); 424dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 425dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 426d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 427d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 4283b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Samsstatic int 429bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason SamsnTypeCreate(JNIEnv *_env, jobject _this, RsContext con, RsElement eid, 430bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces) 431d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 432bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i)", 433bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams con, eid, dimx, dimy, dimz, mips, faces); 4343b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams 435c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsTypeCreate(con, (RsElement)eid, dimx, dimy, dimz, mips, faces); 4363b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams return (jint)id; 437d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 438d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 439dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 4402e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _typeData) 441dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 442dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // We are packing 6 items: mDimX; mDimY; mDimZ; 443dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // mDimLOD; mDimFaces; mElement; into typeData 444dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int elementCount = _env->GetArrayLength(_typeData); 445dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 446dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(elementCount == 6); 447dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nTypeCreate, con(%p)", con); 448dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 449dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t typeData[6]; 450581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaTypeGetNativeData(con, (RsType)id, typeData, 6); 451dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 452dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < elementCount; i ++) { 453dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_typeData, i, 1, (const jint*)&typeData[i]); 454dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 455dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 456dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 457d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 458d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 459d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 460857d0c7017da763a420e825fffa2f260eb982c97Jason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mips, jint usage, jint pointer) 461d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 462857d0c7017da763a420e825fffa2f260eb982c97Jason Sams LOG_API("nAllocationCreateTyped, con(%p), type(%p), mip(%i), usage(%i), ptr(%p)", con, (RsElement)type, mips, usage, (void *)pointer); 463857d0c7017da763a420e825fffa2f260eb982c97Jason Sams return (jint) rsAllocationCreateTyped(con, (RsType)type, (RsAllocationMipmapControl)mips, (uint32_t)usage, (uint32_t)pointer); 464d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 465d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 466d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 4675476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationSyncAll(JNIEnv *_env, jobject _this, RsContext con, jint a, jint bits) 4685476b450e50939940dcf3f15c92335cee2fc572dJason Sams{ 4695476b450e50939940dcf3f15c92335cee2fc572dJason Sams LOG_API("nAllocationSyncAll, con(%p), a(%p), bits(0x%08x)", con, (RsAllocation)a, bits); 4705476b450e50939940dcf3f15c92335cee2fc572dJason Sams rsAllocationSyncAll(con, (RsAllocation)a, (RsAllocationUsageType)bits); 4715476b450e50939940dcf3f15c92335cee2fc572dJason Sams} 4725476b450e50939940dcf3f15c92335cee2fc572dJason Sams 473615e7cee03d1a53072b0369fa9f247811ac56845Jason Samsstatic jint 474615e7cee03d1a53072b0369fa9f247811ac56845Jason SamsnAllocationGetSurfaceTextureID(JNIEnv *_env, jobject _this, RsContext con, jint a) 475615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams{ 476615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams LOG_API("nAllocationGetSurfaceTextureID, con(%p), a(%p)", con, (RsAllocation)a); 477615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams return rsAllocationGetSurfaceTextureID(con, (RsAllocation)a); 478615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams} 479615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams 480f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Samsstatic void 481fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason SamsnAllocationGetSurfaceTextureID2(JNIEnv *_env, jobject _this, RsContext con, jint a, jobject jst) 482fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams{ 483fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams LOG_API("nAllocationGetSurfaceTextureID2, con(%p), a(%p)", con, (RsAllocation)a); 484fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams sp<SurfaceTexture> st = SurfaceTexture_getSurfaceTexture(_env, jst); 485fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams 486fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams rsAllocationGetSurfaceTextureID2(con, (RsAllocation)a, st.get(), sizeof(SurfaceTexture *)); 487fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams} 488fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams 489fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Samsstatic void 490fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason SamsnAllocationSetSurface(JNIEnv *_env, jobject _this, RsContext con, RsAllocation alloc, jobject sur) 491163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams{ 492163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams LOG_API("nAllocationSetSurfaceTexture, con(%p), alloc(%p), surface(%p)", 493163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams con, alloc, (Surface *)sur); 494163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 495fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams sp<Surface> s; 496163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams if (sur != 0) { 497fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams s = Surface_getSurface(_env, sur); 498163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams } 499163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 500fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams rsAllocationSetSurface(con, alloc, static_cast<ANativeWindow *>(s.get())); 501163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams} 502163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 503163766cbe798baf8e86eb8201bc6c3def931d59aJason Samsstatic void 504163766cbe798baf8e86eb8201bc6c3def931d59aJason SamsnAllocationIoSend(JNIEnv *_env, jobject _this, RsContext con, RsAllocation alloc) 505163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams{ 506163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams LOG_API("nAllocationIoSend, con(%p), alloc(%p)", con, alloc); 507163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams rsAllocationIoSend(con, alloc); 508163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams} 509163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 510163766cbe798baf8e86eb8201bc6c3def931d59aJason Samsstatic void 511163766cbe798baf8e86eb8201bc6c3def931d59aJason SamsnAllocationIoReceive(JNIEnv *_env, jobject _this, RsContext con, RsAllocation alloc) 512163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams{ 513163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams LOG_API("nAllocationIoReceive, con(%p), alloc(%p)", con, alloc); 514163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams rsAllocationIoReceive(con, alloc); 515163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams} 516163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 517163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 518163766cbe798baf8e86eb8201bc6c3def931d59aJason Samsstatic void 519f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason SamsnAllocationGenerateMipmaps(JNIEnv *_env, jobject _this, RsContext con, jint alloc) 520f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams{ 521f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams LOG_API("nAllocationGenerateMipmaps, con(%p), a(%p)", con, (RsAllocation)alloc); 522f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsAllocationGenerateMipmaps(con, (RsAllocation)alloc); 523f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams} 524f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams 525fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 5265476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 527fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 528ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 529ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 530ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 531fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 5325476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 5335476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 534c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, 53565bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 53665bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 5375476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 5385476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 539ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 540fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 54167f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchoukstatic int 5425476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 54367f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk{ 54467f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk SkBitmap const * nativeBitmap = 54567f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 54667f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 54767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 5485476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 5495476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 550c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsAllocationCubeCreateFromBitmap(con, 55165bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 55265bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 5535476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 5545476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 55567f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk} 55667f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 55726ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchoukstatic void 5584ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 55926ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk{ 56026ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk SkBitmap const * nativeBitmap = 56126ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 56226ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 563f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int w = bitmap.width(); 564f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int h = bitmap.height(); 56526ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk 5664ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 5674ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const void* ptr = bitmap.getPixels(); 568f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, 0, 0, 569304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, 570f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams w, h, ptr, bitmap.getSize()); 5714ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 5728a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 5738a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5744ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void 5754ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyToBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 5768a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 5774ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = 5784ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 5794ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const SkBitmap& bitmap(*nativeBitmap); 5808a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5814ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 5824ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams void* ptr = bitmap.getPixels(); 5834ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsAllocationCopyToBitmap(con, (RsAllocation)alloc, ptr, bitmap.getSize()); 5844ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 585835b8544cc333ef87e42b1d71cf8ad3cddccdc19Alex Sakhartchouk bitmap.notifyPixelsChanged(); 5868a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 5878a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5884ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void ReleaseBitmapCallback(void *bmp) 589650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 5904ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; 5914ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams nativeBitmap->unlockPixels(); 592650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 593650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 5944ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 595d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 59649a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jintArray data, int sizeBytes) 597d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 598d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 59949a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 600d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 60149a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 602d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 603d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 604d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 605d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 60649a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jshortArray data, int sizeBytes) 607d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 608d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 60949a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 610768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 61149a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 612768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 613d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 614d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 615d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 61649a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jbyteArray data, int sizeBytes) 617d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 618d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 61949a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 620768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 62149a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 622768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 623d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 624d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 625d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 62649a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jfloatArray data, int sizeBytes) 627d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 628d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 62949a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 630d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 63149a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 632d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 633d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 634d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 635d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 63649a05d7b82956009f03acbb92a064eed054eb031Jason Sams// native void rsnAllocationElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes); 63749a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationElementData1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint compIdx, jbyteArray data, int sizeBytes) 63849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{ 63949bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jint len = _env->GetArrayLength(data); 64049a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocationElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); 64149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 6424cbe25a86b4aa3353c8016a129028671e902611fStephen Hines rsAllocation1DElementData(con, (RsAllocation)alloc, offset, lod, ptr, sizeBytes, compIdx); 64349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 64449bdaf0293408159df18a1d8540360f9623c40f7Jason Sams} 64549bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 64649bdaf0293408159df18a1d8540360f9623c40f7Jason Samsstatic void 647fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationData2D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 648fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint w, jint h, jshortArray data, int sizeBytes) 649fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 650fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 651fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason 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); 652fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 653fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 654fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 655fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 656fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 657fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 658fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationData2D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 659fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint w, jint h, jbyteArray data, int sizeBytes) 660fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 661fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 662fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason 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); 663fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 664fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 665fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 666fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 667fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 668fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 66949a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 67049a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jintArray data, int sizeBytes) 671d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 672d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 67349a05d7b82956009f03acbb92a064eed054eb031Jason 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); 674d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 67549a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 676d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 677d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 678d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 679d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 68049a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 68149a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jfloatArray data, int sizeBytes) 682d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 683d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 68449a05d7b82956009f03acbb92a064eed054eb031Jason 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); 685d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 68649a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 687d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 688d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 689d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 69040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 691304b1f5497155bcf91e7b855cfab7a675e80bf26Alex SakhartchouknAllocationData2D_alloc(JNIEnv *_env, jobject _this, RsContext con, 692304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint dstAlloc, jint dstXoff, jint dstYoff, 693304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint dstMip, jint dstFace, 694304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint width, jint height, 695304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint srcAlloc, jint srcXoff, jint srcYoff, 696304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint srcMip, jint srcFace) 697304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk{ 6984c2e4c80ce519e09e5b00fd7533e64a834d70639Jason Sams LOG_API("nAllocation2DData_s, con(%p), dstAlloc(%p), dstXoff(%i), dstYoff(%i)," 699304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " dstMip(%i), dstFace(%i), width(%i), height(%i)," 700304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i), srcFace(%i)", 701304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, dstFace, 702304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip, srcFace); 703304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 704304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk rsAllocationCopy2DRange(con, 705304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)dstAlloc, 706304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstXoff, dstYoff, 707304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstMip, dstFace, 708304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, 709304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)srcAlloc, 710304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcXoff, srcYoff, 711304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcMip, srcFace); 712304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk} 713304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 714304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchoukstatic void 7152e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jintArray data) 71640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 71740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 71840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 71940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 720e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 721e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 722ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 72340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 72440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 72540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 726fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationRead_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jshortArray data) 727fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 728fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 729fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 730fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 731e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 732e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 733fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseShortArrayElements(data, ptr, 0); 734fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 735fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 736fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 737fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationRead_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jbyteArray data) 738fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 739fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 740fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 741fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 742e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 743e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 744fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseByteArrayElements(data, ptr, 0); 745fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 746fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 747fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 7482e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jfloatArray data) 74940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 75040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 751a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 75240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 753e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 754e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 755ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 75640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 757d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 758dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic jint 7592e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationGetType(JNIEnv *_env, jobject _this, RsContext con, jint a) 760dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 761dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nAllocationGetType, con(%p), a(%p)", con, (RsAllocation)a); 762581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return (jint) rsaAllocationGetType(con, (RsAllocation)a); 763dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 764dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 7655edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 7665edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX) 7675edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 7685edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", con, (RsAllocation)alloc, dimX); 7695edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize1D(con, (RsAllocation)alloc, dimX); 7705edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 7715edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 7725edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 7735edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize2D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX, jint dimY) 7745edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 7755edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i), sizeY(%i)", con, (RsAllocation)alloc, dimX, dimY); 7765edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize2D(con, (RsAllocation)alloc, dimX, dimY); 7775edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 7785edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 779aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk// ----------------------------------- 780aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 781aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 7822e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint native_asset) 783aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 78471f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("______nFileA3D %u", (uint32_t) native_asset); 785aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 786aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 787aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 788b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromMemory(con, asset->getBuffer(false), asset->getLength()); 789b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 790b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 791b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 792b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 793b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFileA3DCreateFromAsset(JNIEnv *_env, jobject _this, RsContext con, jobject _assetMgr, jstring _path) 794b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 795b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 796b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 797b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 798b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 799b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 800b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 801b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 802b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 803b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 804b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 805b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 806b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromAsset(con, asset); 807b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 808b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 809b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 810b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 811b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFileA3DCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, jstring fileName) 812b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 813b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 814b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromFile(con, fileNameUTF.c_str()); 815b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 816aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 817aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 818aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 819aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 8202e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D) 821aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 822aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk int32_t numEntries = 0; 823581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetNumIndexEntries(con, &numEntries, (RsFile)fileA3D); 824aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return numEntries; 825aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 826aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 827aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic void 8282e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries) 829aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 83071f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("______nFileA3D %u", (uint32_t) fileA3D); 831aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry)); 832aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 833581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetIndexEntries(con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D); 834aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 835aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk for(jint i = 0; i < numEntries; i ++) { 836aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName)); 837aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID); 838aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk } 839aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 840aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk free(fileEntries); 841aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 842aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 843aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 8442e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint index) 845aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 84671f2cf116aab893e224056c38ab146bd1538dd3eSteve Block ALOGV("______nFileA3D %u", (uint32_t) fileA3D); 847581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk jint id = (jint)rsaFileA3DGetEntryByIndex(con, (uint32_t)index, (RsFile)fileA3D); 848aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 849aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 850d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 851d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 852d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 8539b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchoukstatic int 854b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, 855b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fileName, jfloat fontSize, jint dpi) 8569b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk{ 857b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 858e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromFile(con, 859e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fileNameUTF.c_str(), fileNameUTF.length(), 860e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi); 861b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 862b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 863b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 864b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 865b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 866b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, 867b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring name, jfloat fontSize, jint dpi, jint native_asset) 868b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 869b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 870b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 nameUTF(_env, name); 871b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 872e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromMemory(con, 873e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk nameUTF.c_str(), nameUTF.length(), 874e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 875b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 876b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 877b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 878b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 879b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 880b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromAsset(JNIEnv *_env, jobject _this, RsContext con, jobject _assetMgr, jstring _path, 881b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jfloat fontSize, jint dpi) 882b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 883b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 884b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 885b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 886b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 887b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 888b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 889b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 890b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 891b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 892b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 8939b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 894e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromMemory(con, 895e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk str.c_str(), str.length(), 896e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 897b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 898b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk delete asset; 8999b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return id; 9009b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk} 9019b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 902bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 903bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 904bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 9052e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint script, jint alloc, jint slot) 906d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 907d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 908bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 909d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 910d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 911d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9122e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarI(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 9134d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 914cfc04366998cd0c626594c9cf70336a11bdf5996Jason Sams LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 9154d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarI(con, (RsScript)script, slot, val); 9164d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 9174d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 9184d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 9196f4cf0b8885403ead157ae00fd43cf1282331c23Jason SamsnScriptSetVarObj(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 9206f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{ 9216f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams LOG_API("nScriptSetVarObj, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 9226f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams rsScriptSetVarObj(con, (RsScript)script, slot, (RsObjectBase)val); 9236f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams} 9246f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams 9256f4cf0b8885403ead157ae00fd43cf1282331c23Jason Samsstatic void 926031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen HinesnScriptSetVarJ(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jlong val) 927031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{ 928031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", con, (void *)script, slot, val); 929031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsScriptSetVarJ(con, (RsScript)script, slot, val); 930031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines} 931031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines 932031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hinesstatic void 9332e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarF(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, float val) 9344d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 935ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", con, (void *)script, slot, val); 9364d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarF(con, (RsScript)script, slot, val); 9374d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 9384d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 9394d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 940ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen HinesnScriptSetVarD(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, double val) 941ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{ 942ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", con, (void *)script, slot, val); 943ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsScriptSetVarD(con, (RsScript)script, slot, val); 944ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines} 945ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 946ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hinesstatic void 9472e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 9484d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 9494d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9504d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 9514d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 9524d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarV(con, (RsScript)script, slot, ptr, len); 9534d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 9544d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 9554d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 956d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 957d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9582e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone) 959584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 96007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 961584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 962584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 963584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 964584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 965584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 966bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 967584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 968584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 969584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 970584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 971584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 972584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 97322534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 9742e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvoke(JNIEnv *_env, jobject _this, RsContext con, jint obj, jint slot) 97522534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 9764d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 9774d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 97822534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 97922534176fb5c1257130ef4ee589739ca42766a32Jason Sams 980584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 9812e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 982be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 9834d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9844d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 9854d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 9864d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvokeV(con, (RsScript)script, slot, ptr, len); 9874d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 988be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 989be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 9906e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 9916e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason SamsnScriptForEach(JNIEnv *_env, jobject _this, RsContext con, 9926e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint script, jint slot, jint ain, jint aout) 9936e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 9946e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9956e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0); 9966e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 9976e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 9986e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason SamsnScriptForEachV(JNIEnv *_env, jobject _this, RsContext con, 9996e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint script, jint slot, jint ain, jint aout, jbyteArray params) 10006e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 10016e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 10026e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint len = _env->GetArrayLength(params); 10036e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jbyte *ptr = _env->GetByteArrayElements(params, NULL); 10046e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len); 10056e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT); 10066e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 10076e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams 1008d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1009fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 1010fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 1011e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Samsstatic jint 1012e4a06c5fc738bf219f2a495e12a637b2d0871651Jason SamsnScriptCCreate(JNIEnv *_env, jobject _this, RsContext con, 1013e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jstring resName, jstring cacheDir, 1014e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jbyteArray scriptRef, jint length) 1015d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1016e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 1017e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 1018e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 resNameUTF(_env, resName); 1019e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir); 1020e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jint ret = 0; 10218451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes jbyte* script_ptr = NULL; 102243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 102343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 102443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 102543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 10268451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "script == null"); 102743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 102843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 102943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 103043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 10318451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "length < 0"); 103243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 103343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 1034e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams remaining = _env->GetArrayLength(scriptRef); 103543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 103643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 10378451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", 10388451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes // "length > script.length - offset"); 103943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 104043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 1041e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams script_ptr = (jbyte *) 104243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 104343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 1044e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams //rsScriptCSetText(con, (const char *)script_ptr, length); 1045e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 1046e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk ret = (jint)rsScriptCCreate(con, 1047e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk resNameUTF.c_str(), resNameUTF.length(), 1048e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk cacheDirUTF.c_str(), cacheDirUTF.length(), 1049e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams (const char *)script_ptr, length); 105039ddc950c9064129ead5de04b200106c0659f937Jason Sams 105143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 1052e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams if (script_ptr) { 1053e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams _env->ReleasePrimitiveArrayCritical(scriptRef, script_ptr, 105443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 105543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 1056d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1057e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams return ret; 1058d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1059d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1060d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1061d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1062d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 1063331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason SamsnProgramStoreCreate(JNIEnv *_env, jobject _this, RsContext con, 1064331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean colorMaskR, jboolean colorMaskG, jboolean colorMaskB, jboolean colorMaskA, 1065331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean depthMask, jboolean ditherEnable, 1066331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint srcFunc, jint destFunc, 1067331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint depthFunc) 1068d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 106954db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreCreate, con(%p)", con); 1070331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams return (jint)rsProgramStoreCreate(con, colorMaskR, colorMaskG, colorMaskB, colorMaskA, 1071331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams depthMask, ditherEnable, (RsBlendSrcFunc)srcFunc, 1072331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams (RsBlendDstFunc)destFunc, (RsDepthFunc)depthFunc); 1073d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1074d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10750011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 10760011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 10770011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 10782e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindConstants(JNIEnv *_env, jobject _this, RsContext con, jint vpv, jint slot, jint a) 10790011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 10800011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 10810011bcf57ff711a221a3a4c73f2a79125111647dJason Sams rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a); 10820011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 108354c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 1084d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10852e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindTexture(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 108654c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 108768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 108868afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 108954c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 109054c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 109154c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 10922e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindSampler(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 1093d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 109468afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 109568afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1096d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1097d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 109868afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 1099d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 110068afd01ec9fd37774d8291192952a25e5605b6fbJason Samsstatic jint 11012123b46ba85adb2cfb78068f8368e830640118d3Alex SakhartchouknProgramFragmentCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, 11022123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jobjectArray texNames, jintArray params) 11037e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 1104b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 11057e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 11067e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 11077e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 11082123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk int texCount = _env->GetArrayLength(texNames); 11092123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8 names(_env, texNames, texCount); 11102123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char ** nameArray = names.c_str(); 11112123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t* sizeArray = names.c_str_len(); 11122123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 1113991040c8261237997915f8a4c899a6ea5012fb42Jason Sams LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, paramLen); 11147e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 11152123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jint ret = (jint)rsProgramFragmentCreate(con, shaderUTF.c_str(), shaderUTF.length(), 11162123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk nameArray, texCount, sizeArray, 11172123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk (uint32_t *)paramPtr, paramLen); 11182123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 11197e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 11207e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 11217e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 11227e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 11237e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 11241fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 11251fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 11260011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 11272123b46ba85adb2cfb78068f8368e830640118d3Alex SakhartchouknProgramVertexCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, 11282123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jobjectArray texNames, jintArray params) 11291fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 1130b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 11310011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 11320011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 11331fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1134991040c8261237997915f8a4c899a6ea5012fb42Jason Sams LOG_API("nProgramVertexCreate, con(%p), paramLen(%i)", con, paramLen); 1135ee41112e1539de95596600fd2c6dada5d275217fJason Sams 11362123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk int texCount = _env->GetArrayLength(texNames); 11372123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk AutoJavaStringArrayToUTF8 names(_env, texNames, texCount); 11382123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk const char ** nameArray = names.c_str(); 11392123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk size_t* sizeArray = names.c_str_len(); 11402123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 11412123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk jint ret = (jint)rsProgramVertexCreate(con, shaderUTF.c_str(), shaderUTF.length(), 11422123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk nameArray, texCount, sizeArray, 11432123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk (uint32_t *)paramPtr, paramLen); 11442123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk 11450011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 11460011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 11471fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 11481fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1149ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1150ebfb436a49673693b98469683451bd9ede797557Jason Sams 1151ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 115294aaed38467c71a6c804f0e18b41346a4013c25bJason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, RsContext con, jboolean pointSprite, jint cull) 1153ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 115494aaed38467c71a6c804f0e18b41346a4013c25bJason Sams LOG_API("nProgramRasterCreate, con(%p), pointSprite(%i), cull(%i)", con, pointSprite, cull); 115594aaed38467c71a6c804f0e18b41346a4013c25bJason Sams return (jint)rsProgramRasterCreate(con, pointSprite, (RsCullMode)cull); 1156ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1157ebfb436a49673693b98469683451bd9ede797557Jason Sams 1158d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1159d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1160d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1161d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 11622e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, RsContext con, jint script) 1163d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1164d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1165bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1166d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1167d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1168d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 11692e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramStore(JNIEnv *_env, jobject _this, RsContext con, jint pfs) 1170d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 117154db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", con, (RsProgramStore)pfs); 117254db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsContextBindProgramStore(con, (RsProgramStore)pfs); 1173d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1174d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1175d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 11762e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1177d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1178d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1179bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1180d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1181d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 11820826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 11832e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, RsContext con, jint pf) 11840826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 11850826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1186bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 11870826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 11880826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1189d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 11902e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1191ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1192ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 1193ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 1194ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1195ebfb436a49673693b98469683451bd9ede797557Jason Sams 1196d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 119702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 119802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 119902fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 1200a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex SakhartchouknSamplerCreate(JNIEnv *_env, jobject _this, RsContext con, jint magFilter, jint minFilter, 1201a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk jint wrapS, jint wrapT, jint wrapR, jfloat aniso) 120202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 1203bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1204a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk return (jint)rsSamplerCreate(con, 1205a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)magFilter, 1206a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)minFilter, 1207a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapS, 1208a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapT, 1209a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapR, 1210a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk aniso); 121102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 121202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1213bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1214bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1215f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams//native int rsnPathCreate(int con, int prim, boolean isStatic, int vtx, int loop, float q); 1216f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Samsstatic jint 1217f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason SamsnPathCreate(JNIEnv *_env, jobject _this, RsContext con, jint prim, jboolean isStatic, jint _vtx, jint _loop, jfloat q) { 1218f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams LOG_API("nPathCreate, con(%p)", con); 1219f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams 1220f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams int id = (int)rsPathCreate(con, (RsPathPrimitive)prim, isStatic, 1221f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams (RsAllocation)_vtx, 1222f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams (RsAllocation)_loop, q); 1223f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams return id; 1224f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams} 1225f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams 12261bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 122725999a08a6652ff5d7d0973f279f1e92e04b3506Alex SakhartchouknMeshCreate(JNIEnv *_env, jobject _this, RsContext con, jintArray _vtx, jintArray _idx, jintArray _prim) 1228164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 122925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk LOG_API("nMeshCreate, con(%p)", con); 1230164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 123125999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint vtxLen = _env->GetArrayLength(_vtx); 123225999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *vtxPtr = _env->GetIntArrayElements(_vtx, NULL); 123325999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint idxLen = _env->GetArrayLength(_idx); 123425999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *idxPtr = _env->GetIntArrayElements(_idx, NULL); 123525999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint primLen = _env->GetArrayLength(_prim); 123625999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *primPtr = _env->GetIntArrayElements(_prim, NULL); 1237164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 123825999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk int id = (int)rsMeshCreate(con, 123925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)vtxPtr, vtxLen, 124025999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)idxPtr, idxLen, 124125999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (uint32_t *)primPtr, primLen); 124280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 124325999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_vtx, vtxPtr, 0); 124425999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_idx, idxPtr, 0); 124525999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_prim, primPtr, 0); 124625999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk return id; 12479d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk} 12489d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk 124980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 12502e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 125180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 125280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 125380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint vtxCount = 0; 1254581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertexBufferCount(con, (RsMesh)mesh, &vtxCount); 125580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return vtxCount; 125680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 125780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 125880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 12592e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndexCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 126080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 126180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 126280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint idxCount = 0; 1263581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndexCount(con, (RsMesh)mesh, &idxCount); 126480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return idxCount; 126580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 126680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 126780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 12682e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _ids, int numVtxIDs) 126980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 127080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 127180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 127280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation)); 1273581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertices(con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs); 127480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 127580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numVtxIDs; i ++) { 127680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&allocs[i]); 127780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 127880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 127980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 128080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 128180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 128280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 12832e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _idxIds, jintArray _primitives, int numIndices) 128480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 128580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 128680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 128780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation)); 128880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t)); 128980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1290581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndices(con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices); 129180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 129280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numIndices; i ++) { 129380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_idxIds, i, 1, (const jint*)&allocs[i]); 129480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_primitives, i, 1, (const jint*)&prims[i]); 129580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 129680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 129780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 129880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(prims); 1299164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1300164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1301164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk// --------------------------------------------------------------------------- 1302164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1303d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 130494d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1305d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1306d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 13071c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"_nInit", "()V", (void*)_nInit }, 13081c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 13091c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 13101c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 13111c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 1312edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams{"nContextGetUserMessage", "(I[I)I", (void*)nContextGetUserMessage }, 13131c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, 1314edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams{"nContextPeekMessage", "(I[I)I", (void*)nContextPeekMessage }, 13151c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 13161c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, 13171c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, 13182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams// All methods below are thread protected in java. 13214382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines{"rsnContextCreate", "(III)I", (void*)nContextCreate }, 13224382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines{"rsnContextCreateGL", "(IIIIIIIIIIIIIFI)I", (void*)nContextCreateGL }, 13232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextFinish", "(I)V", (void*)nContextFinish }, 13242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority }, 13252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1326faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams{"rsnContextSetSurfaceTexture", "(IIILandroid/graphics/SurfaceTexture;)V", (void*)nContextSetSurfaceTexture }, 1327b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextDestroy", "(I)V", (void*)nContextDestroy }, 13282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextDump", "(II)V", (void*)nContextDump }, 13292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextPause", "(I)V", (void*)nContextPause }, 13302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextResume", "(I)V", (void*)nContextResume }, 13312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAssignName", "(II[B)V", (void*)nAssignName }, 1332b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnGetName", "(II)Ljava/lang/String;", (void*)nGetName }, 13332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnObjDestroy", "(II)V", (void*)nObjDestroy }, 13342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1335b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFileA3DCreateFromFile", "(ILjava/lang/String;)I", (void*)nFileA3DCreateFromFile }, 13362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DCreateFromAssetStream", "(II)I", (void*)nFileA3DCreateFromAssetStream }, 1337b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFileA3DCreateFromAsset", "(ILandroid/content/res/AssetManager;Ljava/lang/String;)I", (void*)nFileA3DCreateFromAsset }, 13382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetNumIndexEntries", "(II)I", (void*)nFileA3DGetNumIndexEntries }, 1339b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFileA3DGetIndexEntries", "(III[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, 13402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetEntryByIndex", "(III)I", (void*)nFileA3DGetEntryByIndex }, 13412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1342e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk{"rsnFontCreateFromFile", "(ILjava/lang/String;FI)I", (void*)nFontCreateFromFile }, 1343b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFontCreateFromAssetStream", "(ILjava/lang/String;FII)I", (void*)nFontCreateFromAssetStream }, 1344b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFontCreateFromAsset", "(ILandroid/content/res/AssetManager;Ljava/lang/String;FI)I", (void*)nFontCreateFromAsset }, 13452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementCreate", "(IIIZI)I", (void*)nElementCreate }, 134770d4e5024298f71edb3b04867e05568f5495b4ceJason Sams{"rsnElementCreate2", "(I[I[Ljava/lang/String;[I)I", (void*)nElementCreate2 }, 13482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementGetNativeData", "(II[I)V", (void*)nElementGetNativeData }, 13497d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk{"rsnElementGetSubElements", "(II[I[Ljava/lang/String;[I)V", (void*)nElementGetSubElements }, 13502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1351bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams{"rsnTypeCreate", "(IIIIIZZ)I", (void*)nTypeCreate }, 1352b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData }, 13532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1354857d0c7017da763a420e825fffa2f260eb982c97Jason Sams{"rsnAllocationCreateTyped", "(IIIII)I", (void*)nAllocationCreateTyped }, 13555476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCreateFromBitmap", "(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCreateFromBitmap }, 13565476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCubeCreateFromBitmap","(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCubeCreateFromBitmap }, 13575476b450e50939940dcf3f15c92335cee2fc572dJason Sams 13584ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyFromBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyFromBitmap }, 13594ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyToBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyToBitmap }, 13604ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 13615476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationSyncAll", "(III)V", (void*)nAllocationSyncAll }, 1362615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams{"rsnAllocationGetSurfaceTextureID", "(II)I", (void*)nAllocationGetSurfaceTextureID }, 1363fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams{"rsnAllocationGetSurfaceTextureID2","(IILandroid/graphics/SurfaceTexture;)V",(void*)nAllocationGetSurfaceTextureID2 }, 1364fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams{"rsnAllocationSetSurface", "(IILandroid/view/Surface;)V", (void*)nAllocationSetSurface }, 1365163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams{"rsnAllocationIoSend", "(II)V", (void*)nAllocationIoSend }, 1366163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams{"rsnAllocationIoReceive", "(II)V", (void*)nAllocationIoReceive }, 136749a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[II)V", (void*)nAllocationData1D_i }, 136849a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[SI)V", (void*)nAllocationData1D_s }, 136949a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[BI)V", (void*)nAllocationData1D_b }, 137049a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[FI)V", (void*)nAllocationData1D_f }, 137149a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationElementData1D", "(IIIII[BI)V", (void*)nAllocationElementData1D }, 137249a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[II)V", (void*)nAllocationData2D_i }, 1373fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationData2D", "(IIIIIIII[SI)V", (void*)nAllocationData2D_s }, 1374fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationData2D", "(IIIIIIII[BI)V", (void*)nAllocationData2D_b }, 137549a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[FI)V", (void*)nAllocationData2D_f }, 1376304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk{"rsnAllocationData2D", "(IIIIIIIIIIIII)V", (void*)nAllocationData2D_alloc }, 13772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[I)V", (void*)nAllocationRead_i }, 1378fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationRead", "(II[S)V", (void*)nAllocationRead_s }, 1379fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationRead", "(II[B)V", (void*)nAllocationRead_b }, 13802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[F)V", (void*)nAllocationRead_f }, 13812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationGetType", "(II)I", (void*)nAllocationGetType}, 13825edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize1D", "(III)V", (void*)nAllocationResize1D }, 13835edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize2D", "(IIII)V", (void*)nAllocationResize2D }, 1384f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams{"rsnAllocationGenerateMipmaps", "(II)V", (void*)nAllocationGenerateMipmaps }, 13852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptBindAllocation", "(IIII)V", (void*)nScriptBindAllocation }, 13872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone }, 13882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke }, 13892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV }, 13906e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{"rsnScriptForEach", "(IIIII)V", (void*)nScriptForEach }, 13916e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{"rsnScriptForEach", "(IIIII[B)V", (void*)nScriptForEachV }, 13922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI }, 1393031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{"rsnScriptSetVarJ", "(IIIJ)V", (void*)nScriptSetVarJ }, 13942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, 1395ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD }, 13962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV }, 13976f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{"rsnScriptSetVarObj", "(IIII)V", (void*)nScriptSetVarObj }, 13982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1399e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams{"rsnScriptCCreate", "(ILjava/lang/String;Ljava/lang/String;[BI)I", (void*)nScriptCCreate }, 14002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1401331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams{"rsnProgramStoreCreate", "(IZZZZZZIII)I", (void*)nProgramStoreCreate }, 14022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 14032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindConstants", "(IIII)V", (void*)nProgramBindConstants }, 14042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindTexture", "(IIII)V", (void*)nProgramBindTexture }, 14052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindSampler", "(IIII)V", (void*)nProgramBindSampler }, 14062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 14072123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk{"rsnProgramFragmentCreate", "(ILjava/lang/String;[Ljava/lang/String;[I)I", (void*)nProgramFragmentCreate }, 140894aaed38467c71a6c804f0e18b41346a4013c25bJason Sams{"rsnProgramRasterCreate", "(IZI)I", (void*)nProgramRasterCreate }, 14092123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk{"rsnProgramVertexCreate", "(ILjava/lang/String;[Ljava/lang/String;[I)I", (void*)nProgramVertexCreate }, 14102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 14112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindRootScript", "(II)V", (void*)nContextBindRootScript }, 1412b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextBindProgramStore", "(II)V", (void*)nContextBindProgramStore }, 14132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramFragment", "(II)V", (void*)nContextBindProgramFragment }, 14142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramVertex", "(II)V", (void*)nContextBindProgramVertex }, 14152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramRaster", "(II)V", (void*)nContextBindProgramRaster }, 14162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1417a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk{"rsnSamplerCreate", "(IIIIIIF)I", (void*)nSamplerCreate }, 14182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1419f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams{"rsnPathCreate", "(IIZIIF)I", (void*)nPathCreate }, 142025999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk{"rsnMeshCreate", "(I[I[I[I)I", (void*)nMeshCreate }, 14212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 14222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetVertexBufferCount", "(II)I", (void*)nMeshGetVertexBufferCount }, 14232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndexCount", "(II)I", (void*)nMeshGetIndexCount }, 1424b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnMeshGetVertices", "(II[II)V", (void*)nMeshGetVertices }, 14252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndices", "(II[I[II)V", (void*)nMeshGetIndices }, 142680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1427d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1428d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1429d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1430d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1431d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1432d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1433d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1434d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1435d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1436d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1437d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1438d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1439d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1440d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1441d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1442d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 14433762c311729fe9f3af085c14c5c1fb471d994c03Steve Block ALOGE("ERROR: GetEnv failed\n"); 1444d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1445d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1446d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1447d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1448d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 14493762c311729fe9f3af085c14c5c1fb471d994c03Steve Block ALOGE("ERROR: MediaPlayer native registration failed\n"); 1450d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1451d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1452d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1453d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1454d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1455d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1456d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1457d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1458d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1459