android_renderscript_RenderScript.cpp revision 031ec58cfc7a20927302a5300eba3f5fc1709b50
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> 35650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy#include <utils/ResourceTypes.h> 36f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams 37d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "jni.h" 38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "JNIHelp.h" 39d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "android_runtime/AndroidRuntime.h" 40ee956053d6e3f7a7a82e41853b9b251fdc226d7aJim Miller#include "android_runtime/android_view_Surface.h" 41d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 42e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScript.h> 43e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams#include <RenderScriptEnv.h> 44d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 45d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams//#define LOG_API LOGE 46d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define LOG_API(...) 47d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 48d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android; 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 50d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 51d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 52d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void doThrow(JNIEnv* env, const char* exc, const char* msg = NULL) 53d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 54d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jclass npeClazz = env->FindClass(exc); 55d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams env->ThrowNew(npeClazz, msg); 56d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 57d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 58ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gContextId = 0; 59ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Samsstatic jfieldID gNativeBitmapID = 0; 6043ee06857bb7f99446d1d84f8789016c5d105558Jason Samsstatic jfieldID gTypeNativeCache = 0; 61d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 62ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement g_A_8 = NULL; 63ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement g_RGBA_4444 = NULL; 64ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement g_RGBA_8888 = NULL; 65ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement g_RGB_565 = NULL; 66ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 67d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void _nInit(JNIEnv *_env, jclass _this) 68d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 69d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams gContextId = _env->GetFieldID(_this, "mContext", "I"); 70ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 71ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); 72ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I"); 73d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 74d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 75ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic void nInitElements(JNIEnv *_env, jobject _this, jint a8, jint rgba4444, jint rgba8888, jint rgb565) 76ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams{ 77ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams g_A_8 = reinterpret_cast<RsElement>(a8); 78ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams g_RGBA_4444 = reinterpret_cast<RsElement>(rgba4444); 79ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams g_RGBA_8888 = reinterpret_cast<RsElement>(rgba8888); 80ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams g_RGB_565 = reinterpret_cast<RsElement>(rgb565); 81ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams} 82d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 83d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 84d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 853eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsstatic void 862e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextFinish(JNIEnv *_env, jobject _this, RsContext con) 8796ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams{ 8896ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams LOG_API("nContextFinish, con(%p)", con); 8996ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams rsContextFinish(con); 9096ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams} 9196ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 9296ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Samsstatic void 932e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAssignName(JNIEnv *_env, jobject _this, RsContext con, jint obj, jbyteArray str) 943eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{ 9507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAssignName, con(%p), obj(%p)", con, (void *)obj); 963eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jint len = _env->GetArrayLength(str); 973eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 98bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAssignName(con, (void *)obj, (const char *)cptr, len); 993eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 1003eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams} 1013eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 102fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchoukstatic jstring 1032e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnGetName(JNIEnv *_env, jobject _this, RsContext con, jint obj) 104fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk{ 105fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk LOG_API("nGetName, con(%p), obj(%p)", con, (void *)obj); 106fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk const char *name = NULL; 107fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk rsGetName(con, (void *)obj, &name); 108fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk return _env->NewStringUTF(name); 109fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk} 110fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk 1117ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 1122e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnObjDestroy(JNIEnv *_env, jobject _this, RsContext con, jint obj) 1137ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 1147ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj); 1157ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams rsObjDestroy(con, (void *)obj); 1167ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 1177ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 1183eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 11964676f3c21a07d650069315572811570cbf8f728Jason Samsstatic jint 1202e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileOpen(JNIEnv *_env, jobject _this, RsContext con, jbyteArray str) 12164676f3c21a07d650069315572811570cbf8f728Jason Sams{ 12264676f3c21a07d650069315572811570cbf8f728Jason Sams LOG_API("nFileOpen, con(%p)", con); 12364676f3c21a07d650069315572811570cbf8f728Jason Sams jint len = _env->GetArrayLength(str); 12464676f3c21a07d650069315572811570cbf8f728Jason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 125bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams jint ret = (jint)rsFileOpen(con, (const char *)cptr, len); 12664676f3c21a07d650069315572811570cbf8f728Jason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 12764676f3c21a07d650069315572811570cbf8f728Jason Sams return ret; 12864676f3c21a07d650069315572811570cbf8f728Jason Sams} 12964676f3c21a07d650069315572811570cbf8f728Jason Sams 1303eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 1313eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 132d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 133d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 134d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 135d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 136d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsDeviceCreate(); 137d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 138d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 139d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 140d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) 141d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 142d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 143d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 144d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 145d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 146ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 147ebfb436a49673693b98469683451bd9ede797557Jason SamsnDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value) 148ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 149ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value); 150ebfb436a49673693b98469683451bd9ede797557Jason Sams return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value); 151ebfb436a49673693b98469683451bd9ede797557Jason Sams} 152ebfb436a49673693b98469683451bd9ede797557Jason Sams 153d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 154704ff64b099406bb328898a7443921f22dbffd6dJason SamsnContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver) 155d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 156d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 157704ff64b099406bb328898a7443921f22dbffd6dJason Sams return (jint)rsContextCreate((RsDevice)dev, ver); 158704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 159704ff64b099406bb328898a7443921f22dbffd6dJason Sams 160704ff64b099406bb328898a7443921f22dbffd6dJason Samsstatic jint 161704ff64b099406bb328898a7443921f22dbffd6dJason SamsnContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, jboolean useDepth) 162704ff64b099406bb328898a7443921f22dbffd6dJason Sams{ 163704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nContextCreateGL"); 164704ff64b099406bb328898a7443921f22dbffd6dJason Sams return (jint)rsContextCreateGL((RsDevice)dev, ver, useDepth); 165d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 166d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 167d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1682e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetPriority(JNIEnv *_env, jobject _this, RsContext con, jint p) 1697d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{ 1707d787b4722eaeb79cab42c36060336e092b77b5fJason Sams LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p); 1717d787b4722eaeb79cab42c36060336e092b77b5fJason Sams rsContextSetPriority(con, p); 1727d787b4722eaeb79cab42c36060336e092b77b5fJason Sams} 1737d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1747d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1757d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1767d787b4722eaeb79cab42c36060336e092b77b5fJason Samsstatic void 1772e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetSurface(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject wnd) 178efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 1793bc47d438171dce294e816366d53bc9eca772c5bJason Sams LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)wnd); 180efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 181efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams Surface * window = NULL; 182efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 183efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 184efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 185ee956053d6e3f7a7a82e41853b9b251fdc226d7aJim Miller window = (Surface*) android_Surface_getNativeWindow(_env, wnd).get(); 186efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 187efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 1883bc47d438171dce294e816366d53bc9eca772c5bJason Sams rsContextSetSurface(con, width, height, window); 189efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 190efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 191efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 1922e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDestroy(JNIEnv *_env, jobject _this, RsContext con) 193d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams LOG_API("nContextDestroy, con(%p)", con); 1952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsContextDestroy(con); 196d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 197d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 198715333b832fb448c32165c7d97d408a3fa43f7cbJason Samsstatic void 1992e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDump(JNIEnv *_env, jobject _this, RsContext con, jint bits) 200715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{ 201715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits); 202715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDump((RsContext)con, bits); 203715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams} 204d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 205d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2062e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextPause(JNIEnv *_env, jobject _this, RsContext con) 20765e7aa56f56097418d617663683544c25b3988eaJason Sams{ 20865e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextPause, con(%p)", con); 20965e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextPause(con); 21065e7aa56f56097418d617663683544c25b3988eaJason Sams} 21165e7aa56f56097418d617663683544c25b3988eaJason Sams 21265e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 2132e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextResume(JNIEnv *_env, jobject _this, RsContext con) 21465e7aa56f56097418d617663683544c25b3988eaJason Sams{ 21565e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextResume, con(%p)", con); 21665e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextResume(con); 21765e7aa56f56097418d617663683544c25b3988eaJason Sams} 21865e7aa56f56097418d617663683544c25b3988eaJason Sams 219516c31911578db8ce53529483c3ded918ac7dc6bJason Samsstatic jint 2202e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextGetMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data, jboolean wait) 221516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 222516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 223516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextGetMessage, con(%p), len(%i)", con, len); 224516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 225516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 226516c31911578db8ce53529483c3ded918ac7dc6bJason Sams int id = rsContextGetMessage(con, ptr, &receiveLen, len * 4, wait); 227516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 2281d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams LOGV("message receive buffer too small. %i", receiveLen); 2291d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams *ptr = (jint)receiveLen; 230516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 231516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 232516c31911578db8ce53529483c3ded918ac7dc6bJason Sams return id; 233516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 234516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 2352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextInitToClient(JNIEnv *_env, jobject _this, RsContext con) 236516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 237516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextInitToClient, con(%p)", con); 238516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextInitToClient(con); 239516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 240516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 2412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextDeinitToClient(JNIEnv *_env, jobject _this, RsContext con) 242516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 243516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextDeinitToClient, con(%p)", con); 244516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextDeinitToClient(con); 245516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 246516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 247516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 248718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 2492e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementCreate(JNIEnv *_env, jobject _this, RsContext con, jint type, jint kind, jboolean norm, jint size) 250d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 251718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size); 252718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)rsElementCreate(con, (RsDataType)type, (RsDataKind)kind, norm, size); 253d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 254d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 255718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 25670d4e5024298f71edb3b04867e05568f5495b4ceJason SamsnElementCreate2(JNIEnv *_env, jobject _this, RsContext con, jintArray _ids, jobjectArray _names, jintArray _arraySizes) 257d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 258718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams int fieldCount = _env->GetArrayLength(_ids); 259704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nElementCreate2, con(%p)", con); 260718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 261718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jint *ids = _env->GetIntArrayElements(_ids, NULL); 26270d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint *arraySizes = _env->GetIntArrayElements(_arraySizes, NULL); 263718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams const char ** nameArray = (const char **)calloc(fieldCount, sizeof(char *)); 264718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams size_t* sizeArray = (size_t*)calloc(fieldCount, sizeof(size_t)); 265718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 266718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 267718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 268718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams nameArray[ct] = _env->GetStringUTFChars(s, NULL); 269718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams sizeArray[ct] = _env->GetStringUTFLength(s); 27043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 27170d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint id = (jint)rsElementCreate2(con, fieldCount, (RsElement *)ids, nameArray, sizeArray, (const uint32_t *)arraySizes); 272718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 273718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 274718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseStringUTFChars(s, nameArray[ct]); 27543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 276718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseIntArrayElements(_ids, ids, JNI_ABORT); 27770d4e5024298f71edb3b04867e05568f5495b4ceJason Sams _env->ReleaseIntArrayElements(_arraySizes, arraySizes, JNI_ABORT); 278718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(nameArray); 279718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(sizeArray); 280718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)id; 281d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 282d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 283dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 2842e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _elementData) 285dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 286dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_elementData); 287dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetNativeData, con(%p)", con); 288dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 289dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements 290dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(dataSize == 5); 291dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 292dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t elementData[5]; 293dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk rsElementGetNativeData(con, (RsElement)id, elementData, dataSize); 294dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 295dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < dataSize; i ++) { 296dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_elementData, i, 1, (const jint*)&elementData[i]); 297dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 298dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 299dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 300dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 301dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3022e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetSubElements(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _IDs, jobjectArray _names) 303dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 304dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_IDs); 305dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetSubElements, con(%p)", con); 306dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 307dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t *ids = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t)); 308dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk const char **names = (const char **)malloc((uint32_t)dataSize * sizeof(const char *)); 309dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 310dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk rsElementGetSubElements(con, (RsElement)id, ids, names, (uint32_t)dataSize); 311dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 312dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < dataSize; i ++) { 313dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i])); 314dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_IDs, i, 1, (const jint*)&ids[i]); 315dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 316dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 317dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(ids); 318dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(names); 319dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 320dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 321d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 322d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 323d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 3242e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeBegin(JNIEnv *_env, jobject _this, RsContext con, jint eID) 325d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 326d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeBegin, con(%p) e(%p)", con, (RsElement)eID); 327bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeBegin(con, (RsElement)eID); 328d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 329d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 330d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 3312e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeAdd(JNIEnv *_env, jobject _this, RsContext con, jint dim, jint val) 332d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 333d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeAdd, con(%p) dim(%i), val(%i)", con, dim, val); 334bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsTypeAdd(con, (RsDimension)dim, val); 335d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 336d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 337d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 3382e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeCreate(JNIEnv *_env, jobject _this, RsContext con) 339d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 340d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nTypeCreate, con(%p)", con); 341bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsTypeCreate(con); 342d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 343d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 344dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _typeData) 346dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 347dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // We are packing 6 items: mDimX; mDimY; mDimZ; 348dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // mDimLOD; mDimFaces; mElement; into typeData 349dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int elementCount = _env->GetArrayLength(_typeData); 350dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 351dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(elementCount == 6); 352dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nTypeCreate, con(%p)", con); 353dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 354dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t typeData[6]; 355dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk rsTypeGetNativeData(con, (RsType)id, typeData, 6); 356dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 357dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < elementCount; i ++) { 358dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_typeData, i, 1, (const jint*)&typeData[i]); 359dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 360dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 361dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 362d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 363d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 364d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 3652e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, RsContext con, jint e) 366d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 367d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationCreateTyped, con(%p), e(%p)", con, (RsElement)e); 368bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint) rsAllocationCreateTyped(con, (RsElement)e); 369d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 370d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 371d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 3722e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationUploadToTexture(JNIEnv *_env, jobject _this, RsContext con, jint a, jboolean genMip, jint mip) 373d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 374c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams LOG_API("nAllocationUploadToTexture, con(%p), a(%p), genMip(%i), mip(%i)", con, (RsAllocation)a, genMip, mip); 375c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams rsAllocationUploadToTexture(con, (RsAllocation)a, genMip, mip); 376d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 377d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 37807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Samsstatic void 3792e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationUploadToBufferObject(JNIEnv *_env, jobject _this, RsContext con, jint a) 38007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{ 38107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAllocationUploadToBufferObject, con(%p), a(%p)", con, (RsAllocation)a); 38207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocationUploadToBufferObject(con, (RsAllocation)a); 38307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams} 38407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 385ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement SkBitmapToPredefined(SkBitmap::Config cfg) 386ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{ 387ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams switch (cfg) { 388ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kA8_Config: 389ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_A_8; 390ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_4444_Config: 391ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_4444; 392ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_8888_Config: 393ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_8888; 394ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kRGB_565_Config: 395ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGB_565; 396ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 397ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams default: 398ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams break; 399ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 400ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams // If we don't have a conversion mark it as a user type. 401ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams LOGE("Unsupported bitmap type"); 402ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return NULL; 403ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 404ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 405fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 4062e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint dstFmt, jboolean genMips, jobject jbitmap) 407fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 408ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 409ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 410ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 411ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap::Config config = bitmap.getConfig(); 412fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 413ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 414ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 415ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.lockPixels(); 416ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int w = bitmap.width(); 417ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int h = bitmap.height(); 418ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const void* ptr = bitmap.getPixels(); 419ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 420ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.unlockPixels(); 421ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return id; 422ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 423ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return 0; 424ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 425fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 4268a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Samsstatic void ReleaseBitmapCallback(void *bmp) 4278a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 4288a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; 4298a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams nativeBitmap->unlockPixels(); 4308a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 4318a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4328a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Samsstatic int 4332e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationCreateBitmapRef(JNIEnv *_env, jobject _this, RsContext con, jint type, jobject jbitmap) 4348a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 4358a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams SkBitmap * nativeBitmap = 4368a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams (SkBitmap *)_env->GetIntField(jbitmap, gNativeBitmapID); 4378a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4388a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4398a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams nativeBitmap->lockPixels(); 4408a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams void* ptr = nativeBitmap->getPixels(); 4418a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams jint id = (jint)rsAllocationCreateBitmapRef(con, (RsType)type, ptr, nativeBitmap, ReleaseBitmapCallback); 4428a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return id; 4438a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 4448a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 445b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Samsstatic int 4462e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint dstFmt, jboolean genMips, jint native_asset) 447650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 448650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy Asset* asset = reinterpret_cast<Asset*>(native_asset); 449650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap bitmap; 450650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkImageDecoder::DecodeMemory(asset->getBuffer(false), asset->getLength(), 451650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy &bitmap, SkBitmap::kNo_Config, SkImageDecoder::kDecodePixels_Mode); 452650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 453650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap::Config config = bitmap.getConfig(); 454650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 455ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 456650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 457ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 458650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.lockPixels(); 459650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int w = bitmap.width(); 460650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int h = bitmap.height(); 461650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const void* ptr = bitmap.getPixels(); 462ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 463650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.unlockPixels(); 464650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return id; 465650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } 466650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return 0; 467650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 468650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 469d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 4702e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jintArray data, int sizeBytes) 471d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 472d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 473768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 474d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 475768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 476d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 477d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 478d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 479d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 4802e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jshortArray data, int sizeBytes) 481d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 482d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 483768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 484768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 485768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 486768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 487d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 488d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 489d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 4902e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jbyteArray data, int sizeBytes) 491d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 492d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 493768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 494768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 49507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 496768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 497d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 498d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 499d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5002e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jfloatArray data, int sizeBytes) 501d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 502d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 503768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 504d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 50507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 506d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 507d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 508d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 509d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 51049bdaf0293408159df18a1d8540360f9623c40f7Jason Sams// native void rsnAllocationSubElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes); 51149bdaf0293408159df18a1d8540360f9623c40f7Jason SamsnAllocationSubElementData1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint compIdx, jbyteArray data, int sizeBytes) 51249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{ 51349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jint len = _env->GetArrayLength(data); 51449bdaf0293408159df18a1d8540360f9623c40f7Jason Sams LOG_API("nAllocationSubElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); 51549bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 51649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams rsAllocation1DSubElementData(con, (RsAllocation)alloc, offset, ptr, compIdx, sizeBytes); 51749bdaf0293408159df18a1d8540360f9623c40f7Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 51849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams} 51949bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 52049bdaf0293408159df18a1d8540360f9623c40f7Jason Samsstatic void 5212e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData2D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data, int sizeBytes) 522d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 523d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 524d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocation2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 525d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 52607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 527d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 528d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 529d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 530d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5312e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData2D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data, int sizeBytes) 532d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 533d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 534d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocation2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 535d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 53607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 537d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 538d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 539d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 54040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 5412e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jintArray data) 54240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 54340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 54440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 54540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 546bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 547ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 54840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 54940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 55040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 5512e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jfloatArray data) 55240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 55340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 554a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 55540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 556bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 557ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 55840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 559d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 560dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic jint 5612e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationGetType(JNIEnv *_env, jobject _this, RsContext con, jint a) 562dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 563dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nAllocationGetType, con(%p), a(%p)", con, (RsAllocation)a); 564dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk return (jint) rsAllocationGetType(con, (RsAllocation)a); 565dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 566dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 5675edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 5685edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX) 5695edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 5705edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", con, (RsAllocation)alloc, dimX); 5715edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize1D(con, (RsAllocation)alloc, dimX); 5725edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 5735edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 5745edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 5755edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize2D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX, jint dimY) 5765edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 5775edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i), sizeY(%i)", con, (RsAllocation)alloc, dimX, dimY); 5785edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize2D(con, (RsAllocation)alloc, dimX, dimY); 5795edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 5805edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 581aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk// ----------------------------------- 582aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 583aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 5842e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint native_asset) 585aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 586aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) native_asset); 587aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 588aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 589aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 590aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk jint id = (jint)rsFileA3DCreateFromAssetStream(con, asset->getBuffer(false), asset->getLength()); 591aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 592aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 593aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 594aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 5952e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D) 596aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 597aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk int32_t numEntries = 0; 598aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk rsFileA3DGetNumIndexEntries(con, &numEntries, (RsFile)fileA3D); 599aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return numEntries; 600aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 601aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 602aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic void 6032e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries) 604aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 605aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 606aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry)); 607aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 608aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk rsFileA3DGetIndexEntries(con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D); 609aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 610aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk for(jint i = 0; i < numEntries; i ++) { 611aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName)); 612aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID); 613aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk } 614aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 615aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk free(fileEntries); 616aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 617aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 618aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 6192e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint index) 620aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 621aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 622aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk jint id = (jint)rsFileA3DGetEntryByIndex(con, (uint32_t)index, (RsFile)fileA3D); 623aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 624aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 625d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 626d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 627d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 6289b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchoukstatic int 6292e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFontCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, jstring fileName, jint fontSize, jint dpi) 6309b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk{ 6319b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk const char* fileNameUTF = _env->GetStringUTFChars(fileName, NULL); 6329b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 6339b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk jint id = (jint)rsFontCreateFromFile(con, fileNameUTF, fontSize, dpi); 6349b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return id; 6359b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk} 6369b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 6379b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 6389b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk// ----------------------------------- 6399b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 640d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6412e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint alloc) 642d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 643d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter1D)adapter, (RsAllocation)alloc); 644bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DBindAllocation(con, (RsAdapter1D)adapter, (RsAllocation)alloc); 645d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 646d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 647d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6482e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DSetConstraint(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint dim, jint value) 649d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 650d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter1D)adapter, dim, value); 651bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSetConstraint(con, (RsAdapter1D)adapter, (RsDimension)dim, value); 652d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 653d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 654d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6552e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jintArray data) 656d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 657d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 658d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 659d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 660bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 661d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 662d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 663d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 664d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6652e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DSubData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint offset, jint count, jintArray data) 666d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 667d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 668d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 669d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 670bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 671d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 672d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 673d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 674d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jfloatArray data) 676d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 677d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 678d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 679d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 680bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 681d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 682d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 683d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 684d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6852e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DSubData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint offset, jint count, jfloatArray data) 686d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 687d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 688d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 689d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 690bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 691d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 692d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 693d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 694d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 6952e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DCreate(JNIEnv *_env, jobject _this, RsContext con) 696d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 697d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DCreate, con(%p)", con); 698bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter1DCreate(con); 699d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 700d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 701d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 702d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 703d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7042e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint alloc) 705bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 706bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter2D)adapter, (RsAllocation)alloc); 707bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DBindAllocation(con, (RsAdapter2D)adapter, (RsAllocation)alloc); 708bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 709bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 710bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7112e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DSetConstraint(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint dim, jint value) 712bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 713bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter2D)adapter, dim, value); 714bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSetConstraint(con, (RsAdapter2D)adapter, (RsDimension)dim, value); 715bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 716bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 717bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7182e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jintArray data) 719bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 720bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 721bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 722bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 723bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 724bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 725bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 726bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 727bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7282e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jfloatArray data) 729bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 730bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 731bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 732bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 733bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 734bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 735bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 736bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 737bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7382e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DSubData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint xoff, jint yoff, jint w, jint h, jintArray data) 739bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 740bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 741bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 742bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 743bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 744bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter2D)adapter, xoff, yoff, w, h, ptr); 745bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 746bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 747bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 748bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7492e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DSubData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint xoff, jint yoff, jint w, jint h, jfloatArray data) 750bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 751bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 752bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_f, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 753bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 754bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 755bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter1D)adapter, xoff, yoff, w, h, ptr); 756bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 757bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 758bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 759bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic jint 7602e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DCreate(JNIEnv *_env, jobject _this, RsContext con) 761bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 762bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DCreate, con(%p)", con); 763bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter2DCreate(con); 764bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 765bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 766bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 767bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 768bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7692e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint script, jint alloc, jint slot) 770d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 771d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 772bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 773d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 774d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 775d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7762e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarI(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 7774d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 778cfc04366998cd0c626594c9cf70336a11bdf5996Jason Sams LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 7794d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarI(con, (RsScript)script, slot, val); 7804d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 7814d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 7824d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 783031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen HinesnScriptSetVarJ(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jlong val) 784031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{ 785031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", con, (void *)script, slot, val); 786031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsScriptSetVarJ(con, (RsScript)script, slot, val); 787031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines} 788031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines 789031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hinesstatic void 7902e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarF(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, float val) 7914d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 792ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", con, (void *)script, slot, val); 7934d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarF(con, (RsScript)script, slot, val); 7944d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 7954d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 7964d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 797ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen HinesnScriptSetVarD(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, double val) 798ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{ 799ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", con, (void *)script, slot, val); 800ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsScriptSetVarD(con, (RsScript)script, slot, val); 801ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines} 802ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 803ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hinesstatic void 8042e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 8054d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 8064d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 8074d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 8084d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 8094d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarV(con, (RsScript)script, slot, ptr, len); 8104d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 8114d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8124d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 813d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 814d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8152e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone) 816584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 81707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 818584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 819584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 820584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 821584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 822584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 823bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 824584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 825584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 826584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 827584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 828584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 829584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 83022534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 8312e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvoke(JNIEnv *_env, jobject _this, RsContext con, jint obj, jint slot) 83222534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 8334d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 8344d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 83522534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 83622534176fb5c1257130ef4ee589739ca42766a32Jason Sams 837584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 8382e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 839be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 8404d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 8414d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 8424d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 8434d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvokeV(con, (RsScript)script, slot, ptr, len); 8444d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 845be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 846be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 847d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 848fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 849fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 850d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8512e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCBegin(JNIEnv *_env, jobject _this, RsContext con) 852d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 853fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCBegin, con(%p)", con); 854bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCBegin(con); 855d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 856d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 857d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8582e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCSetScript(JNIEnv *_env, jobject _this, RsContext con, jbyteArray scriptRef, 85943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint offset, jint length) 860d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 861d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("!!! nScriptCSetScript, con(%p)", con); 86243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 86343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 86443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_base = 0; 86543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_ptr; 86643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 86743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 86843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "script == null"); 86943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 87043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 87143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (offset < 0) { 87243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 87343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "offset < 0"); 87443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 87543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 87643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 87743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 87843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length < 0"); 87943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 88043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 88143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich remaining = _env->GetArrayLength(scriptRef) - offset; 88243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 88343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 88443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length > script.length - offset"); 88543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 88643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 88743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_base = (jbyte *) 88843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 88943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_ptr = script_base + offset; 89043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 891bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetText(con, (const char *)script_ptr, length); 89239ddc950c9064129ead5de04b200106c0659f937Jason Sams 89343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 89443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (script_base) { 89543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->ReleasePrimitiveArrayCritical(scriptRef, script_base, 89643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 89743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 898d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 899d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 900d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 9012e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCCreate(JNIEnv *_env, jobject _this, RsContext con) 902d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 903d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 904bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsScriptCCreate(con); 905d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 906d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 907d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 908d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 909d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9102e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreBegin(JNIEnv *_env, jobject _this, RsContext con, jint in, jint out) 911d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 91254db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 91354db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreBegin(con, (RsElement)in, (RsElement)out); 914d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 915d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 916d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9172e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDepthFunc(JNIEnv *_env, jobject _this, RsContext con, jint func) 918d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 91954db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDepthFunc, con(%p), func(%i)", con, func); 92054db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDepthFunc(con, (RsDepthFunc)func); 921d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 922d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 923d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9242e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDepthMask(JNIEnv *_env, jobject _this, RsContext con, jboolean enable) 925d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 92654db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDepthMask, con(%p), enable(%i)", con, enable); 92754db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDepthMask(con, enable); 928d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 929d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 930d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9312e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreColorMask(JNIEnv *_env, jobject _this, RsContext con, jboolean r, jboolean g, jboolean b, jboolean a) 932d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 93354db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreColorMask, con(%p), r(%i), g(%i), b(%i), a(%i)", con, r, g, b, a); 93454db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreColorMask(con, r, g, b, a); 935d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 936d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 937d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9382e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreBlendFunc(JNIEnv *_env, jobject _this, RsContext con, int src, int dst) 939d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 94054db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreBlendFunc, con(%p), src(%i), dst(%i)", con, src, dst); 94154db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreBlendFunc(con, (RsBlendSrcFunc)src, (RsBlendDstFunc)dst); 942d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 943d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 944d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDither(JNIEnv *_env, jobject _this, RsContext con, jboolean enable) 946d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 94754db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDither, con(%p), enable(%i)", con, enable); 94854db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDither(con, enable); 949d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 950d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 951d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 9522e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreCreate(JNIEnv *_env, jobject _this, RsContext con) 953d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 95454db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreCreate, con(%p)", con); 95554db59c3594e887a412a24713fc3daa1c2404593Jason Sams return (jint)rsProgramStoreCreate(con); 956d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 957d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 9580011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 9590011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 9600011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 9612e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindConstants(JNIEnv *_env, jobject _this, RsContext con, jint vpv, jint slot, jint a) 9620011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 9630011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 9640011bcf57ff711a221a3a4c73f2a79125111647dJason Sams rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a); 9650011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 96654c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 967d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9682e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindTexture(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 96954c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 97068afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 97168afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 97254c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 97354c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 97454c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 9752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindSampler(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 976d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 97768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 97868afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 979d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 980d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 98168afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 982d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 98368afd01ec9fd37774d8291192952a25e5605b6fbJason Samsstatic jint 984b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramFragmentCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 9857e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 9867e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 9877e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint shaderLen = _env->GetStringUTFLength(shader); 9887e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 9897e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 9907e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 991b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk LOG_API("nProgramFragmentCreate, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 9927e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 993b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk jint ret = (jint)rsProgramFragmentCreate(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 9947e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 9957e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 9967e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 9977e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 9987e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 9997e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10001fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 10011fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10020011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 1003b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramVertexCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 10041fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10050011bcf57ff711a221a3a4c73f2a79125111647dJason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 10060011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint shaderLen = _env->GetStringUTFLength(shader); 10070011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10080011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 10091fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1010b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk LOG_API("nProgramVertexCreate, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 1011ee41112e1539de95596600fd2c6dada5d275217fJason Sams 1012b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk jint ret = (jint)rsProgramVertexCreate(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 10130011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 10140011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10150011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 10161fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10171fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1018ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1019ebfb436a49673693b98469683451bd9ede797557Jason Sams 1020ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 10212e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, RsContext con, jboolean pointSmooth, jboolean lineSmooth, jboolean pointSprite) 1022ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 102380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterCreate, con(%p), pointSmooth(%i), lineSmooth(%i), pointSprite(%i)", 102480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk con, pointSmooth, lineSmooth, pointSprite); 102580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return (jint)rsProgramRasterCreate(con, pointSmooth, lineSmooth, pointSprite); 1026ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1027ebfb436a49673693b98469683451bd9ede797557Jason Sams 1028ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 10292e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterSetLineWidth(JNIEnv *_env, jobject _this, RsContext con, jint vpr, jfloat v) 1030ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1031ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterSetLineWidth, con(%p), vpf(%p), value(%f)", con, (RsProgramRaster)vpr, v); 103280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsProgramRasterSetLineWidth(con, (RsProgramRaster)vpr, v); 103380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 103480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 103580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 10362e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterSetCullMode(JNIEnv *_env, jobject _this, RsContext con, jint vpr, jint v) 103780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 103880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterSetCullMode, con(%p), vpf(%p), value(%i)", con, (RsProgramRaster)vpr, v); 103980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsProgramRasterSetCullMode(con, (RsProgramRaster)vpr, (RsCullMode)v); 1040ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1041ebfb436a49673693b98469683451bd9ede797557Jason Sams 1042d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1043d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1044d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1045d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10462e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, RsContext con, jint script) 1047d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1048d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1049bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1050d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1051d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1052d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10532e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramStore(JNIEnv *_env, jobject _this, RsContext con, jint pfs) 1054d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 105554db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", con, (RsProgramStore)pfs); 105654db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsContextBindProgramStore(con, (RsProgramStore)pfs); 1057d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1058d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1059d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10602e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1061d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1062d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1063bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1064d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1065d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10660826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 10672e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, RsContext con, jint pf) 10680826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 10690826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1070bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 10710826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 10720826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1073d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 10742e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1075ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1076ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 1077ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 1078ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1079ebfb436a49673693b98469683451bd9ede797557Jason Sams 1080d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 108102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 108202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 108302fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 10842e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerBegin(JNIEnv *_env, jobject _this, RsContext con) 108502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 108602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerBegin, con(%p)", con); 1087bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerBegin(con); 108802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 108902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 109002fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 10912e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerSet(JNIEnv *_env, jobject _this, RsContext con, jint p, jint v) 109202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 109302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerSet, con(%p), param(%i), value(%i)", con, p, v); 1094bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerSet(con, (RsSamplerParam)p, (RsSamplerValue)v); 109502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 109602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1097f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchoukstatic void 1098f5b3510c706ed1f7611760dff0c94f2111531c68Alex SakhartchouknSamplerSet2(JNIEnv *_env, jobject _this, RsContext con, jint p, jfloat v) 1099f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk{ 1100f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk LOG_API("nSamplerSet2, con(%p), param(%i), value(%f)", con, p, v); 1101f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk rsSamplerSet2(con, (RsSamplerParam)p, v); 1102f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk} 1103f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk 110402fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 11052e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerCreate(JNIEnv *_env, jobject _this, RsContext con) 110602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 1107bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1108bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsSamplerCreate(con); 110902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 111002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1111bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1112bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 11131bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 11142e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshCreate(JNIEnv *_env, jobject _this, RsContext con, jint vtxCount, jint idxCount) 1115164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 1116164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk LOG_API("nMeshCreate, con(%p), vtxCount(%i), idxCount(%i)", con, vtxCount, idxCount); 1117164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk int id = (int)rsMeshCreate(con, vtxCount, idxCount); 1118164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk return id; 1119164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1120164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1121164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchoukstatic void 11222e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshBindVertex(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jint alloc, jint slot) 1123164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 112480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshBindVertex, con(%p), Mesh(%p), Alloc(%p), slot(%i)", con, (RsMesh)mesh, (RsAllocation)alloc, slot); 112580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshBindVertex(con, (RsMesh)mesh, (RsAllocation)alloc, slot); 1126164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1127164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1128164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchoukstatic void 11292e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshBindIndex(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jint alloc, jint primID, jint slot) 1130164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 113180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshBindIndex, con(%p), Mesh(%p), Alloc(%p)", con, (RsMesh)mesh, (RsAllocation)alloc); 113280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshBindIndex(con, (RsMesh)mesh, (RsAllocation)alloc, primID, slot); 113380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 113480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 113580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 11362e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 113780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 113880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 113980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint vtxCount = 0; 114080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshGetVertexBufferCount(con, (RsMesh)mesh, &vtxCount); 114180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return vtxCount; 114280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 114380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 114480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 11452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndexCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 114680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 114780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 114880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint idxCount = 0; 114980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshGetIndexCount(con, (RsMesh)mesh, &idxCount); 115080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return idxCount; 115180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 115280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 115380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 11542e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _ids, int numVtxIDs) 115580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 115680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 115780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 115880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation)); 115980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshGetVertices(con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs); 116080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 116180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numVtxIDs; i ++) { 116280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&allocs[i]); 116380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 116480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 116580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 116680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 116780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 116880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 11692e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _idxIds, jintArray _primitives, int numIndices) 117080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 117180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 117280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 117380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation)); 117480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t)); 117580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 117680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshGetIndices(con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices); 117780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 117880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numIndices; i ++) { 117980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_idxIds, i, 1, (const jint*)&allocs[i]); 118080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_primitives, i, 1, (const jint*)&prims[i]); 118180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 118280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 118380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 118480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(prims); 1185164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1186164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1187164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk// --------------------------------------------------------------------------- 1188164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1189d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 119094d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1191d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1192d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 1193d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"_nInit", "()V", (void*)_nInit }, 1194ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams{"nInitElements", "(IIII)V", (void*)nInitElements }, 1195ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 1196d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 1197d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 1198ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 11992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"nContextGetMessage", "(I[IZ)I", (void*)nContextGetMessage }, 12002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, 12012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, 12022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams// All methods below are thread protected in java. 1205b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextCreate", "(II)I", (void*)nContextCreate }, 1206b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextCreateGL", "(IIZ)I", (void*)nContextCreateGL }, 12072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextFinish", "(I)V", (void*)nContextFinish }, 12082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority }, 12092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1210b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextDestroy", "(I)V", (void*)nContextDestroy }, 12112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextDump", "(II)V", (void*)nContextDump }, 12122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextPause", "(I)V", (void*)nContextPause }, 12132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextResume", "(I)V", (void*)nContextResume }, 12142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAssignName", "(II[B)V", (void*)nAssignName }, 1215b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnGetName", "(II)Ljava/lang/String;", (void*)nGetName }, 12162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnObjDestroy", "(II)V", (void*)nObjDestroy }, 12172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileOpen", "(I[B)I", (void*)nFileOpen }, 12192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DCreateFromAssetStream", "(II)I", (void*)nFileA3DCreateFromAssetStream }, 12202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetNumIndexEntries", "(II)I", (void*)nFileA3DGetNumIndexEntries }, 1221b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFileA3DGetIndexEntries", "(III[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, 12222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetEntryByIndex", "(III)I", (void*)nFileA3DGetEntryByIndex }, 12232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1224b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFontCreateFromFile", "(ILjava/lang/String;II)I", (void*)nFontCreateFromFile }, 12252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementCreate", "(IIIZI)I", (void*)nElementCreate }, 122770d4e5024298f71edb3b04867e05568f5495b4ceJason Sams{"rsnElementCreate2", "(I[I[Ljava/lang/String;[I)I", (void*)nElementCreate2 }, 12282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementGetNativeData", "(II[I)V", (void*)nElementGetNativeData }, 1229b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnElementGetSubElements", "(II[I[Ljava/lang/String;)V", (void*)nElementGetSubElements }, 12302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnTypeBegin", "(II)V", (void*)nTypeBegin }, 12322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnTypeAdd", "(III)V", (void*)nTypeAdd }, 12332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnTypeCreate", "(I)I", (void*)nTypeCreate }, 1234b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData }, 12352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateTyped", "(II)I", (void*)nAllocationCreateTyped }, 12372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateFromBitmap", "(IIZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap }, 12382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateBitmapRef", "(IILandroid/graphics/Bitmap;)I", (void*)nAllocationCreateBitmapRef }, 12392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateFromAssetStream","(IIZI)I", (void*)nAllocationCreateFromAssetStream }, 12402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationUploadToTexture", "(IIZI)V", (void*)nAllocationUploadToTexture }, 12412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationUploadToBufferObject","(II)V", (void*)nAllocationUploadToBufferObject }, 12422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[II)V", (void*)nAllocationSubData1D_i }, 12432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[SI)V", (void*)nAllocationSubData1D_s }, 12442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[BI)V", (void*)nAllocationSubData1D_b }, 12452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[FI)V", (void*)nAllocationSubData1D_f }, 124649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{"rsnAllocationSubElementData1D", "(IIII[BI)V", (void*)nAllocationSubElementData1D }, 12472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData2D", "(IIIIII[II)V", (void*)nAllocationSubData2D_i }, 12482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData2D", "(IIIIII[FI)V", (void*)nAllocationSubData2D_f }, 12492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[I)V", (void*)nAllocationRead_i }, 12502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[F)V", (void*)nAllocationRead_f }, 12512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationGetType", "(II)I", (void*)nAllocationGetType}, 12525edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize1D", "(III)V", (void*)nAllocationResize1D }, 12535edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize2D", "(IIII)V", (void*)nAllocationResize2D }, 12542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DBindAllocation", "(III)V", (void*)nAdapter1DBindAllocation }, 12562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DSetConstraint", "(IIII)V", (void*)nAdapter1DSetConstraint }, 12572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DData", "(II[I)V", (void*)nAdapter1DData_i }, 12582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DData", "(II[F)V", (void*)nAdapter1DData_f }, 12592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DSubData", "(IIII[I)V", (void*)nAdapter1DSubData_i }, 12602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DSubData", "(IIII[F)V", (void*)nAdapter1DSubData_f }, 12612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DCreate", "(I)I", (void*)nAdapter1DCreate }, 12622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DBindAllocation", "(III)V", (void*)nAdapter2DBindAllocation }, 12642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DSetConstraint", "(IIII)V", (void*)nAdapter2DSetConstraint }, 12652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DData", "(II[I)V", (void*)nAdapter2DData_i }, 12662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DData", "(II[F)V", (void*)nAdapter2DData_f }, 12672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DSubData", "(IIIIII[I)V", (void*)nAdapter2DSubData_i }, 12682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DSubData", "(IIIIII[F)V", (void*)nAdapter2DSubData_f }, 12692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DCreate", "(I)I", (void*)nAdapter2DCreate }, 12702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptBindAllocation", "(IIII)V", (void*)nScriptBindAllocation }, 12722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone }, 12732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke }, 12742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV }, 12752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI }, 1276031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{"rsnScriptSetVarJ", "(IIIJ)V", (void*)nScriptSetVarJ }, 12772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, 1278ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD }, 12792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV }, 12802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCBegin", "(I)V", (void*)nScriptCBegin }, 12822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCSetScript", "(I[BII)V", (void*)nScriptCSetScript }, 12832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCCreate", "(I)I", (void*)nScriptCCreate }, 12842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreBegin", "(III)V", (void*)nProgramStoreBegin }, 12862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDepthFunc", "(II)V", (void*)nProgramStoreDepthFunc }, 12872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDepthMask", "(IZ)V", (void*)nProgramStoreDepthMask }, 12882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreColorMask", "(IZZZZ)V", (void*)nProgramStoreColorMask }, 12892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreBlendFunc", "(III)V", (void*)nProgramStoreBlendFunc }, 12902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDither", "(IZ)V", (void*)nProgramStoreDither }, 12912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreCreate", "(I)I", (void*)nProgramStoreCreate }, 12922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindConstants", "(IIII)V", (void*)nProgramBindConstants }, 12942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindTexture", "(IIII)V", (void*)nProgramBindTexture }, 12952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindSampler", "(IIII)V", (void*)nProgramBindSampler }, 12962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1297b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramFragmentCreate", "(ILjava/lang/String;[I)I", (void*)nProgramFragmentCreate }, 12982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1299b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramRasterCreate", "(IZZZ)I", (void*)nProgramRasterCreate }, 13002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramRasterSetLineWidth", "(IIF)V", (void*)nProgramRasterSetLineWidth }, 13012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramRasterSetCullMode", "(III)V", (void*)nProgramRasterSetCullMode }, 13022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1303b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramVertexCreate", "(ILjava/lang/String;[I)I", (void*)nProgramVertexCreate }, 13042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindRootScript", "(II)V", (void*)nContextBindRootScript }, 1306b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextBindProgramStore", "(II)V", (void*)nContextBindProgramStore }, 13072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramFragment", "(II)V", (void*)nContextBindProgramFragment }, 13082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramVertex", "(II)V", (void*)nContextBindProgramVertex }, 13092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramRaster", "(II)V", (void*)nContextBindProgramRaster }, 13102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerBegin", "(I)V", (void*)nSamplerBegin }, 13122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerSet", "(III)V", (void*)nSamplerSet }, 1313f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk{"rsnSamplerSet2", "(IIF)V", (void*)nSamplerSet2 }, 13142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerCreate", "(I)I", (void*)nSamplerCreate }, 13152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshCreate", "(III)I", (void*)nMeshCreate }, 13172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshBindVertex", "(IIII)V", (void*)nMeshBindVertex }, 13182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshBindIndex", "(IIIII)V", (void*)nMeshBindIndex }, 13192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetVertexBufferCount", "(II)I", (void*)nMeshGetVertexBufferCount }, 13212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndexCount", "(II)I", (void*)nMeshGetIndexCount }, 1322b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnMeshGetVertices", "(II[II)V", (void*)nMeshGetVertices }, 13232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndices", "(II[I[II)V", (void*)nMeshGetIndices }, 132480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1325d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1326d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1327d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1328d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1329d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1330d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1331d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1332d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1333d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1334d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1335d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1336d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1337d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1338d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1339d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1340d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1341d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1342d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1343d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1344d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1345d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1346d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1347d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1348d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1349d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1350d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1351d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1352d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1353d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1354d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1355d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1356d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 135780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1358