android_renderscript_RenderScript.cpp revision 304b1f5497155bcf91e7b855cfab7a675e80bf26
1d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams/* 2d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Copyright (C) 2006 The Android Open Source Project 3d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 4d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * you may not use this file except in compliance with the License. 6d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * You may obtain a copy of the License at 7d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 8d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 10d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Unless required by applicable law or agreed to in writing, software 11d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * See the License for the specific language governing permissions and 14d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * limitations under the License. 15d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams */ 16d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 17f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams#define LOG_TAG "libRS_jni" 18f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 19d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <stdlib.h> 20d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <stdio.h> 21d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <fcntl.h> 22d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <unistd.h> 23d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <math.h> 24d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include <utils/misc.h> 25d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 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> 46d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 47d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams//#define LOG_API LOGE 48d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define LOG_API(...) 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 50d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android; 51d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 52b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukclass AutoJavaStringToUTF8 { 53b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukpublic: 54b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8(JNIEnv* env, jstring str) : fEnv(env), fJStr(str) 55b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk { 56b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fCStr = env->GetStringUTFChars(str, NULL); 57b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fLength = env->GetStringUTFLength(str); 58b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 59b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk ~AutoJavaStringToUTF8() 60b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk { 61b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk fEnv->ReleaseStringUTFChars(fJStr, fCStr); 62b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 63b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* c_str() const { return fCStr; } 64b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize length() const { return fLength; } 65b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 66b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukprivate: 67b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk JNIEnv* fEnv; 68b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fJStr; 69b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk const char* fCStr; 70b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jsize fLength; 71b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk}; 72b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 73d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 74d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 75ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gContextId = 0; 76ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gNativeBitmapID = 0; 7743ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic jfieldID gTypeNativeCache = 0; 78d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 79d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void _nInit(JNIEnv *_env, jclass _this) 80d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 81d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams gContextId = _env->GetFieldID(_this, "mContext", "I"); 82ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 83ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); 84ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I"); 85d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 86d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 87d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 88d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 893eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsstatic void 902e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextFinish(JNIEnv *_env, jobject _this, RsContext con) 9196ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams{ 9296ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams LOG_API("nContextFinish, con(%p)", con); 9396ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams rsContextFinish(con); 9496ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams} 9596ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 9696ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Samsstatic void 972e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAssignName(JNIEnv *_env, jobject _this, RsContext con, jint obj, jbyteArray str) 983eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{ 9907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAssignName, con(%p), obj(%p)", con, (void *)obj); 1003eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jint len = _env->GetArrayLength(str); 1013eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 102bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAssignName(con, (void *)obj, (const char *)cptr, len); 1033eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 1043eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams} 1053eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 106fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchoukstatic jstring 1072e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnGetName(JNIEnv *_env, jobject _this, RsContext con, jint obj) 108fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk{ 109fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk LOG_API("nGetName, con(%p), obj(%p)", con, (void *)obj); 110fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk const char *name = NULL; 111581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaGetName(con, (void *)obj, &name); 112581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk if(name == NULL || strlen(name) == 0) { 113581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return NULL; 114581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk } 115fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk return _env->NewStringUTF(name); 116fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk} 117fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk 1187ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 1192e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnObjDestroy(JNIEnv *_env, jobject _this, RsContext con, jint obj) 1207ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 1217ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj); 1229c25aee52672f9c8908e062bde502341c189970eJason Sams rsObjDestroy(con, (void *)obj); 1237ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 1247ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 1253eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 1263eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 127d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 128d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 129d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 130d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 131d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsDeviceCreate(); 132d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 133d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 134d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 135d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) 136d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 137d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 138d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 139d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 140d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 141ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 142ebfb436a49673693b98469683451bd9ede797557Jason SamsnDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value) 143ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 144ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value); 145ebfb436a49673693b98469683451bd9ede797557Jason Sams return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value); 146ebfb436a49673693b98469683451bd9ede797557Jason Sams} 147ebfb436a49673693b98469683451bd9ede797557Jason Sams 148d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 149704ff64b099406bb328898a7443921f22dbffd6dJason SamsnContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver) 150d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 151d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 152704ff64b099406bb328898a7443921f22dbffd6dJason Sams return (jint)rsContextCreate((RsDevice)dev, ver); 153704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 154704ff64b099406bb328898a7443921f22dbffd6dJason Sams 155704ff64b099406bb328898a7443921f22dbffd6dJason Samsstatic jint 15611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason SamsnContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, 15711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 15811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 15911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 16011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 1612c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int samplesMin, int samplesPref, float samplesQ, 1622c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int dpi) 16311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams{ 16411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams RsSurfaceConfig sc; 16511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaMin = alphaMin; 16611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaPref = alphaPref; 16711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorMin = colorMin; 16811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorPref = colorPref; 16911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthMin = depthMin; 17011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthPref = depthPref; 17111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesMin = samplesMin; 17211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesPref = samplesPref; 17311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesQ = samplesQ; 17411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams 175704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nContextCreateGL"); 1762c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk return (jint)rsContextCreateGL((RsDevice)dev, ver, sc, dpi); 177d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 178d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 179d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1802e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetPriority(JNIEnv *_env, jobject _this, RsContext con, jint p) 1817d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{ 1827d787b4722eaeb79cab42c36060336e092b77b5fJason Sams LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p); 1837d787b4722eaeb79cab42c36060336e092b77b5fJason Sams rsContextSetPriority(con, p); 1847d787b4722eaeb79cab42c36060336e092b77b5fJason Sams} 1857d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1867d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1877d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1887d787b4722eaeb79cab42c36060336e092b77b5fJason Samsstatic void 1892e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetSurface(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject wnd) 190efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 1913bc47d438171dce294e816366d53bc9eca772c5bJason Sams LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)wnd); 192efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 1936c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk ANativeWindow * window = NULL; 194efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 195efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 196efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 1976c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk window = android_Surface_getNativeWindow(_env, wnd).get(); 198efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 199efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 2006c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk rsContextSetSurface(con, width, height, window); 201efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 202efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 203efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 2042e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDestroy(JNIEnv *_env, jobject _this, RsContext con) 205d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 2062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams LOG_API("nContextDestroy, con(%p)", con); 2072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsContextDestroy(con); 208d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 209d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 210715333b832fb448c32165c7d97d408a3fa43f7cbJason Samsstatic void 2112e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDump(JNIEnv *_env, jobject _this, RsContext con, jint bits) 212715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{ 213715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits); 214715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDump((RsContext)con, bits); 215715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams} 216d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 217d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2182e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextPause(JNIEnv *_env, jobject _this, RsContext con) 21965e7aa56f56097418d617663683544c25b3988eaJason Sams{ 22065e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextPause, con(%p)", con); 22165e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextPause(con); 22265e7aa56f56097418d617663683544c25b3988eaJason Sams} 22365e7aa56f56097418d617663683544c25b3988eaJason Sams 22465e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 2252e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextResume(JNIEnv *_env, jobject _this, RsContext con) 22665e7aa56f56097418d617663683544c25b3988eaJason Sams{ 22765e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextResume, con(%p)", con); 22865e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextResume(con); 22965e7aa56f56097418d617663683544c25b3988eaJason Sams} 23065e7aa56f56097418d617663683544c25b3988eaJason Sams 2311c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2321c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jstring 2331c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetErrorMessage(JNIEnv *_env, jobject _this, RsContext con) 2341c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2351c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextGetErrorMessage, con(%p)", con); 2361c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams char buf[1024]; 2371c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2381c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2391c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 24065bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextGetMessage(con, 24165bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams buf, sizeof(buf), 24265bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 243edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 2441c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (!id && receiveLen) { 2451c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOGV("message receive buffer too small. %i", receiveLen); 2461c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 2471c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams return _env->NewStringUTF(buf); 2481c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 2491c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 250edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Samsstatic jint 2511c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) 252516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 253516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 254516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextGetMessage, con(%p), len(%i)", con, len); 255516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 256516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 2571c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 25865bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextGetMessage(con, 25965bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, len * 4, 26065bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams &receiveLen, sizeof(receiveLen), 261edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 262516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 2631d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams LOGV("message receive buffer too small. %i", receiveLen); 264516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 265516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 266edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams return id; 2671c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 2681c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2691c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jint 270edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason SamsnContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData) 2711c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2721c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextPeekMessage, con(%p)", con); 2731c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); 2741c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2751c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 27665bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams int id = rsContextPeekMessage(con, &receiveLen, sizeof(receiveLen), 277edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams &subID, sizeof(subID)); 2781c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[0] = (jint)subID; 2791c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[1] = (jint)receiveLen; 2801c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); 281516c31911578db8ce53529483c3ded918ac7dc6bJason Sams return id; 282516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 283516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 2842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextInitToClient(JNIEnv *_env, jobject _this, RsContext con) 285516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 286516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextInitToClient, con(%p)", con); 287516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextInitToClient(con); 288516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 289516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 2902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextDeinitToClient(JNIEnv *_env, jobject _this, RsContext con) 291516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 292516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextDeinitToClient, con(%p)", con); 293516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextDeinitToClient(con); 294516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 295516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 296516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 297718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 2982e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementCreate(JNIEnv *_env, jobject _this, RsContext con, jint type, jint kind, jboolean norm, jint size) 299d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 300718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size); 301718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)rsElementCreate(con, (RsDataType)type, (RsDataKind)kind, norm, size); 302d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 303d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 304718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 30570d4e5024298f71edb3b04867e05568f5495b4ceJason SamsnElementCreate2(JNIEnv *_env, jobject _this, RsContext con, jintArray _ids, jobjectArray _names, jintArray _arraySizes) 306d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 307718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams int fieldCount = _env->GetArrayLength(_ids); 308704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nElementCreate2, con(%p)", con); 309718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 310718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jint *ids = _env->GetIntArrayElements(_ids, NULL); 31170d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint *arraySizes = _env->GetIntArrayElements(_arraySizes, NULL); 312718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams const char ** nameArray = (const char **)calloc(fieldCount, sizeof(char *)); 313718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams size_t* sizeArray = (size_t*)calloc(fieldCount, sizeof(size_t)); 314718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 315718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 316718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 317718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams nameArray[ct] = _env->GetStringUTFChars(s, NULL); 318718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams sizeArray[ct] = _env->GetStringUTFLength(s); 31943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 320e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsElementCreate2(con, 321e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk (RsElement *)ids, fieldCount, 3227a22e107d100caea2a661ec73e4525d69f0f9759Jason Sams nameArray, fieldCount * sizeof(size_t), sizeArray, 323e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk (const uint32_t *)arraySizes, fieldCount); 324718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 325718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 326718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseStringUTFChars(s, nameArray[ct]); 32743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 328718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseIntArrayElements(_ids, ids, JNI_ABORT); 32970d4e5024298f71edb3b04867e05568f5495b4ceJason Sams _env->ReleaseIntArrayElements(_arraySizes, arraySizes, JNI_ABORT); 330718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(nameArray); 331718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(sizeArray); 332718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)id; 333d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 334d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 335dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3362e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _elementData) 337dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 338dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_elementData); 339dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetNativeData, con(%p)", con); 340dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 341dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements 342dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(dataSize == 5); 343dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 344dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t elementData[5]; 345581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetNativeData(con, (RsElement)id, elementData, dataSize); 346dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 347dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < dataSize; i ++) { 348dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_elementData, i, 1, (const jint*)&elementData[i]); 349dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 350dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 351dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 352dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 353dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3542e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetSubElements(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _IDs, jobjectArray _names) 355dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 356dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_IDs); 357dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetSubElements, con(%p)", con); 358dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 359dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t *ids = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t)); 360dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk const char **names = (const char **)malloc((uint32_t)dataSize * sizeof(const char *)); 361dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 362581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetSubElements(con, (RsElement)id, ids, names, (uint32_t)dataSize); 363dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 36411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams for(jint i = 0; i < dataSize; i++) { 365dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i])); 366dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_IDs, i, 1, (const jint*)&ids[i]); 367dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 368dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 369dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(ids); 370dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(names); 371dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 372dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 373d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 374d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 3753b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Samsstatic int 376bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason SamsnTypeCreate(JNIEnv *_env, jobject _this, RsContext con, RsElement eid, 377bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces) 378d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 379bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i)", 380bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams con, eid, dimx, dimy, dimz, mips, faces); 3813b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams 382c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsTypeCreate(con, (RsElement)eid, dimx, dimy, dimz, mips, faces); 3833b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams return (jint)id; 384d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 385d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 386dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3872e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _typeData) 388dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 389dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // We are packing 6 items: mDimX; mDimY; mDimZ; 390dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // mDimLOD; mDimFaces; mElement; into typeData 391dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int elementCount = _env->GetArrayLength(_typeData); 392dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 393dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(elementCount == 6); 394dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nTypeCreate, con(%p)", con); 395dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 396dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t typeData[6]; 397581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaTypeGetNativeData(con, (RsType)id, typeData, 6); 398dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 399dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < elementCount; i ++) { 400dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_typeData, i, 1, (const jint*)&typeData[i]); 401dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 402dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 403dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 404d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 405d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 406d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 4075476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mips, jint usage) 408d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 409d4b23b54445b13dacaafad97d100999abb36ea6fJason Sams LOG_API("nAllocationCreateTyped, con(%p), type(%p), mip(%i), usage(%i)", con, (RsElement)type, mips, usage); 410c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams return (jint) rsAllocationCreateTyped(con, (RsType)type, (RsAllocationMipmapControl)mips, (uint32_t)usage); 411d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 412d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 413d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 4145476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationSyncAll(JNIEnv *_env, jobject _this, RsContext con, jint a, jint bits) 4155476b450e50939940dcf3f15c92335cee2fc572dJason Sams{ 4165476b450e50939940dcf3f15c92335cee2fc572dJason Sams LOG_API("nAllocationSyncAll, con(%p), a(%p), bits(0x%08x)", con, (RsAllocation)a, bits); 4175476b450e50939940dcf3f15c92335cee2fc572dJason Sams rsAllocationSyncAll(con, (RsAllocation)a, (RsAllocationUsageType)bits); 4185476b450e50939940dcf3f15c92335cee2fc572dJason Sams} 4195476b450e50939940dcf3f15c92335cee2fc572dJason Sams 420f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Samsstatic void 421f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason SamsnAllocationGenerateMipmaps(JNIEnv *_env, jobject _this, RsContext con, jint alloc) 422f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams{ 423f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams LOG_API("nAllocationGenerateMipmaps, con(%p), a(%p)", con, (RsAllocation)alloc); 424f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsAllocationGenerateMipmaps(con, (RsAllocation)alloc); 425f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams} 426f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams 427fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 4285476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 429fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 430ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 431ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 432ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 433fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 4345476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 4355476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 436c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, 43765bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 43865bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 4395476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 4405476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 441ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 442fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 44367f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchoukstatic int 4445476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 44567f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk{ 44667f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk SkBitmap const * nativeBitmap = 44767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 44867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 44967f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 4505476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 4515476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 452c576537166fa3f829e4b5d8c6617a36b47e75fc3Jason Sams jint id = (jint)rsAllocationCubeCreateFromBitmap(con, 45365bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams (RsType)type, (RsAllocationMipmapControl)mip, 45465bdaf1c6d463d9441125d2c87a36015bfef2d95Jason Sams ptr, bitmap.getSize(), usage); 4555476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 4565476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 45767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk} 45867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 45926ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchoukstatic void 4604ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 46126ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk{ 46226ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk SkBitmap const * nativeBitmap = 46326ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 46426ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 465f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int w = bitmap.width(); 466f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams int h = bitmap.height(); 46726ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk 4684ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 4694ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const void* ptr = bitmap.getPixels(); 470f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, 0, 0, 471304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, 472f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams w, h, ptr, bitmap.getSize()); 4734ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 4748a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 4758a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4764ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void 4774ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyToBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 4788a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 4794ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = 4804ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 4814ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const SkBitmap& bitmap(*nativeBitmap); 4828a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4834ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 4844ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams void* ptr = bitmap.getPixels(); 4854ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsAllocationCopyToBitmap(con, (RsAllocation)alloc, ptr, bitmap.getSize()); 4864ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 4878a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 4888a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4894ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void ReleaseBitmapCallback(void *bmp) 490650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 4914ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; 4924ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams nativeBitmap->unlockPixels(); 493650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 494650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 4954ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 496d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 49749a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jintArray data, int sizeBytes) 498d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 499d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 50049a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 501d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 50249a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 503d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 504d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 505d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 506d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 50749a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jshortArray data, int sizeBytes) 508d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 509d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 51049a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 511768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 51249a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 513768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 514d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 515d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 516d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 51749a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jbyteArray data, int sizeBytes) 518d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 519d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 52049a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 521768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 52249a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 523768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 524d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 525d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 526d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 52749a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jfloatArray data, int sizeBytes) 528d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 529d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 53049a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 531d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 53249a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 533d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 534d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 535d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 536d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 53749a05d7b82956009f03acbb92a064eed054eb031Jason Sams// native void rsnAllocationElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes); 53849a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationElementData1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint compIdx, jbyteArray data, int sizeBytes) 53949bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{ 54049bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jint len = _env->GetArrayLength(data); 54149a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocationElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); 54249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 54349a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DElementData(con, (RsAllocation)alloc, offset, lod, ptr, compIdx, sizeBytes); 54449bdaf0293408159df18a1d8540360f9623c40f7Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 54549bdaf0293408159df18a1d8540360f9623c40f7Jason Sams} 54649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 54749bdaf0293408159df18a1d8540360f9623c40f7Jason Samsstatic void 548fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationData2D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 549fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint w, jint h, jshortArray data, int sizeBytes) 550fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 551fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 552fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason 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); 553fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 554fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 555fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 556fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 557fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 558fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 559fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationData2D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 560fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint w, jint h, jbyteArray data, int sizeBytes) 561fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 562fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 563fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason 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); 564fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 565fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 566fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 567fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 568fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 569fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 57049a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 57149a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jintArray data, int sizeBytes) 572d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 573d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 57449a05d7b82956009f03acbb92a064eed054eb031Jason 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); 575d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 57649a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 577d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 578d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 579d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 580d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 58149a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 58249a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jfloatArray data, int sizeBytes) 583d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 584d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 58549a05d7b82956009f03acbb92a064eed054eb031Jason 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); 586d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 58749a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 588d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 589d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 590d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 59140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 592304b1f5497155bcf91e7b855cfab7a675e80bf26Alex SakhartchouknAllocationData2D_alloc(JNIEnv *_env, jobject _this, RsContext con, 593304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint dstAlloc, jint dstXoff, jint dstYoff, 594304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint dstMip, jint dstFace, 595304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint width, jint height, 596304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint srcAlloc, jint srcXoff, jint srcYoff, 597304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk jint srcMip, jint srcFace) 598304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk{ 599304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk LOG_API("nAllocation2DData_s, con(%p), dstAlloc(%p), dstXoff, dstYoff," 600304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " dstMip(%i), dstFace(%i), width(%i), height(%i)," 601304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i), srcFace(%i)", 602304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, dstFace, 603304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip, srcFace); 604304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 605304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk rsAllocationCopy2DRange(con, 606304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)dstAlloc, 607304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstXoff, dstYoff, 608304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstMip, dstFace, 609304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, 610304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk (RsAllocation)srcAlloc, 611304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcXoff, srcYoff, 612304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcMip, srcFace); 613304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk} 614304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 615304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchoukstatic void 6162e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jintArray data) 61740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 61840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 61940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 62040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 621e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 622e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 623ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 62440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 62540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 62640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 627fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationRead_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jshortArray data) 628fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 629fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 630fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 631fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 632e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 633e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 634fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseShortArrayElements(data, ptr, 0); 635fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 636fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 637fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 638fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason SamsnAllocationRead_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jbyteArray data) 639fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{ 640fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jint len = _env->GetArrayLength(data); 641fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 642fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 643e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 644e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 645fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams _env->ReleaseByteArrayElements(data, ptr, 0); 646fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams} 647fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams 648fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Samsstatic void 6492e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jfloatArray data) 65040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 65140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 652a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 65340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 654e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jsize length = _env->GetArrayLength(data); 655e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk rsAllocationRead(con, (RsAllocation)alloc, ptr, length); 656ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 65740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 658d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 659dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic jint 6602e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationGetType(JNIEnv *_env, jobject _this, RsContext con, jint a) 661dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 662dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nAllocationGetType, con(%p), a(%p)", con, (RsAllocation)a); 663581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return (jint) rsaAllocationGetType(con, (RsAllocation)a); 664dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 665dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 6665edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 6675edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX) 6685edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 6695edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", con, (RsAllocation)alloc, dimX); 6705edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize1D(con, (RsAllocation)alloc, dimX); 6715edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 6725edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 6735edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 6745edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize2D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX, jint dimY) 6755edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 6765edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i), sizeY(%i)", con, (RsAllocation)alloc, dimX, dimY); 6775edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize2D(con, (RsAllocation)alloc, dimX, dimY); 6785edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 6795edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 680aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk// ----------------------------------- 681aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 682aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 6832e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint native_asset) 684aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 685aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) native_asset); 686aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 687aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 688aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 689b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromMemory(con, asset->getBuffer(false), asset->getLength()); 690b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 691b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 692b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 693b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 694b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFileA3DCreateFromAsset(JNIEnv *_env, jobject _this, RsContext con, jobject _assetMgr, jstring _path) 695b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 696b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 697b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 698b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 699b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 700b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 701b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 702b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 703b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 704b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 705b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 706b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 707b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromAsset(con, asset); 708b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 709b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 710b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 711b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 712b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFileA3DCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, jstring fileName) 713b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 714b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 715b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromFile(con, fileNameUTF.c_str()); 716b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 717aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 718aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 719aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 720aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 7212e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D) 722aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 723aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk int32_t numEntries = 0; 724581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetNumIndexEntries(con, &numEntries, (RsFile)fileA3D); 725aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return numEntries; 726aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 727aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 728aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic void 7292e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries) 730aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 731aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 732aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry)); 733aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 734581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetIndexEntries(con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D); 735aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 736aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk for(jint i = 0; i < numEntries; i ++) { 737aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName)); 738aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID); 739aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk } 740aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 741aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk free(fileEntries); 742aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 743aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 744aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 7452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint index) 746aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 747aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 748581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk jint id = (jint)rsaFileA3DGetEntryByIndex(con, (uint32_t)index, (RsFile)fileA3D); 749aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 750aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 751d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 752d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 753d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 7549b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchoukstatic int 755b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, 756b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring fileName, jfloat fontSize, jint dpi) 7579b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk{ 758b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 fileNameUTF(_env, fileName); 759e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromFile(con, 760e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fileNameUTF.c_str(), fileNameUTF.length(), 761e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi); 762b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 763b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 764b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 765b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 766b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 767b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, 768b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jstring name, jfloat fontSize, jint dpi, jint native_asset) 769b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 770b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 771b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 nameUTF(_env, name); 772b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 773e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromMemory(con, 774e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk nameUTF.c_str(), nameUTF.length(), 775e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 776b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 777b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return id; 778b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk} 779b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 780b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukstatic int 781b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex SakhartchouknFontCreateFromAsset(JNIEnv *_env, jobject _this, RsContext con, jobject _assetMgr, jstring _path, 782b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jfloat fontSize, jint dpi) 783b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{ 784b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); 785b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (mgr == NULL) { 786b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 787b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 788b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk 789b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 str(_env, _path); 790b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); 791b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk if (asset == NULL) { 792b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return 0; 793b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 7949b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 795e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk jint id = (jint)rsFontCreateFromMemory(con, 796e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk str.c_str(), str.length(), 797e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk fontSize, dpi, 798b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk asset->getBuffer(false), asset->getLength()); 799b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk delete asset; 8009b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return id; 8019b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk} 8029b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 803bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 804bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 805bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 8062e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint script, jint alloc, jint slot) 807d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 808d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 809bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 810d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 811d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 812d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8132e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarI(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 8144d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 815cfc04366998cd0c626594c9cf70336a11bdf5996Jason Sams LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 8164d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarI(con, (RsScript)script, slot, val); 8174d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8184d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 8194d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 8206f4cf0b8885403ead157ae00fd43cf1282331c23Jason SamsnScriptSetVarObj(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 8216f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{ 8226f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams LOG_API("nScriptSetVarObj, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 8236f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams rsScriptSetVarObj(con, (RsScript)script, slot, (RsObjectBase)val); 8246f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams} 8256f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams 8266f4cf0b8885403ead157ae00fd43cf1282331c23Jason Samsstatic void 827031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen HinesnScriptSetVarJ(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jlong val) 828031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{ 829031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", con, (void *)script, slot, val); 830031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsScriptSetVarJ(con, (RsScript)script, slot, val); 831031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines} 832031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines 833031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hinesstatic void 8342e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarF(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, float val) 8354d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 836ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", con, (void *)script, slot, val); 8374d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarF(con, (RsScript)script, slot, val); 8384d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8394d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 8404d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 841ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen HinesnScriptSetVarD(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, double val) 842ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{ 843ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", con, (void *)script, slot, val); 844ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsScriptSetVarD(con, (RsScript)script, slot, val); 845ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines} 846ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 847ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hinesstatic void 8482e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 8494d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 8504d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 8514d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 8524d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 8534d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarV(con, (RsScript)script, slot, ptr, len); 8544d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 8554d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8564d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 857d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 858d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8592e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone) 860584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 86107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 862584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 863584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 864584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 865584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 866584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 867bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 868584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 869584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 870584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 871584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 872584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 873584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 87422534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 8752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvoke(JNIEnv *_env, jobject _this, RsContext con, jint obj, jint slot) 87622534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 8774d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 8784d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 87922534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 88022534176fb5c1257130ef4ee589739ca42766a32Jason Sams 881584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 8822e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 883be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 8844d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 8854d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 8864d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 8874d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvokeV(con, (RsScript)script, slot, ptr, len); 8884d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 889be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 890be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 8916e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 8926e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason SamsnScriptForEach(JNIEnv *_env, jobject _this, RsContext con, 8936e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint script, jint slot, jint ain, jint aout) 8946e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 8956e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 8966e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0); 8976e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 8986e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Samsstatic void 8996e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason SamsnScriptForEachV(JNIEnv *_env, jobject _this, RsContext con, 9006e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint script, jint slot, jint ain, jint aout, jbyteArray params) 9016e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{ 9026e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9036e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jint len = _env->GetArrayLength(params); 9046e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams jbyte *ptr = _env->GetByteArrayElements(params, NULL); 9056e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len); 9066e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT); 9076e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams} 9086e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams 909d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 910fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 911fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 912e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Samsstatic jint 913e4a06c5fc738bf219f2a495e12a637b2d0871651Jason SamsnScriptCCreate(JNIEnv *_env, jobject _this, RsContext con, 914e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jstring resName, jstring cacheDir, 915e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jbyteArray scriptRef, jint length) 916d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 917e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 918e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 919e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 resNameUTF(_env, resName); 920e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir); 921e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams jint ret = 0; 9228451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes jbyte* script_ptr = NULL; 92343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 92443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 92543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 92643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 9278451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "script == null"); 92843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 92943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 93043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 93143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 9328451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", "length < 0"); 93343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 93443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 935e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams remaining = _env->GetArrayLength(scriptRef); 93643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 93743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 9388451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes //jniThrowException(_env, "java/lang/IllegalArgumentException", 9398451b25a4422656bbd6657a5855e69c0f4d53c74Elliott Hughes // "length > script.length - offset"); 94043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 94143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 942e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams script_ptr = (jbyte *) 94343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 94443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 945e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams //rsScriptCSetText(con, (const char *)script_ptr, length); 946e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams 947e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk ret = (jint)rsScriptCCreate(con, 948e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk resNameUTF.c_str(), resNameUTF.length(), 949e7c4a7565c7f8c8fc1ec92dc0692577fcc474750Alex Sakhartchouk cacheDirUTF.c_str(), cacheDirUTF.length(), 950e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams (const char *)script_ptr, length); 95139ddc950c9064129ead5de04b200106c0659f937Jason Sams 95243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 953e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams if (script_ptr) { 954e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams _env->ReleasePrimitiveArrayCritical(scriptRef, script_ptr, 95543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 95643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 957d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 958e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams return ret; 959d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 960d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 961d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 962d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 963d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 964331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason SamsnProgramStoreCreate(JNIEnv *_env, jobject _this, RsContext con, 965331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean colorMaskR, jboolean colorMaskG, jboolean colorMaskB, jboolean colorMaskA, 966331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean depthMask, jboolean ditherEnable, 967331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint srcFunc, jint destFunc, 968331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jint depthFunc) 969d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 97054db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreCreate, con(%p)", con); 971331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams return (jint)rsProgramStoreCreate(con, colorMaskR, colorMaskG, colorMaskB, colorMaskA, 972331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams depthMask, ditherEnable, (RsBlendSrcFunc)srcFunc, 973331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams (RsBlendDstFunc)destFunc, (RsDepthFunc)depthFunc); 974d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 975d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 9760011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 9770011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 9780011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 9792e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindConstants(JNIEnv *_env, jobject _this, RsContext con, jint vpv, jint slot, jint a) 9800011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 9810011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 9820011bcf57ff711a221a3a4c73f2a79125111647dJason Sams rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a); 9830011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 98454c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 985d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9862e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindTexture(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 98754c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 98868afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 98968afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 99054c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 99154c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 99254c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 9932e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindSampler(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 994d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 99568afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 99668afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 997d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 998d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 99968afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 1000d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 100168afd01ec9fd37774d8291192952a25e5605b6fbJason Samsstatic jint 1002b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramFragmentCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 10037e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 1004b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 10057e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10067e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 10077e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 1008991040c8261237997915f8a4c899a6ea5012fb42Jason Sams LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, paramLen); 10097e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 1010b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint ret = (jint)rsProgramFragmentCreate(con, shaderUTF.c_str(), shaderUTF.length(), (uint32_t *)paramPtr, paramLen); 10117e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10127e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 10137e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 10147e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10157e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10161fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 10171fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10180011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 1019b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramVertexCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 10201fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 1021b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk AutoJavaStringToUTF8 shaderUTF(_env, shader); 10220011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10230011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 10241fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1025991040c8261237997915f8a4c899a6ea5012fb42Jason Sams LOG_API("nProgramVertexCreate, con(%p), paramLen(%i)", con, paramLen); 1026ee41112e1539de95596600fd2c6dada5d275217fJason Sams 1027b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk jint ret = (jint)rsProgramVertexCreate(con, shaderUTF.c_str(), shaderUTF.length(), (uint32_t *)paramPtr, paramLen); 10280011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10290011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 10301fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10311fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1032ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1033ebfb436a49673693b98469683451bd9ede797557Jason Sams 1034ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 1035331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, RsContext con, jboolean pointSmooth, 1036331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams jboolean lineSmooth, jboolean pointSprite, jfloat lineWidth, jint cull) 1037ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 103880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterCreate, con(%p), pointSmooth(%i), lineSmooth(%i), pointSprite(%i)", 103980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk con, pointSmooth, lineSmooth, pointSprite); 1040331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams return (jint)rsProgramRasterCreate(con, pointSmooth, lineSmooth, pointSprite, lineWidth, (RsCullMode)cull); 1041ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1042ebfb436a49673693b98469683451bd9ede797557Jason Sams 1043d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1044d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1045d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1046d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10472e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, RsContext con, jint script) 1048d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1049d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1050bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1051d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1052d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1053d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10542e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramStore(JNIEnv *_env, jobject _this, RsContext con, jint pfs) 1055d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 105654db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", con, (RsProgramStore)pfs); 105754db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsContextBindProgramStore(con, (RsProgramStore)pfs); 1058d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1059d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1060d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10612e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1062d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1063d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1064bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1065d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1066d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10670826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 10682e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, RsContext con, jint pf) 10690826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 10700826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1071bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 10720826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 10730826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1074d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 10752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1076ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1077ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 1078ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 1079ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1080ebfb436a49673693b98469683451bd9ede797557Jason Sams 1081d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 108202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 108302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 108402fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 1085a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex SakhartchouknSamplerCreate(JNIEnv *_env, jobject _this, RsContext con, jint magFilter, jint minFilter, 1086a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk jint wrapS, jint wrapT, jint wrapR, jfloat aniso) 108702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 1088bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1089a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk return (jint)rsSamplerCreate(con, 1090a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)magFilter, 1091a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)minFilter, 1092a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapS, 1093a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapT, 1094a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk (RsSamplerValue)wrapR, 1095a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk aniso); 109602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 109702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1098bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1099bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 11001bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 110125999a08a6652ff5d7d0973f279f1e92e04b3506Alex SakhartchouknMeshCreate(JNIEnv *_env, jobject _this, RsContext con, jintArray _vtx, jintArray _idx, jintArray _prim) 1102164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 110325999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk LOG_API("nMeshCreate, con(%p)", con); 1104164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 110525999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint vtxLen = _env->GetArrayLength(_vtx); 110625999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *vtxPtr = _env->GetIntArrayElements(_vtx, NULL); 110725999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint idxLen = _env->GetArrayLength(_idx); 110825999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *idxPtr = _env->GetIntArrayElements(_idx, NULL); 110925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint primLen = _env->GetArrayLength(_prim); 111025999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk jint *primPtr = _env->GetIntArrayElements(_prim, NULL); 1111164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 111225999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk int id = (int)rsMeshCreate(con, 111325999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)vtxPtr, vtxLen, 111425999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (RsAllocation *)idxPtr, idxLen, 111525999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk (uint32_t *)primPtr, primLen); 111680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 111725999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_vtx, vtxPtr, 0); 111825999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_idx, idxPtr, 0); 111925999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk _env->ReleaseIntArrayElements(_prim, primPtr, 0); 112025999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk return id; 11219d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk} 11229d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk 112380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 11242e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 112580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 112680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 112780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint vtxCount = 0; 1128581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertexBufferCount(con, (RsMesh)mesh, &vtxCount); 112980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return vtxCount; 113080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 113180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 113280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 11332e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndexCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 113480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 113580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 113680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint idxCount = 0; 1137581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndexCount(con, (RsMesh)mesh, &idxCount); 113880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return idxCount; 113980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 114080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 114180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 11422e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _ids, int numVtxIDs) 114380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 114480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 114580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 114680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation)); 1147581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertices(con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs); 114880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 114980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numVtxIDs; i ++) { 115080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&allocs[i]); 115180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 115280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 115380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 115480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 115580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 115680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 11572e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _idxIds, jintArray _primitives, int numIndices) 115880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 115980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 116080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 116180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation)); 116280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t)); 116380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1164581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndices(con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices); 116580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 116680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numIndices; i ++) { 116780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_idxIds, i, 1, (const jint*)&allocs[i]); 116880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_primitives, i, 1, (const jint*)&prims[i]); 116980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 117080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 117180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 117280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(prims); 1173164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1174164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1175164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk// --------------------------------------------------------------------------- 1176164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1177d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 117894d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1179d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1180d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 11811c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"_nInit", "()V", (void*)_nInit }, 11821c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 11831c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 11841c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 11851c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 1186edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams{"nContextGetUserMessage", "(I[I)I", (void*)nContextGetUserMessage }, 11871c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, 1188edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams{"nContextPeekMessage", "(I[I)I", (void*)nContextPeekMessage }, 11891c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 11901c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, 11911c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, 11922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams// All methods below are thread protected in java. 1195b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextCreate", "(II)I", (void*)nContextCreate }, 11962c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk{"rsnContextCreateGL", "(IIIIIIIIIIIIFI)I", (void*)nContextCreateGL }, 11972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextFinish", "(I)V", (void*)nContextFinish }, 11982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority }, 11992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1200b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextDestroy", "(I)V", (void*)nContextDestroy }, 12012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextDump", "(II)V", (void*)nContextDump }, 12022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextPause", "(I)V", (void*)nContextPause }, 12032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextResume", "(I)V", (void*)nContextResume }, 12042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAssignName", "(II[B)V", (void*)nAssignName }, 1205b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnGetName", "(II)Ljava/lang/String;", (void*)nGetName }, 12062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnObjDestroy", "(II)V", (void*)nObjDestroy }, 12072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1208b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFileA3DCreateFromFile", "(ILjava/lang/String;)I", (void*)nFileA3DCreateFromFile }, 12092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DCreateFromAssetStream", "(II)I", (void*)nFileA3DCreateFromAssetStream }, 1210b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFileA3DCreateFromAsset", "(ILandroid/content/res/AssetManager;Ljava/lang/String;)I", (void*)nFileA3DCreateFromAsset }, 12112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetNumIndexEntries", "(II)I", (void*)nFileA3DGetNumIndexEntries }, 1212b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFileA3DGetIndexEntries", "(III[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, 12132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetEntryByIndex", "(III)I", (void*)nFileA3DGetEntryByIndex }, 12142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1215e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk{"rsnFontCreateFromFile", "(ILjava/lang/String;FI)I", (void*)nFontCreateFromFile }, 1216b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFontCreateFromAssetStream", "(ILjava/lang/String;FII)I", (void*)nFontCreateFromAssetStream }, 1217b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk{"rsnFontCreateFromAsset", "(ILandroid/content/res/AssetManager;Ljava/lang/String;FI)I", (void*)nFontCreateFromAsset }, 12182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementCreate", "(IIIZI)I", (void*)nElementCreate }, 122070d4e5024298f71edb3b04867e05568f5495b4ceJason Sams{"rsnElementCreate2", "(I[I[Ljava/lang/String;[I)I", (void*)nElementCreate2 }, 12212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementGetNativeData", "(II[I)V", (void*)nElementGetNativeData }, 1222b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnElementGetSubElements", "(II[I[Ljava/lang/String;)V", (void*)nElementGetSubElements }, 12232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1224bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams{"rsnTypeCreate", "(IIIIIZZ)I", (void*)nTypeCreate }, 1225b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData }, 12262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1227d4b23b54445b13dacaafad97d100999abb36ea6fJason Sams{"rsnAllocationCreateTyped", "(IIII)I", (void*)nAllocationCreateTyped }, 12285476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCreateFromBitmap", "(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCreateFromBitmap }, 12295476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCubeCreateFromBitmap","(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCubeCreateFromBitmap }, 12305476b450e50939940dcf3f15c92335cee2fc572dJason Sams 12314ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyFromBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyFromBitmap }, 12324ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyToBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyToBitmap }, 12334ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 12345476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationSyncAll", "(III)V", (void*)nAllocationSyncAll }, 123549a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[II)V", (void*)nAllocationData1D_i }, 123649a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[SI)V", (void*)nAllocationData1D_s }, 123749a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[BI)V", (void*)nAllocationData1D_b }, 123849a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[FI)V", (void*)nAllocationData1D_f }, 123949a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationElementData1D", "(IIIII[BI)V", (void*)nAllocationElementData1D }, 124049a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[II)V", (void*)nAllocationData2D_i }, 1241fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationData2D", "(IIIIIIII[SI)V", (void*)nAllocationData2D_s }, 1242fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationData2D", "(IIIIIIII[BI)V", (void*)nAllocationData2D_b }, 124349a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[FI)V", (void*)nAllocationData2D_f }, 1244304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk{"rsnAllocationData2D", "(IIIIIIIIIIIII)V", (void*)nAllocationData2D_alloc }, 12452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[I)V", (void*)nAllocationRead_i }, 1246fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationRead", "(II[S)V", (void*)nAllocationRead_s }, 1247fb9f82ca4f11cf7e43a001f3e6fd1b381cc86210Jason Sams{"rsnAllocationRead", "(II[B)V", (void*)nAllocationRead_b }, 12482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[F)V", (void*)nAllocationRead_f }, 12492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationGetType", "(II)I", (void*)nAllocationGetType}, 12505edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize1D", "(III)V", (void*)nAllocationResize1D }, 12515edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize2D", "(IIII)V", (void*)nAllocationResize2D }, 1252f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams{"rsnAllocationGenerateMipmaps", "(II)V", (void*)nAllocationGenerateMipmaps }, 12532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptBindAllocation", "(IIII)V", (void*)nScriptBindAllocation }, 12552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone }, 12562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke }, 12572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV }, 12586e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{"rsnScriptForEach", "(IIIII)V", (void*)nScriptForEach }, 12596e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams{"rsnScriptForEach", "(IIIII[B)V", (void*)nScriptForEachV }, 12602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI }, 1261031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{"rsnScriptSetVarJ", "(IIIJ)V", (void*)nScriptSetVarJ }, 12622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, 1263ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD }, 12642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV }, 12656f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{"rsnScriptSetVarObj", "(IIII)V", (void*)nScriptSetVarObj }, 12662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1267e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams{"rsnScriptCCreate", "(ILjava/lang/String;Ljava/lang/String;[BI)I", (void*)nScriptCCreate }, 12682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1269331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams{"rsnProgramStoreCreate", "(IZZZZZZIII)I", (void*)nProgramStoreCreate }, 12702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindConstants", "(IIII)V", (void*)nProgramBindConstants }, 12722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindTexture", "(IIII)V", (void*)nProgramBindTexture }, 12732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindSampler", "(IIII)V", (void*)nProgramBindSampler }, 12742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 127549a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnProgramFragmentCreate", "(ILjava/lang/String;[I)I", (void*)nProgramFragmentCreate }, 1276331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams{"rsnProgramRasterCreate", "(IZZZFI)I", (void*)nProgramRasterCreate }, 127749a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnProgramVertexCreate", "(ILjava/lang/String;[I)I", (void*)nProgramVertexCreate }, 12782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindRootScript", "(II)V", (void*)nContextBindRootScript }, 1280b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextBindProgramStore", "(II)V", (void*)nContextBindProgramStore }, 12812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramFragment", "(II)V", (void*)nContextBindProgramFragment }, 12822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramVertex", "(II)V", (void*)nContextBindProgramVertex }, 12832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramRaster", "(II)V", (void*)nContextBindProgramRaster }, 12842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1285a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk{"rsnSamplerCreate", "(IIIIIIF)I", (void*)nSamplerCreate }, 12862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 128725999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk{"rsnMeshCreate", "(I[I[I[I)I", (void*)nMeshCreate }, 12882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetVertexBufferCount", "(II)I", (void*)nMeshGetVertexBufferCount }, 12902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndexCount", "(II)I", (void*)nMeshGetIndexCount }, 1291b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnMeshGetVertices", "(II[II)V", (void*)nMeshGetVertices }, 12922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndices", "(II[I[II)V", (void*)nMeshGetIndices }, 129380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1294d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1295d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1296d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1297d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1298d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1299d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1300d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1301d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1302d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1303d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1304d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1305d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1306d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1307d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1308d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1309d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1310d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1311d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1312d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1313d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1314d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1315d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1316d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1317d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1318d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1319d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1320d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1321d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1322d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1323d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1324d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1325d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1326