android_renderscript_RenderScript.cpp revision 5edc608a0749ed4b7074b5c1243043eb722c3c31
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 469650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guystatic int 4702e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationCreateFromBitmapBoxed(JNIEnv *_env, jobject _this, RsContext con, jint dstFmt, jboolean genMips, jobject jbitmap) 471b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams{ 472b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap const * nativeBitmap = 473b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 474b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const SkBitmap& bitmap(*nativeBitmap); 475b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams SkBitmap::Config config = bitmap.getConfig(); 476b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 477ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 478b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 479ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 480b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.lockPixels(); 481b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int w = bitmap.width(); 482b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const int h = bitmap.height(); 483b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const void* ptr = bitmap.getPixels(); 484ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams jint id = (jint)rsAllocationCreateFromBitmapBoxed(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 485b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams bitmap.unlockPixels(); 486b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return id; 487b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams } 488b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams return 0; 489b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams} 490b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams 491fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 492d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 4932e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jintArray data, int sizeBytes) 494d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 495d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 496768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 497d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 498768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 499d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 500d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 501d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 502d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5032e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jshortArray data, int sizeBytes) 504d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 505d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 506768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 507768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 508768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 509768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 510d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 511d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 512d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5132e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jbyteArray data, int sizeBytes) 514d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 515d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 516768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 517768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 51807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 519768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 520d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 521d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 522d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5232e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jfloatArray data, int sizeBytes) 524d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 525d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 526768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 527d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 52807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 529d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 530d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 531d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 532d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 53349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams// native void rsnAllocationSubElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes); 53449bdaf0293408159df18a1d8540360f9623c40f7Jason SamsnAllocationSubElementData1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint compIdx, jbyteArray data, int sizeBytes) 53549bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{ 53649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jint len = _env->GetArrayLength(data); 53749bdaf0293408159df18a1d8540360f9623c40f7Jason Sams LOG_API("nAllocationSubElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); 53849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 53949bdaf0293408159df18a1d8540360f9623c40f7Jason Sams rsAllocation1DSubElementData(con, (RsAllocation)alloc, offset, ptr, compIdx, sizeBytes); 54049bdaf0293408159df18a1d8540360f9623c40f7Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 54149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams} 54249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 54349bdaf0293408159df18a1d8540360f9623c40f7Jason Samsstatic void 5442e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData2D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data, int sizeBytes) 545d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 546d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 547d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 548d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 54907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 550d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 551d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 552d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 553d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5542e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData2D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data, int sizeBytes) 555d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 556d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 557d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 558d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 55907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 560d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 561d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 562d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 56340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 5642e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jintArray data) 56540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 56640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 56740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 56840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 569bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 570ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 57140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 57240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 57340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 5742e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jfloatArray data) 57540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 57640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 577a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 57840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 579bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 580ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 58140a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 582d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 583dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic jint 5842e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationGetType(JNIEnv *_env, jobject _this, RsContext con, jint a) 585dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 586dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nAllocationGetType, con(%p), a(%p)", con, (RsAllocation)a); 587dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk return (jint) rsAllocationGetType(con, (RsAllocation)a); 588dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 589dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 5905edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 5915edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX) 5925edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 5935edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", con, (RsAllocation)alloc, dimX); 5945edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize1D(con, (RsAllocation)alloc, dimX); 5955edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 5965edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 5975edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 5985edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize2D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX, jint dimY) 5995edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 6005edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i), sizeY(%i)", con, (RsAllocation)alloc, dimX, dimY); 6015edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize2D(con, (RsAllocation)alloc, dimX, dimY); 6025edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 6035edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 604aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk// ----------------------------------- 605aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 606aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 6072e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint native_asset) 608aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 609aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) native_asset); 610aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 611aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 612aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 613aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk jint id = (jint)rsFileA3DCreateFromAssetStream(con, asset->getBuffer(false), asset->getLength()); 614aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 615aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 616aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 617aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 6182e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D) 619aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 620aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk int32_t numEntries = 0; 621aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk rsFileA3DGetNumIndexEntries(con, &numEntries, (RsFile)fileA3D); 622aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return numEntries; 623aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 624aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 625aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic void 6262e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries) 627aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 628aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 629aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry)); 630aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 631aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk rsFileA3DGetIndexEntries(con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D); 632aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 633aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk for(jint i = 0; i < numEntries; i ++) { 634aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName)); 635aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID); 636aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk } 637aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 638aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk free(fileEntries); 639aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 640aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 641aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 6422e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint index) 643aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 644aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 645aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk jint id = (jint)rsFileA3DGetEntryByIndex(con, (uint32_t)index, (RsFile)fileA3D); 646aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 647aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 648d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 649d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 650d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 6519b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchoukstatic int 6522e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFontCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, jstring fileName, jint fontSize, jint dpi) 6539b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk{ 6549b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk const char* fileNameUTF = _env->GetStringUTFChars(fileName, NULL); 6559b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 6569b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk jint id = (jint)rsFontCreateFromFile(con, fileNameUTF, fontSize, dpi); 6579b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return id; 6589b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk} 6599b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 6609b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 6619b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk// ----------------------------------- 6629b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 663d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6642e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint alloc) 665d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 666d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter1D)adapter, (RsAllocation)alloc); 667bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DBindAllocation(con, (RsAdapter1D)adapter, (RsAllocation)alloc); 668d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 669d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 670d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6712e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DSetConstraint(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint dim, jint value) 672d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 673d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter1D)adapter, dim, value); 674bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSetConstraint(con, (RsAdapter1D)adapter, (RsDimension)dim, value); 675d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 676d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 677d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6782e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jintArray data) 679d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 680d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 681d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 682d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 683bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 684d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 685d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 686d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 687d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6882e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DSubData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint offset, jint count, jintArray data) 689d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 690d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 691d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 692d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 693bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 694d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 695d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 696d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 697d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6982e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jfloatArray data) 699d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 700d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 701d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 702d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 703bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 704d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 705d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 706d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 707d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7082e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DSubData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint offset, jint count, jfloatArray data) 709d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 710d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 711d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 712d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 713bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 714d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 715d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 716d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 717d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 7182e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DCreate(JNIEnv *_env, jobject _this, RsContext con) 719d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 720d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DCreate, con(%p)", con); 721bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter1DCreate(con); 722d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 723d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 724d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 725d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 726d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7272e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint alloc) 728bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 729bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter2D)adapter, (RsAllocation)alloc); 730bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DBindAllocation(con, (RsAdapter2D)adapter, (RsAllocation)alloc); 731bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 732bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 733bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7342e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DSetConstraint(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint dim, jint value) 735bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 736bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter2D)adapter, dim, value); 737bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSetConstraint(con, (RsAdapter2D)adapter, (RsDimension)dim, value); 738bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 739bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 740bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7412e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jintArray data) 742bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 743bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 744bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 745bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 746bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 747bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 748bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 749bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 750bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7512e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jfloatArray data) 752bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 753bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 754bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 755bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 756bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 757bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 758bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 759bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 760bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7612e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DSubData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint xoff, jint yoff, jint w, jint h, jintArray data) 762bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 763bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 764bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 765bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 766bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 767bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter2D)adapter, xoff, yoff, w, h, ptr); 768bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 769bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 770bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 771bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7722e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DSubData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint xoff, jint yoff, jint w, jint h, jfloatArray data) 773bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 774bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 775bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_f, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 776bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 777bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 778bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter1D)adapter, xoff, yoff, w, h, ptr); 779bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 780bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 781bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 782bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic jint 7832e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DCreate(JNIEnv *_env, jobject _this, RsContext con) 784bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 785bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DCreate, con(%p)", con); 786bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter2DCreate(con); 787bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 788bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 789bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 790bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 791bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7922e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint script, jint alloc, jint slot) 793d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 794d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 795bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 796d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 797d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 798d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7992e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarI(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 8004d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 801cfc04366998cd0c626594c9cf70336a11bdf5996Jason Sams LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 8024d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarI(con, (RsScript)script, slot, val); 8034d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8044d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 8054d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 8062e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarF(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, float val) 8074d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 808ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", con, (void *)script, slot, val); 8094d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarF(con, (RsScript)script, slot, val); 8104d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8114d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 8124d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 813ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen HinesnScriptSetVarD(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, double val) 814ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{ 815ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", con, (void *)script, slot, val); 816ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsScriptSetVarD(con, (RsScript)script, slot, val); 817ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines} 818ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 819ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hinesstatic void 8202e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 8214d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 8224d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 8234d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 8244d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 8254d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarV(con, (RsScript)script, slot, ptr, len); 8264d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 8274d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8284d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 829d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 830d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8312e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone) 832584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 83307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 834584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 835584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 836584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 837584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 838584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 839bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 840584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 841584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 842584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 843584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 844584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 845584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 84622534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 8472e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvoke(JNIEnv *_env, jobject _this, RsContext con, jint obj, jint slot) 84822534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 8494d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 8504d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 85122534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 85222534176fb5c1257130ef4ee589739ca42766a32Jason Sams 853584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 8542e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 855be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 8564d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 8574d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 8584d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 8594d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvokeV(con, (RsScript)script, slot, ptr, len); 8604d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 861be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 862be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 863d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 864fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 865fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 866d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8672e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCBegin(JNIEnv *_env, jobject _this, RsContext con) 868d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 869fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCBegin, con(%p)", con); 870bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCBegin(con); 871d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 872d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 873d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8742e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCSetScript(JNIEnv *_env, jobject _this, RsContext con, jbyteArray scriptRef, 87543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint offset, jint length) 876d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 877d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("!!! nScriptCSetScript, con(%p)", con); 87843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 87943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 88043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_base = 0; 88143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_ptr; 88243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 88343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 88443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "script == null"); 88543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 88643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 88743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (offset < 0) { 88843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 88943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "offset < 0"); 89043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 89143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 89243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 89343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 89443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length < 0"); 89543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 89643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 89743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich remaining = _env->GetArrayLength(scriptRef) - offset; 89843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 89943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 90043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length > script.length - offset"); 90143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 90243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 90343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_base = (jbyte *) 90443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 90543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_ptr = script_base + offset; 90643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 907bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetText(con, (const char *)script_ptr, length); 90839ddc950c9064129ead5de04b200106c0659f937Jason Sams 90943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 91043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (script_base) { 91143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->ReleasePrimitiveArrayCritical(scriptRef, script_base, 91243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 91343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 914d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 915d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 916d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 9172e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCCreate(JNIEnv *_env, jobject _this, RsContext con) 918d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 919d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 920bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsScriptCCreate(con); 921d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 922d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 923d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 924d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 925d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9262e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreBegin(JNIEnv *_env, jobject _this, RsContext con, jint in, jint out) 927d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 92854db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 92954db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreBegin(con, (RsElement)in, (RsElement)out); 930d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 931d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 932d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9332e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDepthFunc(JNIEnv *_env, jobject _this, RsContext con, jint func) 934d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 93554db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDepthFunc, con(%p), func(%i)", con, func); 93654db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDepthFunc(con, (RsDepthFunc)func); 937d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 938d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 939d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9402e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDepthMask(JNIEnv *_env, jobject _this, RsContext con, jboolean enable) 941d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 94254db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDepthMask, con(%p), enable(%i)", con, enable); 94354db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDepthMask(con, enable); 944d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 945d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 946d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9472e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreColorMask(JNIEnv *_env, jobject _this, RsContext con, jboolean r, jboolean g, jboolean b, jboolean a) 948d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 94954db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreColorMask, con(%p), r(%i), g(%i), b(%i), a(%i)", con, r, g, b, a); 95054db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreColorMask(con, r, g, b, a); 951d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 952d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 953d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9542e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreBlendFunc(JNIEnv *_env, jobject _this, RsContext con, int src, int dst) 955d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 95654db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreBlendFunc, con(%p), src(%i), dst(%i)", con, src, dst); 95754db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreBlendFunc(con, (RsBlendSrcFunc)src, (RsBlendDstFunc)dst); 958d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 959d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 960d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9612e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDither(JNIEnv *_env, jobject _this, RsContext con, jboolean enable) 962d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 96354db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDither, con(%p), enable(%i)", con, enable); 96454db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDither(con, enable); 965d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 966d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 967d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 9682e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreCreate(JNIEnv *_env, jobject _this, RsContext con) 969d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 97054db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreCreate, con(%p)", con); 97154db59c3594e887a412a24713fc3daa1c2404593Jason Sams return (jint)rsProgramStoreCreate(con); 972d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 973d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 9740011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 9750011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 9760011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 9772e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindConstants(JNIEnv *_env, jobject _this, RsContext con, jint vpv, jint slot, jint a) 9780011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 9790011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 9800011bcf57ff711a221a3a4c73f2a79125111647dJason Sams rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a); 9810011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 98254c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 983d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9842e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindTexture(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 98554c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 98668afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 98768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 98854c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 98954c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 99054c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 9912e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindSampler(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 992d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 99368afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 99468afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 995d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 996d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 99768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 998d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 99968afd01ec9fd37774d8291192952a25e5605b6fbJason Samsstatic jint 1000b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramFragmentCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 10017e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 10027e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 10037e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint shaderLen = _env->GetStringUTFLength(shader); 10047e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10057e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 10067e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 1007b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk LOG_API("nProgramFragmentCreate, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 10087e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 1009b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk jint ret = (jint)rsProgramFragmentCreate(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 10107e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 10117e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10127e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 10137e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 10147e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10157e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10161fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 10171fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10180011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 1019b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramVertexCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 10201fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10210011bcf57ff711a221a3a4c73f2a79125111647dJason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 10220011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint shaderLen = _env->GetStringUTFLength(shader); 10230011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10240011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 10251fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1026b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk LOG_API("nProgramVertexCreate, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 1027ee41112e1539de95596600fd2c6dada5d275217fJason Sams 1028b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk jint ret = (jint)rsProgramVertexCreate(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 10290011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 10300011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10310011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 10321fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10331fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1034ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1035ebfb436a49673693b98469683451bd9ede797557Jason Sams 1036ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 10372e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, RsContext con, jboolean pointSmooth, jboolean lineSmooth, jboolean pointSprite) 1038ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 103980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterCreate, con(%p), pointSmooth(%i), lineSmooth(%i), pointSprite(%i)", 104080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk con, pointSmooth, lineSmooth, pointSprite); 104180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return (jint)rsProgramRasterCreate(con, pointSmooth, lineSmooth, pointSprite); 1042ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1043ebfb436a49673693b98469683451bd9ede797557Jason Sams 1044ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 10452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterSetLineWidth(JNIEnv *_env, jobject _this, RsContext con, jint vpr, jfloat v) 1046ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1047ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterSetLineWidth, con(%p), vpf(%p), value(%f)", con, (RsProgramRaster)vpr, v); 104880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsProgramRasterSetLineWidth(con, (RsProgramRaster)vpr, v); 104980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 105080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 105180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 10522e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterSetCullMode(JNIEnv *_env, jobject _this, RsContext con, jint vpr, jint v) 105380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 105480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterSetCullMode, con(%p), vpf(%p), value(%i)", con, (RsProgramRaster)vpr, v); 105580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsProgramRasterSetCullMode(con, (RsProgramRaster)vpr, (RsCullMode)v); 1056ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1057ebfb436a49673693b98469683451bd9ede797557Jason Sams 1058d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1059d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1060d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1061d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10622e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, RsContext con, jint script) 1063d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1064d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1065bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1066d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1067d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1068d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10692e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramStore(JNIEnv *_env, jobject _this, RsContext con, jint pfs) 1070d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 107154db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", con, (RsProgramStore)pfs); 107254db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsContextBindProgramStore(con, (RsProgramStore)pfs); 1073d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1074d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1075d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10762e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1077d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1078d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1079bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1080d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1081d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10820826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 10832e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, RsContext con, jint pf) 10840826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 10850826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1086bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 10870826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 10880826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1089d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 10902e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1091ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1092ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 1093ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 1094ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1095ebfb436a49673693b98469683451bd9ede797557Jason Sams 1096d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 109702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 109802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 109902fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 11002e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerBegin(JNIEnv *_env, jobject _this, RsContext con) 110102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 110202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerBegin, con(%p)", con); 1103bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerBegin(con); 110402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 110502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 110602fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 11072e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerSet(JNIEnv *_env, jobject _this, RsContext con, jint p, jint v) 110802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 110902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerSet, con(%p), param(%i), value(%i)", con, p, v); 1110bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerSet(con, (RsSamplerParam)p, (RsSamplerValue)v); 111102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 111202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1113f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchoukstatic void 1114f5b3510c706ed1f7611760dff0c94f2111531c68Alex SakhartchouknSamplerSet2(JNIEnv *_env, jobject _this, RsContext con, jint p, jfloat v) 1115f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk{ 1116f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk LOG_API("nSamplerSet2, con(%p), param(%i), value(%f)", con, p, v); 1117f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk rsSamplerSet2(con, (RsSamplerParam)p, v); 1118f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk} 1119f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk 112002fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 11212e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerCreate(JNIEnv *_env, jobject _this, RsContext con) 112202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 1123bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1124bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsSamplerCreate(con); 112502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 112602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1127bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1128bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 11291bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 11302e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshCreate(JNIEnv *_env, jobject _this, RsContext con, jint vtxCount, jint idxCount) 1131164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 1132164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk LOG_API("nMeshCreate, con(%p), vtxCount(%i), idxCount(%i)", con, vtxCount, idxCount); 1133164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk int id = (int)rsMeshCreate(con, vtxCount, idxCount); 1134164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk return id; 1135164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1136164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1137164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchoukstatic void 11382e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshBindVertex(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jint alloc, jint slot) 1139164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 114080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshBindVertex, con(%p), Mesh(%p), Alloc(%p), slot(%i)", con, (RsMesh)mesh, (RsAllocation)alloc, slot); 114180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshBindVertex(con, (RsMesh)mesh, (RsAllocation)alloc, slot); 1142164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1143164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1144164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchoukstatic void 11452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshBindIndex(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jint alloc, jint primID, jint slot) 1146164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 114780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshBindIndex, con(%p), Mesh(%p), Alloc(%p)", con, (RsMesh)mesh, (RsAllocation)alloc); 114880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshBindIndex(con, (RsMesh)mesh, (RsAllocation)alloc, primID, slot); 114980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 115080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 115180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 11522e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 115380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 115480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 115580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint vtxCount = 0; 115680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshGetVertexBufferCount(con, (RsMesh)mesh, &vtxCount); 115780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return vtxCount; 115880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 115980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 116080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 11612e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndexCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 116280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 116380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 116480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint idxCount = 0; 116580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshGetIndexCount(con, (RsMesh)mesh, &idxCount); 116680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return idxCount; 116780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 116880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 116980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 11702e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _ids, int numVtxIDs) 117180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 117280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 117380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 117480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation)); 117580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshGetVertices(con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs); 117680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 117780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numVtxIDs; i ++) { 117880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&allocs[i]); 117980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 118080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 118180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 118280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 118380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 118480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 11852e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _idxIds, jintArray _primitives, int numIndices) 118680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 118780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 118880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 118980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation)); 119080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t)); 119180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 119280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshGetIndices(con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices); 119380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 119480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numIndices; i ++) { 119580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_idxIds, i, 1, (const jint*)&allocs[i]); 119680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_primitives, i, 1, (const jint*)&prims[i]); 119780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 119880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 119980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 120080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(prims); 1201164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1202164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1203164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk// --------------------------------------------------------------------------- 1204164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1205d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 120694d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1207d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1208d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 1209d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"_nInit", "()V", (void*)_nInit }, 1210ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams{"nInitElements", "(IIII)V", (void*)nInitElements }, 1211ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 1212d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 1213d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 1214ebfb436a49673693b98469683451bd9ede797557Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 12152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"nContextGetMessage", "(I[IZ)I", (void*)nContextGetMessage }, 12162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, 12172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, 12182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams// All methods below are thread protected in java. 1221b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextCreate", "(II)I", (void*)nContextCreate }, 1222b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextCreateGL", "(IIZ)I", (void*)nContextCreateGL }, 12232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextFinish", "(I)V", (void*)nContextFinish }, 12242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority }, 12252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1226b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextDestroy", "(I)V", (void*)nContextDestroy }, 12272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextDump", "(II)V", (void*)nContextDump }, 12282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextPause", "(I)V", (void*)nContextPause }, 12292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextResume", "(I)V", (void*)nContextResume }, 12302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAssignName", "(II[B)V", (void*)nAssignName }, 1231b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnGetName", "(II)Ljava/lang/String;", (void*)nGetName }, 12322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnObjDestroy", "(II)V", (void*)nObjDestroy }, 12332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileOpen", "(I[B)I", (void*)nFileOpen }, 12352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DCreateFromAssetStream", "(II)I", (void*)nFileA3DCreateFromAssetStream }, 12362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetNumIndexEntries", "(II)I", (void*)nFileA3DGetNumIndexEntries }, 1237b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFileA3DGetIndexEntries", "(III[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, 12382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetEntryByIndex", "(III)I", (void*)nFileA3DGetEntryByIndex }, 12392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1240b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFontCreateFromFile", "(ILjava/lang/String;II)I", (void*)nFontCreateFromFile }, 12412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementCreate", "(IIIZI)I", (void*)nElementCreate }, 124370d4e5024298f71edb3b04867e05568f5495b4ceJason Sams{"rsnElementCreate2", "(I[I[Ljava/lang/String;[I)I", (void*)nElementCreate2 }, 12442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementGetNativeData", "(II[I)V", (void*)nElementGetNativeData }, 1245b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnElementGetSubElements", "(II[I[Ljava/lang/String;)V", (void*)nElementGetSubElements }, 12462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnTypeBegin", "(II)V", (void*)nTypeBegin }, 12482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnTypeAdd", "(III)V", (void*)nTypeAdd }, 12492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnTypeCreate", "(I)I", (void*)nTypeCreate }, 1250b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData }, 12512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateTyped", "(II)I", (void*)nAllocationCreateTyped }, 12532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateFromBitmap", "(IIZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap }, 12542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateBitmapRef", "(IILandroid/graphics/Bitmap;)I", (void*)nAllocationCreateBitmapRef }, 12552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateFromBitmapBoxed","(IIZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmapBoxed }, 12562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateFromAssetStream","(IIZI)I", (void*)nAllocationCreateFromAssetStream }, 12572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationUploadToTexture", "(IIZI)V", (void*)nAllocationUploadToTexture }, 12582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationUploadToBufferObject","(II)V", (void*)nAllocationUploadToBufferObject }, 12592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[II)V", (void*)nAllocationSubData1D_i }, 12602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[SI)V", (void*)nAllocationSubData1D_s }, 12612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[BI)V", (void*)nAllocationSubData1D_b }, 12622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[FI)V", (void*)nAllocationSubData1D_f }, 126349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{"rsnAllocationSubElementData1D", "(IIII[BI)V", (void*)nAllocationSubElementData1D }, 12642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData2D", "(IIIIII[II)V", (void*)nAllocationSubData2D_i }, 12652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData2D", "(IIIIII[FI)V", (void*)nAllocationSubData2D_f }, 12662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[I)V", (void*)nAllocationRead_i }, 12672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[F)V", (void*)nAllocationRead_f }, 12682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationGetType", "(II)I", (void*)nAllocationGetType}, 12695edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize1D", "(III)V", (void*)nAllocationResize1D }, 12705edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize2D", "(IIII)V", (void*)nAllocationResize2D }, 12712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DBindAllocation", "(III)V", (void*)nAdapter1DBindAllocation }, 12732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DSetConstraint", "(IIII)V", (void*)nAdapter1DSetConstraint }, 12742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DData", "(II[I)V", (void*)nAdapter1DData_i }, 12752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DData", "(II[F)V", (void*)nAdapter1DData_f }, 12762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DSubData", "(IIII[I)V", (void*)nAdapter1DSubData_i }, 12772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DSubData", "(IIII[F)V", (void*)nAdapter1DSubData_f }, 12782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DCreate", "(I)I", (void*)nAdapter1DCreate }, 12792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DBindAllocation", "(III)V", (void*)nAdapter2DBindAllocation }, 12812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DSetConstraint", "(IIII)V", (void*)nAdapter2DSetConstraint }, 12822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DData", "(II[I)V", (void*)nAdapter2DData_i }, 12832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DData", "(II[F)V", (void*)nAdapter2DData_f }, 12842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DSubData", "(IIIIII[I)V", (void*)nAdapter2DSubData_i }, 12852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DSubData", "(IIIIII[F)V", (void*)nAdapter2DSubData_f }, 12862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DCreate", "(I)I", (void*)nAdapter2DCreate }, 12872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptBindAllocation", "(IIII)V", (void*)nScriptBindAllocation }, 12892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone }, 12902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke }, 12912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV }, 12922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI }, 12932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, 1294ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD }, 12952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV }, 12962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCBegin", "(I)V", (void*)nScriptCBegin }, 12982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCSetScript", "(I[BII)V", (void*)nScriptCSetScript }, 12992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCCreate", "(I)I", (void*)nScriptCCreate }, 13002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreBegin", "(III)V", (void*)nProgramStoreBegin }, 13022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDepthFunc", "(II)V", (void*)nProgramStoreDepthFunc }, 13032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDepthMask", "(IZ)V", (void*)nProgramStoreDepthMask }, 13042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreColorMask", "(IZZZZ)V", (void*)nProgramStoreColorMask }, 13052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreBlendFunc", "(III)V", (void*)nProgramStoreBlendFunc }, 13062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDither", "(IZ)V", (void*)nProgramStoreDither }, 13072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreCreate", "(I)I", (void*)nProgramStoreCreate }, 13082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindConstants", "(IIII)V", (void*)nProgramBindConstants }, 13102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindTexture", "(IIII)V", (void*)nProgramBindTexture }, 13112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindSampler", "(IIII)V", (void*)nProgramBindSampler }, 13122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1313b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramFragmentCreate", "(ILjava/lang/String;[I)I", (void*)nProgramFragmentCreate }, 13142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1315b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramRasterCreate", "(IZZZ)I", (void*)nProgramRasterCreate }, 13162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramRasterSetLineWidth", "(IIF)V", (void*)nProgramRasterSetLineWidth }, 13172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramRasterSetCullMode", "(III)V", (void*)nProgramRasterSetCullMode }, 13182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1319b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramVertexCreate", "(ILjava/lang/String;[I)I", (void*)nProgramVertexCreate }, 13202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindRootScript", "(II)V", (void*)nContextBindRootScript }, 1322b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextBindProgramStore", "(II)V", (void*)nContextBindProgramStore }, 13232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramFragment", "(II)V", (void*)nContextBindProgramFragment }, 13242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramVertex", "(II)V", (void*)nContextBindProgramVertex }, 13252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramRaster", "(II)V", (void*)nContextBindProgramRaster }, 13262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerBegin", "(I)V", (void*)nSamplerBegin }, 13282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerSet", "(III)V", (void*)nSamplerSet }, 1329f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk{"rsnSamplerSet2", "(IIF)V", (void*)nSamplerSet2 }, 13302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerCreate", "(I)I", (void*)nSamplerCreate }, 13312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshCreate", "(III)I", (void*)nMeshCreate }, 13332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshBindVertex", "(IIII)V", (void*)nMeshBindVertex }, 13342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshBindIndex", "(IIIII)V", (void*)nMeshBindIndex }, 13352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetVertexBufferCount", "(II)I", (void*)nMeshGetVertexBufferCount }, 13372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndexCount", "(II)I", (void*)nMeshGetIndexCount }, 1338b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnMeshGetVertices", "(II[II)V", (void*)nMeshGetVertices }, 13392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndices", "(II[I[II)V", (void*)nMeshGetIndices }, 134080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1341d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1342d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1343d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1344d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1345d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1346d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1347d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1348d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1349d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1350d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1351d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1352d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1353d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1354d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1355d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1356d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1357d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1358d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1359d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1360d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1361d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1362d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1363d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1364d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1365d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1366d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1367d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1368d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1369d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1370d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1371d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1372d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 137380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1374