android_renderscript_RenderScript.cpp revision 835b8544cc333ef87e42b1d71cf8ad3cddccdc19
1d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams/* 2faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * Copyright (C) 2011 The Android Open Source Project 3d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 4d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * you may not use this file except in compliance with the License. 6d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * You may obtain a copy of the License at 7d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 8d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 10d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Unless required by applicable law or agreed to in writing, software 11d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * See the License for the specific language governing permissions and 14d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * limitations under the License. 15d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams */ 16d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 17f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams#define LOG_TAG "libRS_jni" 18f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 19d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <stdlib.h> 20d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <stdio.h> 21d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <fcntl.h> 22d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <unistd.h> 23d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <math.h> 24d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <utils/misc.h> 25d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 26000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/Surface.h> 27d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 28ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams#include <core/SkBitmap.h> 29650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkPixelRef.h> 30650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkStream.h> 31650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <core/SkTemplates.h> 32650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <images/SkImageDecoder.h> 33ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 34650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <utils/Asset.h> 35b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk#include <utils/AssetManager.h> 36650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <utils/ResourceTypes.h> 37f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "jni.h" 39d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "JNIHelp.h" 40d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "android_runtime/AndroidRuntime.h" 41ee956053d6e3f7a7a82e41853b9b251fdc226d7aJim Miller#include "android_runtime/android_view_Surface.h" 42b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk#include "android_runtime/android_util_AssetManager.h" 43d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 44e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScript.h> 45e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScriptEnv.h> 46faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <gui/SurfaceTexture.h> 47faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <gui/SurfaceTextureClient.h> 48faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams#include <android_runtime/android_graphics_SurfaceTexture.h> 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 50d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams//#define LOG_API LOGE 51d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define LOG_API(...) 52d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 53d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android; 54d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 55b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukclass AutoJavaStringToUTF8 { 56b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukpublic: 57b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8(JNIEnv* env, jstring str) : fEnv(env), fJStr(str) 58b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk { 59b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fCStr = env->GetStringUTFChars(str, NULL); 60b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fLength = env->GetStringUTFLength(str); 61b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 62b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk ~AutoJavaStringToUTF8() 63b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk { 64b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fEnv->ReleaseStringUTFChars(fJStr, fCStr); 65b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 66b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* c_str() const { return fCStr; } 67b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize length() const { return fLength; } 68b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 69b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukprivate: 70b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk JNIEnv* fEnv; 71b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fJStr; 72b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* fCStr; 73b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize fLength; 74b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk}; 75b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 76d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 77d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 78ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gContextId = 0; 79ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gNativeBitmapID = 0; 8043ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic jfieldID gTypeNativeCache = 0; 81d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 82d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void _nInit(JNIEnv *_env, jclass _this) 83d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 84d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams gContextId = _env->GetFieldID(_this, "mContext", "I"); 85ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 86ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); 87ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I"); 88d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 89d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 90d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 91d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 923eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsstatic void 932e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextFinish(JNIEnv *_env, jobject _this, RsContext con) 9496ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams{ 9596ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams LOG_API("nContextFinish, con(%p)", con); 9696ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams rsContextFinish(con); 9796ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams} 9896ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 9996ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Samsstatic void 1002e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAssignName(JNIEnv *_env, jobject _this, RsContext con, jint obj, jbyteArray str) 1013eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{ 10207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAssignName, con(%p), obj(%p)", con, (void *)obj); 1033eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jint len = _env->GetArrayLength(str); 1043eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 105bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAssignName(con, (void *)obj, (const char *)cptr, len); 1063eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 1073eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams} 1083eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 109fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchoukstatic jstring 1102e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnGetName(JNIEnv *_env, jobject _this, RsContext con, jint obj) 111fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk{ 112fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk LOG_API("nGetName, con(%p), obj(%p)", con, (void *)obj); 113fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk const char *name = NULL; 114581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaGetName(con, (void *)obj, &name); 115581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk if(name == NULL || strlen(name) == 0) { 116581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return NULL; 117581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk } 118fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk return _env->NewStringUTF(name); 119fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk} 120fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk 1217ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 1222e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnObjDestroy(JNIEnv *_env, jobject _this, RsContext con, jint obj) 1237ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 1247ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj); 1259c25aee52672f9c8908e062bde502341c189970eJason Sams rsObjDestroy(con, (void *)obj); 1267ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 1277ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 1283eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 1293eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 130d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 131d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 132d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 133d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 134d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsDeviceCreate(); 135d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 136d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 137d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 138d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) 139d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 140d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 141d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 142d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 143d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 144ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 145ebfb436a49673693b98469683451bd9ede797557Jason SamsnDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value) 146ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 147ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value); 148ebfb436a49673693b98469683451bd9ede797557Jason Sams return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value); 149ebfb436a49673693b98469683451bd9ede797557Jason Sams} 150ebfb436a49673693b98469683451bd9ede797557Jason Sams 151d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 152704ff64b099406bb328898a7443921f22dbffd6dJason SamsnContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver) 153d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 154d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 155704ff64b099406bb328898a7443921f22dbffd6dJason Sams return (jint)rsContextCreate((RsDevice)dev, ver); 156704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 157704ff64b099406bb328898a7443921f22dbffd6dJason Sams 158704ff64b099406bb328898a7443921f22dbffd6dJason Samsstatic jint 15911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason SamsnContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, 16011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 16111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 16211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 16311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 1642c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int samplesMin, int samplesPref, float samplesQ, 1652c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int dpi) 16611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams{ 16711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams RsSurfaceConfig sc; 16811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaMin = alphaMin; 16911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaPref = alphaPref; 17011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorMin = colorMin; 17111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorPref = colorPref; 17211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthMin = depthMin; 17311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthPref = depthPref; 17411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesMin = samplesMin; 17511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesPref = samplesPref; 17611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesQ = samplesQ; 17711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams 178704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nContextCreateGL"); 1792c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk return (jint)rsContextCreateGL((RsDevice)dev, ver, sc, dpi); 180d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 181d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 182d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1832e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetPriority(JNIEnv *_env, jobject _this, RsContext con, jint p) 1847d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{ 1857d787b4722eaeb79cab42c36060336e092b77b5fJason Sams LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p); 1867d787b4722eaeb79cab42c36060336e092b77b5fJason Sams rsContextSetPriority(con, p); 1877d787b4722eaeb79cab42c36060336e092b77b5fJason Sams} 1887d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1897d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1907d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1917d787b4722eaeb79cab42c36060336e092b77b5fJason Samsstatic void 1922e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetSurface(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject wnd) 193efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 1943bc47d438171dce294e816366d53bc9eca772c5bJason Sams LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)wnd); 195efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 1966c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk ANativeWindow * window = NULL; 197efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 198efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 199efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 2006c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk window = android_Surface_getNativeWindow(_env, wnd).get(); 201efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 202efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 2036c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk rsContextSetSurface(con, width, height, window); 204efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 205efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 206efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 207faa32b33b50ad941f631716dd0915e936bdc3ac5Jason SamsnContextSetSurfaceTexture(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject sur) 208faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams{ 209faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams LOG_API("nContextSetSurfaceTexture, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)sur); 210faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 211faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams sp<ANativeWindow> window; 212faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams sp<SurfaceTexture> st; 213faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams if (sur == 0) { 214faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 215faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } else { 216faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams st = SurfaceTexture_getSurfaceTexture(_env, sur); 217faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams window = new SurfaceTextureClient(st); 218faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } 219faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 220faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams rsContextSetSurface(con, width, height, window.get()); 221faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams} 222faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 223faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Samsstatic void 2242e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDestroy(JNIEnv *_env, jobject _this, RsContext con) 225d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 2262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams LOG_API("nContextDestroy, con(%p)", con); 2272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsContextDestroy(con); 228d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 229d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 230715333b832fb448c32165c7d97d408a3fa43f7cbJason Samsstatic void 2312e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDump(JNIEnv *_env, jobject _this, RsContext con, jint bits) 232715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{ 233715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits); 234715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDump((RsContext)con, bits); 235715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams} 236d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 237d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2382e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextPause(JNIEnv *_env, jobject _this, RsContext con) 23965e7aa56f56097418d617663683544c25b3988eaJason Sams{ 24065e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextPause, con(%p)", con); 24165e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextPause(con); 24265e7aa56f56097418d617663683544c25b3988eaJason Sams} 24365e7aa56f56097418d617663683544c25b3988eaJason Sams 24465e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 2452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextResume(JNIEnv *_env, jobject _this, RsContext con) 24665e7aa56f56097418d617663683544c25b3988eaJason Sams{ 24765e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextResume, con(%p)", con); 24865e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextResume(con); 24965e7aa56f56097418d617663683544c25b3988eaJason Sams} 25065e7aa56f56097418d617663683544c25b3988eaJason Sams 2511c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2521c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jstring 2531c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetErrorMessage(JNIEnv *_env, jobject _this, RsContext con) 2541c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2551c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextGetErrorMessage, con(%p)", con); 2561c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams char buf[1024]; 2571c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2581c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2591c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 26065bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextGetMessage(con, 26165bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams buf, sizeof(buf), 26265bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 263edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 2641c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (!id && receiveLen) { 2651c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOGV("message receive buffer too small. %i", receiveLen); 2661c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 2671c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams return _env->NewStringUTF(buf); 2681c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 2691c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 270edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Samsstatic jint 2711c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) 272516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 273516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 274516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextGetMessage, con(%p), len(%i)", con, len); 275516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 276516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 2771c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 27865bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextGetMessage(con, 27965bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, len * 4, 28065bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 281edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 282516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 2831d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams LOGV("message receive buffer too small. %i", receiveLen); 284516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 285516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 286edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams return id; 2871c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 2881c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2891c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jint 290edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason SamsnContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData) 2911c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2921c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextPeekMessage, con(%p)", con); 2931c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); 2941c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2951c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 29665bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextPeekMessage(con, &receiveLen, sizeof(receiveLen), 297edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 2981c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[0] = (jint)subID; 2991c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[1] = (jint)receiveLen; 3001c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); 301516c31911578db8ce53529483c3ded918ac7dc6bJason Sams return id; 302516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 303516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 3042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextInitToClient(JNIEnv *_env, jobject _this, RsContext con) 305516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 306516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextInitToClient, con(%p)", con); 307516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextInitToClient(con); 308516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 309516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 3102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextDeinitToClient(JNIEnv *_env, jobject _this, RsContext con) 311516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 312516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextDeinitToClient, con(%p)", con); 313516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextDeinitToClient(con); 314516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 315516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 316516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 317718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 3182e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementCreate(JNIEnv *_env, jobject _this, RsContext con, jint type, jint kind, jboolean norm, jint size) 319d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 320718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size); 321718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)rsElementCreate(con, (RsDataType)type, (RsDataKind)kind, norm, size); 322d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 323d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 324718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 32570d4e5024298f71edb3b04867e05568f5495b4ceJason SamsnElementCreate2(JNIEnv *_env, jobject _this, RsContext con, jintArray _ids, jobjectArray _names, jintArray _arraySizes) 326d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 327718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams int fieldCount = _env->GetArrayLength(_ids); 328704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nElementCreate2, con(%p)", con); 329718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 330718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jint *ids = _env->GetIntArrayElements(_ids, NULL); 33170d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint *arraySizes = _env->GetIntArrayElements(_arraySizes, NULL); 332718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams const char ** nameArray = (const char **)calloc(fieldCount, sizeof(char *)); 333718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams size_t* sizeArray = (size_t*)calloc(fieldCount, sizeof(size_t)); 334718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 335718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 336718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 337718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams nameArray[ct] = _env->GetStringUTFChars(s, NULL); 338718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams sizeArray[ct] = _env->GetStringUTFLength(s); 33943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 340e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsElementCreate2(con, 341e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk (RsElement *)ids, fieldCount, 3427a22e107d100caea2a661ec73e4525d69f0f9759Jason Sams nameArray, fieldCount * sizeof(size_t), sizeArray, 343e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk (const uint32_t *)arraySizes, fieldCount); 344718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 345718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 346718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseStringUTFChars(s, nameArray[ct]); 34743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 348718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseIntArrayElements(_ids, ids, JNI_ABORT); 34970d4e5024298f71edb3b04867e05568f5495b4ceJason Sams _env->ReleaseIntArrayElements(_arraySizes, arraySizes, JNI_ABORT); 350718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(nameArray); 351718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(sizeArray); 352718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)id; 353d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 354d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 355dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3562e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _elementData) 357dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 358dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_elementData); 359dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetNativeData, con(%p)", con); 360dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 361dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements 362dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(dataSize == 5); 363dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 364dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t elementData[5]; 365581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetNativeData(con, (RsElement)id, elementData, dataSize); 366dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 367dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < dataSize; i ++) { 368dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_elementData, i, 1, (const jint*)&elementData[i]); 369dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 370dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 371dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 372dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 373dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3742e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetSubElements(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _IDs, jobjectArray _names) 375dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 376dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_IDs); 377dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetSubElements, con(%p)", con); 378dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 379dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t *ids = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t)); 380dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk const char **names = (const char **)malloc((uint32_t)dataSize * sizeof(const char *)); 381dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 382581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetSubElements(con, (RsElement)id, ids, names, (uint32_t)dataSize); 383dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 38411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams for(jint i = 0; i < dataSize; i++) { 385dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i])); 386dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_IDs, i, 1, (const jint*)&ids[i]); 387dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 388dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 389dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(ids); 390dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(names); 391dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 392dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 393d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 394d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 3953b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Samsstatic int 396bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason SamsnTypeCreate(JNIEnv *_env, jobject _this, RsContext con, RsElement eid, 397bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces) 398d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 399bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i)", 400bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams con, eid, dimx, dimy, dimz, mips, faces); 4013b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams 402c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsTypeCreate(con, (RsElement)eid, dimx, dimy, dimz, mips, faces); 4033b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams return (jint)id; 404d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 405d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 406dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 4072e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _typeData) 408dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 409dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // We are packing 6 items: mDimX; mDimY; mDimZ; 410dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // mDimLOD; mDimFaces; mElement; into typeData 411dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int elementCount = _env->GetArrayLength(_typeData); 412dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 413dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(elementCount == 6); 414dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nTypeCreate, con(%p)", con); 415dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 416dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t typeData[6]; 417581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaTypeGetNativeData(con, (RsType)id, typeData, 6); 418dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 419dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < elementCount; i ++) { 420dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_typeData, i, 1, (const jint*)&typeData[i]); 421dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 422dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 423dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 424d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 425d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 426d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 4275476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mips, jint usage) 428d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 429d4b23b54445b13dacaafad97d100999abb36ea6fJason Sams LOG_API("nAllocationCreateTyped, con(%p), type(%p), mip(%i), usage(%i)", con, (RsElement)type, mips, usage); 430c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams return (jint) rsAllocationCreateTyped(con, (RsType)type, (RsAllocationMipmapControl)mips, (uint32_t)usage); 431d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 432d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 433d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 4345476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationSyncAll(JNIEnv *_env, jobject _this, RsContext con, jint a, jint bits) 4355476b450e50939940dcf3f15c92335cee2fc572dJason Sams{ 4365476b450e50939940dcf3f15c92335cee2fc572dJason Sams LOG_API("nAllocationSyncAll, con(%p), a(%p), bits(0x%08x)", con, (RsAllocation)a, bits); 4375476b450e50939940dcf3f15c92335cee2fc572dJason Sams rsAllocationSyncAll(con, (RsAllocation)a, (RsAllocationUsageType)bits); 4385476b450e50939940dcf3f15c92335cee2fc572dJason Sams} 4395476b450e50939940dcf3f15c92335cee2fc572dJason Sams 440f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Samsstatic void 441f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason SamsnAllocationGenerateMipmaps(JNIEnv *_env, jobject _this, RsContext con, jint alloc) 442f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams{ 443f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams LOG_API("nAllocationGenerateMipmaps, con(%p), a(%p)", con, (RsAllocation)alloc); 444f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsAllocationGenerateMipmaps(con, (RsAllocation)alloc); 445f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams} 446f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams 447fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 4485476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 449fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 450ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 451ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 452ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 453fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 4545476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 4555476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 456c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, 45765bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 45865bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 4595476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 4605476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 461ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 462fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 46367f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchoukstatic int 4645476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 46567f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk{ 46667f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk SkBitmap const * nativeBitmap = 46767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 46867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 46967f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 4705476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 4715476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 472c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsAllocationCubeCreateFromBitmap(con, 47365bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 47465bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 4755476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 4765476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 47767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk} 47867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 47926ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchoukstatic void 4804ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 48126ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk{ 48226ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk SkBitmap const * nativeBitmap = 48326ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 48426ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 485f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int w = bitmap.width(); 486f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int h = bitmap.height(); 48726ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk 4884ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 4894ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const void* ptr = bitmap.getPixels(); 490f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, 0, 0, 491304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, 492f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams w, h, ptr, bitmap.getSize()); 4934ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 4948a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 4958a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4964ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void 4974ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyToBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 4988a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 4994ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = 5004ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 5014ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const SkBitmap& bitmap(*nativeBitmap); 5028a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5034ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 5044ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams void* ptr = bitmap.getPixels(); 5054ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsAllocationCopyToBitmap(con, (RsAllocation)alloc, ptr, bitmap.getSize()); 5064ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 507835b8544cc333ef87e42b1d71cf8ad3cddccdc19Alex Sakhartchouk bitmap.notifyPixelsChanged(); 5088a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 5098a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5104ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void ReleaseBitmapCallback(void *bmp) 511650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 5124ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; 5134ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams nativeBitmap->unlockPixels(); 514650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 515650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 5164ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 517d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 51849a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jintArray data, int sizeBytes) 519d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 520d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 52149a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 522d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 52349a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 524d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 525d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 526d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 527d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 52849a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jshortArray data, int sizeBytes) 529d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 530d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 53149a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 532768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 53349a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 534768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 535d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 536d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 537d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 53849a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jbyteArray data, int sizeBytes) 539d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 540d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 54149a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 542768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 54349a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 544768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 545d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 546d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 547d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 54849a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jfloatArray data, int sizeBytes) 549d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 550d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 55149a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 552d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 55349a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 554d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 555d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 556d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 557d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 55849a05d7b82956009f03acbb92a064eed054eb031Jason Sams// native void rsnAllocationElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes); 55949a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationElementData1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint compIdx, jbyteArray data, int sizeBytes) 56049bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{ 56149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jint len = _env->GetArrayLength(data); 56249a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocationElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); 56349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 56449a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DElementData(con, (RsAllocation)alloc, offset, lod, ptr, compIdx, sizeBytes); 56549bdaf0293408159df18a1d8540360f9623c40f7Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 56649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams} 56749bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 56849bdaf0293408159df18a1d8540360f9623c40f7Jason Samsstatic void 569fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationData2D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 570fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint w, jint h, jshortArray data, int sizeBytes) 571fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 572fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 573fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason 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); 574fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 575fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 576fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 577fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 578fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 579fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 580fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationData2D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 581fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint w, jint h, jbyteArray data, int sizeBytes) 582fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 583fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 584fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason 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); 585fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 586fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 587fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 588fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 589fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 590fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 59149a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 59249a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jintArray data, int sizeBytes) 593d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 594d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 59549a05d7b82956009f03acbb92a064eed054eb031Jason 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); 596d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 59749a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 598d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 599d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 600d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 601d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 60249a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 60349a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jfloatArray data, int sizeBytes) 604d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 605d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 60649a05d7b82956009f03acbb92a064eed054eb031Jason 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); 607d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 60849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 609d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 610d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 611d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 61240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 613304b1f5497155bcf91e7b855cfab7a675e80bf26Alex SakhartchouknAllocationData2D_alloc(JNIEnv *_env, jobject _this, RsContext con, 614304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint dstAlloc, jint dstXoff, jint dstYoff, 615304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint dstMip, jint dstFace, 616304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint width, jint height, 617304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint srcAlloc, jint srcXoff, jint srcYoff, 618304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint srcMip, jint srcFace) 619304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk{ 620304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk LOG_API("nAllocation2DData_s, con(%p), dstAlloc(%p), dstXoff, dstYoff," 621304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " dstMip(%i), dstFace(%i), width(%i), height(%i)," 622304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i), srcFace(%i)", 623304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, dstFace, 624304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip, srcFace); 625304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 626304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk rsAllocationCopy2DRange(con, 627304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)dstAlloc, 628304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstXoff, dstYoff, 629304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstMip, dstFace, 630304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, 631304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)srcAlloc, 632304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcXoff, srcYoff, 633304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcMip, srcFace); 634304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk} 635304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 636304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchoukstatic void 6372e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jintArray data) 63840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 63940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 64040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 64140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 642e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 643e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 644ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 64540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 64640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 64740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 648fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationRead_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jshortArray data) 649fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 650fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 651fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 652fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 653e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 654e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 655fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseShortArrayElements(data, ptr, 0); 656fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 657fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 658fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 659fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationRead_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jbyteArray data) 660fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 661fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 662fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 663fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 664e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 665e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 666fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseByteArrayElements(data, ptr, 0); 667fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 668fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 669fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 6702e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jfloatArray data) 67140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 67240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 673a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 67440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 675e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 676e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 677ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 67840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 679d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 680dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic jint 6812e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationGetType(JNIEnv *_env, jobject _this, RsContext con, jint a) 682dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 683dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nAllocationGetType, con(%p), a(%p)", con, (RsAllocation)a); 684581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return (jint) rsaAllocationGetType(con, (RsAllocation)a); 685dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 686dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 6875edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 6885edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX) 6895edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 6905edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", con, (RsAllocation)alloc, dimX); 6915edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize1D(con, (RsAllocation)alloc, dimX); 6925edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 6935edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 6945edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 6955edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize2D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX, jint dimY) 6965edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 6975edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i), sizeY(%i)", con, (RsAllocation)alloc, dimX, dimY); 6985edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize2D(con, (RsAllocation)alloc, dimX, dimY); 6995edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 7005edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 701aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk// ----------------------------------- 702aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 703aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 7042e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint native_asset) 705aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 706aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) native_asset); 707aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 708aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 709aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 710b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromMemory(con, asset->getBuffer(false), asset->getLength()); 711b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 712b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 713b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 714b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 715b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFileA3DCreateFromAsset(JNIEnv *_env, jobject _this, RsContext con, jobject _assetMgr, jstring _path) 716b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 717b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 718b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 719b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 720b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 721b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 722b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 723b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 724b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 725b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 726b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 727b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 728b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromAsset(con, asset); 729b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 730b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 731b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 732b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 733b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFileA3DCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, jstring fileName) 734b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 735b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 736b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromFile(con, fileNameUTF.c_str()); 737b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 738aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 739aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 740aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 741aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 7422e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D) 743aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 744aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk int32_t numEntries = 0; 745581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetNumIndexEntries(con, &numEntries, (RsFile)fileA3D); 746aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return numEntries; 747aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 748aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 749aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic void 7502e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries) 751aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 752aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 753aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry)); 754aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 755581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetIndexEntries(con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D); 756aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 757aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk for(jint i = 0; i < numEntries; i ++) { 758aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName)); 759aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID); 760aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk } 761aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 762aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk free(fileEntries); 763aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 764aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 765aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 7662e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint index) 767aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 768aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 769581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk jint id = (jint)rsaFileA3DGetEntryByIndex(con, (uint32_t)index, (RsFile)fileA3D); 770aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 771aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 772d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 773d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 774d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 7759b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchoukstatic int 776b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, 777b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fileName, jfloat fontSize, jint dpi) 7789b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk{ 779b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 780e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromFile(con, 781e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fileNameUTF.c_str(), fileNameUTF.length(), 782e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi); 783b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 784b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 785b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 786b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 787b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 788b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, 789b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring name, jfloat fontSize, jint dpi, jint native_asset) 790b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 791b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 792b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 nameUTF(_env, name); 793b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 794e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromMemory(con, 795e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk nameUTF.c_str(), nameUTF.length(), 796e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 797b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 798b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 799b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 800b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 801b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 802b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromAsset(JNIEnv *_env, jobject _this, RsContext con, jobject _assetMgr, jstring _path, 803b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jfloat fontSize, jint dpi) 804b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 805b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 806b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 807b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 808b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 809b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 810b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 811b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 812b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 813b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 814b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 8159b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 816e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromMemory(con, 817e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk str.c_str(), str.length(), 818e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 819b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 820b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk delete asset; 8219b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return id; 8229b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk} 8239b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 824bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 825bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 826bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 8272e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint script, jint alloc, jint slot) 828d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 829d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 830bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 831d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 832d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 833d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8342e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarI(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 8354d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 836cfc04366998cd0c626594c9cf70336a11bdf5996Jason Sams LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 8374d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarI(con, (RsScript)script, slot, val); 8384d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8394d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 8404d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 8416f4cf0b8885403ead157ae00fd43cf1282331c23Jason SamsnScriptSetVarObj(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 8426f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{ 8436f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams LOG_API("nScriptSetVarObj, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 8446f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams rsScriptSetVarObj(con, (RsScript)script, slot, (RsObjectBase)val); 8456f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams} 8466f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams 8476f4cf0b8885403ead157ae00fd43cf1282331c23Jason Samsstatic void 848031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen HinesnScriptSetVarJ(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jlong val) 849031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{ 850031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", con, (void *)script, slot, val); 851031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsScriptSetVarJ(con, (RsScript)script, slot, val); 852031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines} 853031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines 854031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hinesstatic void 8552e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarF(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, float val) 8564d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 857ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", con, (void *)script, slot, val); 8584d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarF(con, (RsScript)script, slot, val); 8594d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8604d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 8614d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 862ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen HinesnScriptSetVarD(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, double val) 863ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{ 864ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", con, (void *)script, slot, val); 865ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsScriptSetVarD(con, (RsScript)script, slot, val); 866ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines} 867ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 868ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hinesstatic void 8692e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 8704d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 8714d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 8724d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 8734d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 8744d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarV(con, (RsScript)script, slot, ptr, len); 8754d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 8764d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8774d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 878d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 879d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8802e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone) 881584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 88207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 883584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 884584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 885584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 886584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 887584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 888bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 889584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 890584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 891584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 892584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 893584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 894584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 89522534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 8962e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvoke(JNIEnv *_env, jobject _this, RsContext con, jint obj, jint slot) 89722534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 8984d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 8994d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 90022534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 90122534176fb5c1257130ef4ee589739ca42766a32Jason Sams 902584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 9032e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 904be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 9054d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9064d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 9074d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 9084d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvokeV(con, (RsScript)script, slot, ptr, len); 9094d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 910be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 911be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 9126e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 9136e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason SamsnScriptForEach(JNIEnv *_env, jobject _this, RsContext con, 9146e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint script, jint slot, jint ain, jint aout) 9156e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 9166e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9176e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0); 9186e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 9196e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 9206e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason SamsnScriptForEachV(JNIEnv *_env, jobject _this, RsContext con, 9216e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint script, jint slot, jint ain, jint aout, jbyteArray params) 9226e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 9236e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9246e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint len = _env->GetArrayLength(params); 9256e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jbyte *ptr = _env->GetByteArrayElements(params, NULL); 9266e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len); 9276e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT); 9286e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 9296e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams 930d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 931fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 932fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 933e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Samsstatic jint 934e4a06c5fc738bf219f2a495e12a637b2d0871651Jason SamsnScriptCCreate(JNIEnv *_env, jobject _this, RsContext con, 935e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jstring resName, jstring cacheDir, 936e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jbyteArray scriptRef, jint length) 937d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 938e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 939e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 940e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 resNameUTF(_env, resName); 941e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir); 942e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jint ret = 0; 9438451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes jbyte* script_ptr = NULL; 94443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 94543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 94643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 94743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 9488451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "script == null"); 94943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 95043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 95143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 95243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 9538451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "length < 0"); 95443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 95543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 956e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams remaining = _env->GetArrayLength(scriptRef); 95743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 95843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 9598451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", 9608451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes // "length > script.length - offset"); 96143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 96243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 963e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams script_ptr = (jbyte *) 96443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 96543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 966e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams //rsScriptCSetText(con, (const char *)script_ptr, length); 967e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 968e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk ret = (jint)rsScriptCCreate(con, 969e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk resNameUTF.c_str(), resNameUTF.length(), 970e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk cacheDirUTF.c_str(), cacheDirUTF.length(), 971e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams (const char *)script_ptr, length); 97239ddc950c9064129ead5de04b200106c0659f937Jason Sams 97343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 974e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams if (script_ptr) { 975e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams _env->ReleasePrimitiveArrayCritical(scriptRef, script_ptr, 97643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 97743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 978d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 979e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams return ret; 980d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 981d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 982d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 983d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 984d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 985331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason SamsnProgramStoreCreate(JNIEnv *_env, jobject _this, RsContext con, 986331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean colorMaskR, jboolean colorMaskG, jboolean colorMaskB, jboolean colorMaskA, 987331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean depthMask, jboolean ditherEnable, 988331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint srcFunc, jint destFunc, 989331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint depthFunc) 990d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 99154db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreCreate, con(%p)", con); 992331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams return (jint)rsProgramStoreCreate(con, colorMaskR, colorMaskG, colorMaskB, colorMaskA, 993331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams depthMask, ditherEnable, (RsBlendSrcFunc)srcFunc, 994331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams (RsBlendDstFunc)destFunc, (RsDepthFunc)depthFunc); 995d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 996d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 9970011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 9980011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 9990011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 10002e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindConstants(JNIEnv *_env, jobject _this, RsContext con, jint vpv, jint slot, jint a) 10010011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 10020011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 10030011bcf57ff711a221a3a4c73f2a79125111647dJason Sams rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a); 10040011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 100554c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 1006d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10072e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindTexture(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 100854c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 100968afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 101068afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 101154c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 101254c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 101354c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 10142e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindSampler(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 1015d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 101668afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 101768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1018d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1019d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 102068afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 1021d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 102268afd01ec9fd37774d8291192952a25e5605b6fbJason Samsstatic jint 1023b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramFragmentCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 10247e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 1025b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 10267e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10277e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 10287e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 1029991040c8261237997915f8a4c899a6ea5012fb42Jason Sams LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, paramLen); 10307e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 1031b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint ret = (jint)rsProgramFragmentCreate(con, shaderUTF.c_str(), shaderUTF.length(), (uint32_t *)paramPtr, paramLen); 10327e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10337e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 10347e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 10357e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10367e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10371fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 10381fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10390011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 1040b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramVertexCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 10411fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 1042b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 10430011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10440011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 10451fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1046991040c8261237997915f8a4c899a6ea5012fb42Jason Sams LOG_API("nProgramVertexCreate, con(%p), paramLen(%i)", con, paramLen); 1047ee41112e1539de95596600fd2c6dada5d275217fJason Sams 1048b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint ret = (jint)rsProgramVertexCreate(con, shaderUTF.c_str(), shaderUTF.length(), (uint32_t *)paramPtr, paramLen); 10490011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10500011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 10511fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10521fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1053ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1054ebfb436a49673693b98469683451bd9ede797557Jason Sams 1055ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 1056331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, RsContext con, jboolean pointSmooth, 1057331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean lineSmooth, jboolean pointSprite, jfloat lineWidth, jint cull) 1058ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 105980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterCreate, con(%p), pointSmooth(%i), lineSmooth(%i), pointSprite(%i)", 106080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk con, pointSmooth, lineSmooth, pointSprite); 1061331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams return (jint)rsProgramRasterCreate(con, pointSmooth, lineSmooth, pointSprite, lineWidth, (RsCullMode)cull); 1062ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1063ebfb436a49673693b98469683451bd9ede797557Jason Sams 1064d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1065d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1066d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1067d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10682e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, RsContext con, jint script) 1069d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1070d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1071bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1072d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1073d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1074d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramStore(JNIEnv *_env, jobject _this, RsContext con, jint pfs) 1076d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 107754db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", con, (RsProgramStore)pfs); 107854db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsContextBindProgramStore(con, (RsProgramStore)pfs); 1079d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1080d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1081d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10822e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1083d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1084d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1085bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1086d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1087d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10880826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 10892e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, RsContext con, jint pf) 10900826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 10910826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1092bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 10930826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 10940826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1095d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 10962e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1097ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1098ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 1099ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 1100ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1101ebfb436a49673693b98469683451bd9ede797557Jason Sams 1102d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 110302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 110402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 110502fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 1106a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex SakhartchouknSamplerCreate(JNIEnv *_env, jobject _this, RsContext con, jint magFilter, jint minFilter, 1107a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk jint wrapS, jint wrapT, jint wrapR, jfloat aniso) 110802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 1109bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1110a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk return (jint)rsSamplerCreate(con, 1111a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)magFilter, 1112a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)minFilter, 1113a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapS, 1114a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapT, 1115a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapR, 1116a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk aniso); 111702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 111802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1119bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1120bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 11211bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 112225999a08a6652ff5d7d0973f279f1e92e04b3506Alex SakhartchouknMeshCreate(JNIEnv *_env, jobject _this, RsContext con, jintArray _vtx, jintArray _idx, jintArray _prim) 1123164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 112425999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk LOG_API("nMeshCreate, con(%p)", con); 1125164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 112625999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint vtxLen = _env->GetArrayLength(_vtx); 112725999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *vtxPtr = _env->GetIntArrayElements(_vtx, NULL); 112825999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint idxLen = _env->GetArrayLength(_idx); 112925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *idxPtr = _env->GetIntArrayElements(_idx, NULL); 113025999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint primLen = _env->GetArrayLength(_prim); 113125999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *primPtr = _env->GetIntArrayElements(_prim, NULL); 1132164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 113325999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk int id = (int)rsMeshCreate(con, 113425999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)vtxPtr, vtxLen, 113525999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)idxPtr, idxLen, 113625999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (uint32_t *)primPtr, primLen); 113780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 113825999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_vtx, vtxPtr, 0); 113925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_idx, idxPtr, 0); 114025999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_prim, primPtr, 0); 114125999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk return id; 11429d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk} 11439d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk 114480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 11452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 114680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 114780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 114880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint vtxCount = 0; 1149581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertexBufferCount(con, (RsMesh)mesh, &vtxCount); 115080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return vtxCount; 115180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 115280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 115380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 11542e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndexCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 115580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 115680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 115780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint idxCount = 0; 1158581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndexCount(con, (RsMesh)mesh, &idxCount); 115980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return idxCount; 116080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 116180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 116280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 11632e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _ids, int numVtxIDs) 116480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 116580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 116680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 116780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation)); 1168581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertices(con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs); 116980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 117080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numVtxIDs; i ++) { 117180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&allocs[i]); 117280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 117380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 117480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 117580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 117680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 117780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 11782e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _idxIds, jintArray _primitives, int numIndices) 117980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 118080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 118180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 118280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation)); 118380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t)); 118480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1185581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndices(con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices); 118680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 118780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numIndices; i ++) { 118880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_idxIds, i, 1, (const jint*)&allocs[i]); 118980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_primitives, i, 1, (const jint*)&prims[i]); 119080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 119180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 119280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 119380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(prims); 1194164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1195164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1196164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk// --------------------------------------------------------------------------- 1197164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1198d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 119994d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1200d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1201d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 12021c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"_nInit", "()V", (void*)_nInit }, 12031c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 12041c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 12051c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 12061c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 1207edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams{"nContextGetUserMessage", "(I[I)I", (void*)nContextGetUserMessage }, 12081c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, 1209edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams{"nContextPeekMessage", "(I[I)I", (void*)nContextPeekMessage }, 12101c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 12111c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, 12121c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, 12132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams// All methods below are thread protected in java. 1216b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextCreate", "(II)I", (void*)nContextCreate }, 12172c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk{"rsnContextCreateGL", "(IIIIIIIIIIIIFI)I", (void*)nContextCreateGL }, 12182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextFinish", "(I)V", (void*)nContextFinish }, 12192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority }, 12202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1221faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams{"rsnContextSetSurfaceTexture", "(IIILandroid/graphics/SurfaceTexture;)V", (void*)nContextSetSurfaceTexture }, 1222b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextDestroy", "(I)V", (void*)nContextDestroy }, 12232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextDump", "(II)V", (void*)nContextDump }, 12242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextPause", "(I)V", (void*)nContextPause }, 12252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextResume", "(I)V", (void*)nContextResume }, 12262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAssignName", "(II[B)V", (void*)nAssignName }, 1227b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnGetName", "(II)Ljava/lang/String;", (void*)nGetName }, 12282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnObjDestroy", "(II)V", (void*)nObjDestroy }, 12292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1230b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFileA3DCreateFromFile", "(ILjava/lang/String;)I", (void*)nFileA3DCreateFromFile }, 12312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DCreateFromAssetStream", "(II)I", (void*)nFileA3DCreateFromAssetStream }, 1232b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFileA3DCreateFromAsset", "(ILandroid/content/res/AssetManager;Ljava/lang/String;)I", (void*)nFileA3DCreateFromAsset }, 12332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetNumIndexEntries", "(II)I", (void*)nFileA3DGetNumIndexEntries }, 1234b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFileA3DGetIndexEntries", "(III[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, 12352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetEntryByIndex", "(III)I", (void*)nFileA3DGetEntryByIndex }, 12362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1237e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk{"rsnFontCreateFromFile", "(ILjava/lang/String;FI)I", (void*)nFontCreateFromFile }, 1238b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFontCreateFromAssetStream", "(ILjava/lang/String;FII)I", (void*)nFontCreateFromAssetStream }, 1239b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFontCreateFromAsset", "(ILandroid/content/res/AssetManager;Ljava/lang/String;FI)I", (void*)nFontCreateFromAsset }, 12402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementCreate", "(IIIZI)I", (void*)nElementCreate }, 124270d4e5024298f71edb3b04867e05568f5495b4ceJason Sams{"rsnElementCreate2", "(I[I[Ljava/lang/String;[I)I", (void*)nElementCreate2 }, 12432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementGetNativeData", "(II[I)V", (void*)nElementGetNativeData }, 1244b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnElementGetSubElements", "(II[I[Ljava/lang/String;)V", (void*)nElementGetSubElements }, 12452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1246bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams{"rsnTypeCreate", "(IIIIIZZ)I", (void*)nTypeCreate }, 1247b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData }, 12482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1249d4b23b54445b13dacaafad97d100999abb36ea6fJason Sams{"rsnAllocationCreateTyped", "(IIII)I", (void*)nAllocationCreateTyped }, 12505476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCreateFromBitmap", "(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCreateFromBitmap }, 12515476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCubeCreateFromBitmap","(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCubeCreateFromBitmap }, 12525476b450e50939940dcf3f15c92335cee2fc572dJason Sams 12534ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyFromBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyFromBitmap }, 12544ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyToBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyToBitmap }, 12554ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 12565476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationSyncAll", "(III)V", (void*)nAllocationSyncAll }, 125749a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[II)V", (void*)nAllocationData1D_i }, 125849a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[SI)V", (void*)nAllocationData1D_s }, 125949a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[BI)V", (void*)nAllocationData1D_b }, 126049a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[FI)V", (void*)nAllocationData1D_f }, 126149a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationElementData1D", "(IIIII[BI)V", (void*)nAllocationElementData1D }, 126249a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[II)V", (void*)nAllocationData2D_i }, 1263fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationData2D", "(IIIIIIII[SI)V", (void*)nAllocationData2D_s }, 1264fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationData2D", "(IIIIIIII[BI)V", (void*)nAllocationData2D_b }, 126549a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[FI)V", (void*)nAllocationData2D_f }, 1266304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk{"rsnAllocationData2D", "(IIIIIIIIIIIII)V", (void*)nAllocationData2D_alloc }, 12672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[I)V", (void*)nAllocationRead_i }, 1268fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationRead", "(II[S)V", (void*)nAllocationRead_s }, 1269fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationRead", "(II[B)V", (void*)nAllocationRead_b }, 12702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[F)V", (void*)nAllocationRead_f }, 12712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationGetType", "(II)I", (void*)nAllocationGetType}, 12725edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize1D", "(III)V", (void*)nAllocationResize1D }, 12735edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize2D", "(IIII)V", (void*)nAllocationResize2D }, 1274f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams{"rsnAllocationGenerateMipmaps", "(II)V", (void*)nAllocationGenerateMipmaps }, 12752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptBindAllocation", "(IIII)V", (void*)nScriptBindAllocation }, 12772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone }, 12782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke }, 12792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV }, 12806e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{"rsnScriptForEach", "(IIIII)V", (void*)nScriptForEach }, 12816e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{"rsnScriptForEach", "(IIIII[B)V", (void*)nScriptForEachV }, 12822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI }, 1283031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{"rsnScriptSetVarJ", "(IIIJ)V", (void*)nScriptSetVarJ }, 12842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, 1285ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD }, 12862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV }, 12876f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{"rsnScriptSetVarObj", "(IIII)V", (void*)nScriptSetVarObj }, 12882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1289e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams{"rsnScriptCCreate", "(ILjava/lang/String;Ljava/lang/String;[BI)I", (void*)nScriptCCreate }, 12902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1291331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams{"rsnProgramStoreCreate", "(IZZZZZZIII)I", (void*)nProgramStoreCreate }, 12922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindConstants", "(IIII)V", (void*)nProgramBindConstants }, 12942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindTexture", "(IIII)V", (void*)nProgramBindTexture }, 12952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindSampler", "(IIII)V", (void*)nProgramBindSampler }, 12962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 129749a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnProgramFragmentCreate", "(ILjava/lang/String;[I)I", (void*)nProgramFragmentCreate }, 1298331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams{"rsnProgramRasterCreate", "(IZZZFI)I", (void*)nProgramRasterCreate }, 129949a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnProgramVertexCreate", "(ILjava/lang/String;[I)I", (void*)nProgramVertexCreate }, 13002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindRootScript", "(II)V", (void*)nContextBindRootScript }, 1302b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextBindProgramStore", "(II)V", (void*)nContextBindProgramStore }, 13032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramFragment", "(II)V", (void*)nContextBindProgramFragment }, 13042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramVertex", "(II)V", (void*)nContextBindProgramVertex }, 13052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramRaster", "(II)V", (void*)nContextBindProgramRaster }, 13062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1307a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk{"rsnSamplerCreate", "(IIIIIIF)I", (void*)nSamplerCreate }, 13082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 130925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk{"rsnMeshCreate", "(I[I[I[I)I", (void*)nMeshCreate }, 13102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetVertexBufferCount", "(II)I", (void*)nMeshGetVertexBufferCount }, 13122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndexCount", "(II)I", (void*)nMeshGetIndexCount }, 1313b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnMeshGetVertices", "(II[II)V", (void*)nMeshGetVertices }, 13142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndices", "(II[I[II)V", (void*)nMeshGetIndices }, 131580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1316d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1317d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1318d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1319d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1320d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1321d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1322d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1323d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1324d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1325d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1326d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1327d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1328d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1329d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1330d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1331d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1332d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1333d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1334d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1335d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1336d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1337d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1338d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1339d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1340d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1341d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1342d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1343d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1344d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1345d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1346d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1347d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1348