android_renderscript_RenderScript.cpp revision bf6ef8d78fffbce6c1849a4a28fb3f4401ad039e
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; 107581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaGetName(con, (void *)obj, &name); 108581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk if(name == NULL || strlen(name) == 0) { 109581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return NULL; 110581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk } 111fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk return _env->NewStringUTF(name); 112fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk} 113fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk 1147ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 1152e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnObjDestroy(JNIEnv *_env, jobject _this, RsContext con, jint obj) 1167ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 1177ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj); 1189c25aee52672f9c8908e062bde502341c189970eJason Sams rsObjDestroy(con, (void *)obj); 1197ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 1207ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 1213eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 1223eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 123d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 124d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 125d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 126d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 127d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsDeviceCreate(); 128d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 129d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 130d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 131d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) 132d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 133d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 134d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 135d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 136d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 137ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 138ebfb436a49673693b98469683451bd9ede797557Jason SamsnDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value) 139ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 140ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value); 141ebfb436a49673693b98469683451bd9ede797557Jason Sams return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value); 142ebfb436a49673693b98469683451bd9ede797557Jason Sams} 143ebfb436a49673693b98469683451bd9ede797557Jason Sams 144d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 145704ff64b099406bb328898a7443921f22dbffd6dJason SamsnContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver) 146d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 147d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 148704ff64b099406bb328898a7443921f22dbffd6dJason Sams return (jint)rsContextCreate((RsDevice)dev, ver); 149704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 150704ff64b099406bb328898a7443921f22dbffd6dJason Sams 151704ff64b099406bb328898a7443921f22dbffd6dJason Samsstatic jint 15211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason SamsnContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, 15311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 15411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 15511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 15611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 15711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int samplesMin, int samplesPref, float samplesQ) 15811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams{ 15911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams RsSurfaceConfig sc; 16011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaMin = alphaMin; 16111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaPref = alphaPref; 16211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorMin = colorMin; 16311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorPref = colorPref; 16411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthMin = depthMin; 16511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthPref = depthPref; 16611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesMin = samplesMin; 16711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesPref = samplesPref; 16811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesQ = samplesQ; 16911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams 170704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nContextCreateGL"); 17111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams return (jint)rsContextCreateGL((RsDevice)dev, ver, sc); 172d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 173d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 174d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetPriority(JNIEnv *_env, jobject _this, RsContext con, jint p) 1767d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{ 1777d787b4722eaeb79cab42c36060336e092b77b5fJason Sams LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p); 1787d787b4722eaeb79cab42c36060336e092b77b5fJason Sams rsContextSetPriority(con, p); 1797d787b4722eaeb79cab42c36060336e092b77b5fJason Sams} 1807d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1817d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1827d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1837d787b4722eaeb79cab42c36060336e092b77b5fJason Samsstatic void 1842e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetSurface(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject wnd) 185efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 1863bc47d438171dce294e816366d53bc9eca772c5bJason Sams LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)wnd); 187efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 188efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams Surface * window = NULL; 189efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 190efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 191efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 192ee956053d6e3f7a7a82e41853b9b251fdc226d7aJim Miller window = (Surface*) android_Surface_getNativeWindow(_env, wnd).get(); 193efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 194efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 1953bc47d438171dce294e816366d53bc9eca772c5bJason Sams rsContextSetSurface(con, width, height, window); 196efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 197efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 198efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 1992e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDestroy(JNIEnv *_env, jobject _this, RsContext con) 200d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 2012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams LOG_API("nContextDestroy, con(%p)", con); 2022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsContextDestroy(con); 203d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 204d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 205715333b832fb448c32165c7d97d408a3fa43f7cbJason Samsstatic void 2062e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDump(JNIEnv *_env, jobject _this, RsContext con, jint bits) 207715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{ 208715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits); 209715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDump((RsContext)con, bits); 210715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams} 211d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 212d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2132e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextPause(JNIEnv *_env, jobject _this, RsContext con) 21465e7aa56f56097418d617663683544c25b3988eaJason Sams{ 21565e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextPause, con(%p)", con); 21665e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextPause(con); 21765e7aa56f56097418d617663683544c25b3988eaJason Sams} 21865e7aa56f56097418d617663683544c25b3988eaJason Sams 21965e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 2202e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextResume(JNIEnv *_env, jobject _this, RsContext con) 22165e7aa56f56097418d617663683544c25b3988eaJason Sams{ 22265e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextResume, con(%p)", con); 22365e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextResume(con); 22465e7aa56f56097418d617663683544c25b3988eaJason Sams} 22565e7aa56f56097418d617663683544c25b3988eaJason Sams 2261c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2271c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jstring 2281c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetErrorMessage(JNIEnv *_env, jobject _this, RsContext con) 2291c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2301c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextGetErrorMessage, con(%p)", con); 2311c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams char buf[1024]; 2321c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2331c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2341c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 2351c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams int id = rsContextGetMessage(con, buf, &receiveLen, &subID, sizeof(buf), true); 2361c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (!id && receiveLen) { 2371c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOGV("message receive buffer too small. %i", receiveLen); 2381c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 2391c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams return _env->NewStringUTF(buf); 2401c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 2411c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2421c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic void 2431c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) 244516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 245516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 246516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextGetMessage, con(%p), len(%i)", con, len); 247516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 248516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 2491c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 2501c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams int id = rsContextGetMessage(con, ptr, &receiveLen, &subID, len * 4, true); 251516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 2521d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams LOGV("message receive buffer too small. %i", receiveLen); 253516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 254516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 2551c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 2561c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2571c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jint 2581c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData, jboolean wait) 2591c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2601c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextPeekMessage, con(%p)", con); 2611c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); 2621c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2631c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 2641c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams int id = rsContextPeekMessage(con, &receiveLen, &subID, wait); 2651c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[0] = (jint)subID; 2661c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[1] = (jint)receiveLen; 2671c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); 268516c31911578db8ce53529483c3ded918ac7dc6bJason Sams return id; 269516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 270516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 2712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextInitToClient(JNIEnv *_env, jobject _this, RsContext con) 272516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 273516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextInitToClient, con(%p)", con); 274516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextInitToClient(con); 275516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 276516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 2772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextDeinitToClient(JNIEnv *_env, jobject _this, RsContext con) 278516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 279516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextDeinitToClient, con(%p)", con); 280516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextDeinitToClient(con); 281516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 282516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 283516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 284718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 2852e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementCreate(JNIEnv *_env, jobject _this, RsContext con, jint type, jint kind, jboolean norm, jint size) 286d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 287718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size); 288718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)rsElementCreate(con, (RsDataType)type, (RsDataKind)kind, norm, size); 289d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 290d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 291718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 29270d4e5024298f71edb3b04867e05568f5495b4ceJason SamsnElementCreate2(JNIEnv *_env, jobject _this, RsContext con, jintArray _ids, jobjectArray _names, jintArray _arraySizes) 293d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 294718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams int fieldCount = _env->GetArrayLength(_ids); 295704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nElementCreate2, con(%p)", con); 296718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 297718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jint *ids = _env->GetIntArrayElements(_ids, NULL); 29870d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint *arraySizes = _env->GetIntArrayElements(_arraySizes, NULL); 299718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams const char ** nameArray = (const char **)calloc(fieldCount, sizeof(char *)); 300718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams size_t* sizeArray = (size_t*)calloc(fieldCount, sizeof(size_t)); 301718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 302718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 303718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 304718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams nameArray[ct] = _env->GetStringUTFChars(s, NULL); 305718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams sizeArray[ct] = _env->GetStringUTFLength(s); 30643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 30770d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint id = (jint)rsElementCreate2(con, fieldCount, (RsElement *)ids, nameArray, sizeArray, (const uint32_t *)arraySizes); 308718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 309718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 310718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseStringUTFChars(s, nameArray[ct]); 31143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 312718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseIntArrayElements(_ids, ids, JNI_ABORT); 31370d4e5024298f71edb3b04867e05568f5495b4ceJason Sams _env->ReleaseIntArrayElements(_arraySizes, arraySizes, JNI_ABORT); 314718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(nameArray); 315718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(sizeArray); 316718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)id; 317d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 318d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 319dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3202e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _elementData) 321dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 322dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_elementData); 323dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetNativeData, con(%p)", con); 324dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 325dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements 326dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(dataSize == 5); 327dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 328dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t elementData[5]; 329581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetNativeData(con, (RsElement)id, elementData, dataSize); 330dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 331dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < dataSize; i ++) { 332dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_elementData, i, 1, (const jint*)&elementData[i]); 333dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 334dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 335dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 336dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 337dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3382e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetSubElements(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _IDs, jobjectArray _names) 339dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 340dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_IDs); 341dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetSubElements, con(%p)", con); 342dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 343dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t *ids = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t)); 344dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk const char **names = (const char **)malloc((uint32_t)dataSize * sizeof(const char *)); 345dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 346581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetSubElements(con, (RsElement)id, ids, names, (uint32_t)dataSize); 347dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 34811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams for(jint i = 0; i < dataSize; i++) { 349dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i])); 350dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_IDs, i, 1, (const jint*)&ids[i]); 351dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 352dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 353dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(ids); 354dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(names); 355dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 356dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 357d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 358d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 3593b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Samsstatic int 360bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason SamsnTypeCreate(JNIEnv *_env, jobject _this, RsContext con, RsElement eid, 361bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces) 362d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 363bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i)", 364bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams con, eid, dimx, dimy, dimz, mips, faces); 3653b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams 366bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams jint id = (jint)rsaTypeCreate(con, (RsElement)eid, dimx, dimy, dimz, mips, faces); 3673b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams return (jint)id; 368d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 369d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 370dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3712e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _typeData) 372dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 373dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // We are packing 6 items: mDimX; mDimY; mDimZ; 374dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // mDimLOD; mDimFaces; mElement; into typeData 375dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int elementCount = _env->GetArrayLength(_typeData); 376dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 377dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(elementCount == 6); 378dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nTypeCreate, con(%p)", con); 379dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 380dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t typeData[6]; 381581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaTypeGetNativeData(con, (RsType)id, typeData, 6); 382dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 383dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < elementCount; i ++) { 384dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_typeData, i, 1, (const jint*)&typeData[i]); 385dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 386dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 387dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 388d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 389d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 390d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 3912e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, RsContext con, jint e) 392d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 393d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAllocationCreateTyped, con(%p), e(%p)", con, (RsElement)e); 39431a7e42f4baa059352f0db119de38428e655eab2Jason Sams return (jint) rsaAllocationCreateTyped(con, (RsElement)e); 395d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 396d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 397d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 3982e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationUploadToTexture(JNIEnv *_env, jobject _this, RsContext con, jint a, jboolean genMip, jint mip) 399d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 400c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams LOG_API("nAllocationUploadToTexture, con(%p), a(%p), genMip(%i), mip(%i)", con, (RsAllocation)a, genMip, mip); 401c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams rsAllocationUploadToTexture(con, (RsAllocation)a, genMip, mip); 402d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 403d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 40407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Samsstatic void 4052e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationUploadToBufferObject(JNIEnv *_env, jobject _this, RsContext con, jint a) 40607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams{ 40707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAllocationUploadToBufferObject, con(%p), a(%p)", con, (RsAllocation)a); 40807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocationUploadToBufferObject(con, (RsAllocation)a); 40907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams} 41007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 411ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Samsstatic RsElement SkBitmapToPredefined(SkBitmap::Config cfg) 412ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams{ 413ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams switch (cfg) { 414ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kA8_Config: 415ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_A_8; 416ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_4444_Config: 417ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_4444; 418ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kARGB_8888_Config: 419ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGBA_8888; 420ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams case SkBitmap::kRGB_565_Config: 421ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return g_RGB_565; 422ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 423ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams default: 424ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams break; 425ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 426ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams // If we don't have a conversion mark it as a user type. 427ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams LOGE("Unsupported bitmap type"); 428ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return NULL; 429ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 430ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 431fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 4322e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint dstFmt, jboolean genMips, jobject jbitmap) 433fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 434ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 435ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 436ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 437ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap::Config config = bitmap.getConfig(); 438fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 439ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 440ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 441ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.lockPixels(); 442ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int w = bitmap.width(); 443ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const int h = bitmap.height(); 444ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const void* ptr = bitmap.getPixels(); 44531a7e42f4baa059352f0db119de38428e655eab2Jason Sams jint id = (jint)rsaAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 446ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams bitmap.unlockPixels(); 447ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return id; 448ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams } 449ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams return 0; 450ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 451fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 45267f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchoukstatic int 45367f2e442a31b8395e3c1951f8e91139ec7f2be99Alex SakhartchouknAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint dstFmt, jboolean genMips, jobject jbitmap) 45467f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk{ 45567f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk SkBitmap const * nativeBitmap = 45667f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 45767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 45867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk SkBitmap::Config config = bitmap.getConfig(); 45967f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 46067f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk RsElement e = SkBitmapToPredefined(config); 46167f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk if (e) { 46267f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk bitmap.lockPixels(); 46367f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const int w = bitmap.width(); 46467f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const int h = bitmap.height(); 46567f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const void* ptr = bitmap.getPixels(); 46667f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk jint id = (jint)rsaAllocationCubeCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 46767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk bitmap.unlockPixels(); 46867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk return id; 46967f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk } 47067f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk return 0; 47167f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk} 47267f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 47326ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchoukstatic void 47426ae3904e8050eae655722caf93ee5d3f0ab195aAlex SakhartchouknAllocationUpdateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 47526ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk{ 47626ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk SkBitmap const * nativeBitmap = 47726ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 47826ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 47926ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk SkBitmap::Config config = bitmap.getConfig(); 48026ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk 48126ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk RsElement e = SkBitmapToPredefined(config); 48226ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk if (e) { 48326ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk bitmap.lockPixels(); 48426ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk const void* ptr = bitmap.getPixels(); 48526ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk rsAllocationUpdateFromBitmap(con, (RsAllocation)alloc, e, ptr); 48626ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk bitmap.unlockPixels(); 48726ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk } 48826ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk} 48926ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk 4908a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Samsstatic void ReleaseBitmapCallback(void *bmp) 4918a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 4928a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; 4938a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams nativeBitmap->unlockPixels(); 4948a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 4958a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4968a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Samsstatic int 4972e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationCreateBitmapRef(JNIEnv *_env, jobject _this, RsContext con, jint type, jobject jbitmap) 4988a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 4998a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams SkBitmap * nativeBitmap = 5008a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams (SkBitmap *)_env->GetIntField(jbitmap, gNativeBitmapID); 5018a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5028a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 5038a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams nativeBitmap->lockPixels(); 5048a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams void* ptr = nativeBitmap->getPixels(); 5058a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams jint id = (jint)rsAllocationCreateBitmapRef(con, (RsType)type, ptr, nativeBitmap, ReleaseBitmapCallback); 5068a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return id; 5078a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 5088a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 509b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Samsstatic int 5102e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint dstFmt, jboolean genMips, jint native_asset) 511650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 512650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy Asset* asset = reinterpret_cast<Asset*>(native_asset); 513650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap bitmap; 514650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkImageDecoder::DecodeMemory(asset->getBuffer(false), asset->getLength(), 515650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy &bitmap, SkBitmap::kNo_Config, SkImageDecoder::kDecodePixels_Mode); 516650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 517650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy SkBitmap::Config config = bitmap.getConfig(); 518650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 519ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams RsElement e = SkBitmapToPredefined(config); 520650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 521ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if (e) { 522650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.lockPixels(); 523650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int w = bitmap.width(); 524650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const int h = bitmap.height(); 525650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy const void* ptr = bitmap.getPixels(); 52631a7e42f4baa059352f0db119de38428e655eab2Jason Sams jint id = (jint)rsaAllocationCreateFromBitmap(con, w, h, (RsElement)dstFmt, e, genMips, ptr); 527650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy bitmap.unlockPixels(); 528650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return id; 529650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } 530650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return 0; 531650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 532650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 533d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5342e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jintArray data, int sizeBytes) 535d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 536d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 537768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 538d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 539768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 540d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 541d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 542d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 543d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5442e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jshortArray data, int sizeBytes) 545d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 546d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 547768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 548768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 549768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 550768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 551d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 552d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 553d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5542e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jbyteArray data, int sizeBytes) 555d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 556d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 557768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 558768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 55907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 560768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 561d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 562d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 563d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5642e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData1D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint count, jfloatArray data, int sizeBytes) 565d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 566d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 567768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams LOG_API("nAllocation1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 568d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 56907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes); 570d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 571d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 572d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 573d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 57449bdaf0293408159df18a1d8540360f9623c40f7Jason Sams// native void rsnAllocationSubElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes); 57549bdaf0293408159df18a1d8540360f9623c40f7Jason SamsnAllocationSubElementData1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint compIdx, jbyteArray data, int sizeBytes) 57649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{ 57749bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jint len = _env->GetArrayLength(data); 57849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams LOG_API("nAllocationSubElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); 57949bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 58049bdaf0293408159df18a1d8540360f9623c40f7Jason Sams rsAllocation1DSubElementData(con, (RsAllocation)alloc, offset, ptr, compIdx, sizeBytes); 58149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 58249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams} 58349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 58449bdaf0293408159df18a1d8540360f9623c40f7Jason Samsstatic void 5852e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData2D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data, int sizeBytes) 586d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 587d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 588d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 589d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 59007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 591d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 592d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 593d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 594d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 5952e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationSubData2D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data, int sizeBytes) 596d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 597d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 598d19f10d43aa400e1183aa21a97099d02074131a2Jason 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); 599d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 60007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes); 601d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 602d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 603d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 60440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 6052e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jintArray data) 60640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 60740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 60840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 60940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 610bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 611ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 61240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 61340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 61440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 6152e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jfloatArray data) 61640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 61740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 618a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 61940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 620bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 621ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 62240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 623d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 624dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic jint 6252e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationGetType(JNIEnv *_env, jobject _this, RsContext con, jint a) 626dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 627dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nAllocationGetType, con(%p), a(%p)", con, (RsAllocation)a); 628581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return (jint) rsaAllocationGetType(con, (RsAllocation)a); 629dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 630dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 6315edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 6325edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX) 6335edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 6345edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", con, (RsAllocation)alloc, dimX); 6355edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize1D(con, (RsAllocation)alloc, dimX); 6365edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 6375edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 6385edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 6395edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize2D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX, jint dimY) 6405edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 6415edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i), sizeY(%i)", con, (RsAllocation)alloc, dimX, dimY); 6425edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize2D(con, (RsAllocation)alloc, dimX, dimY); 6435edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 6445edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 645aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk// ----------------------------------- 646aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 647aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 6482e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint native_asset) 649aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 650aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) native_asset); 651aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 652aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 653aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 654581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromAssetStream(con, asset->getBuffer(false), asset->getLength()); 655aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 656aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 657aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 658aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 6592e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D) 660aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 661aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk int32_t numEntries = 0; 662581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetNumIndexEntries(con, &numEntries, (RsFile)fileA3D); 663aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return numEntries; 664aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 665aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 666aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic void 6672e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries) 668aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 669aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 670aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry)); 671aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 672581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetIndexEntries(con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D); 673aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 674aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk for(jint i = 0; i < numEntries; i ++) { 675aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName)); 676aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID); 677aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk } 678aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 679aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk free(fileEntries); 680aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 681aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 682aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 6832e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint index) 684aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 685aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 686581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk jint id = (jint)rsaFileA3DGetEntryByIndex(con, (uint32_t)index, (RsFile)fileA3D); 687aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 688aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 689d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 690d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 691d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 6929b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchoukstatic int 6932e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFontCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, jstring fileName, jint fontSize, jint dpi) 6949b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk{ 6959b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk const char* fileNameUTF = _env->GetStringUTFChars(fileName, NULL); 6969b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 6979b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk jint id = (jint)rsFontCreateFromFile(con, fileNameUTF, fontSize, dpi); 6989b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return id; 6999b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk} 7009b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 7019b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 7029b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk// ----------------------------------- 7039b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 704d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7052e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint alloc) 706d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 707d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter1D)adapter, (RsAllocation)alloc); 708bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DBindAllocation(con, (RsAdapter1D)adapter, (RsAllocation)alloc); 709d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 710d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 711d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7122e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DSetConstraint(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint dim, jint value) 713d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 714d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter1D)adapter, dim, value); 715bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSetConstraint(con, (RsAdapter1D)adapter, (RsDimension)dim, value); 716d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 717d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 718d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7192e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jintArray data) 720d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 721d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 722d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 723d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 724bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 725d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 726d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 727d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 728d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7292e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DSubData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint offset, jint count, jintArray data) 730d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 731d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 732d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 733d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 734bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 735d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 736d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 737d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 738d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7392e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jfloatArray data) 740d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 741d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 742d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); 743d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 744bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DData(con, (RsAdapter1D)adapter, ptr); 745d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 746d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 747d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 748d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7492e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DSubData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint offset, jint count, jfloatArray data) 750d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 751d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 752d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); 753d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 754bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter1DSubData(con, (RsAdapter1D)adapter, offset, count, ptr); 755d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 756d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 757d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 758d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 7592e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter1DCreate(JNIEnv *_env, jobject _this, RsContext con) 760d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 761d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nAdapter1DCreate, con(%p)", con); 762bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter1DCreate(con); 763d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 764d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 765d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 766d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 767d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7682e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint alloc) 769bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 770bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter2D)adapter, (RsAllocation)alloc); 771bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DBindAllocation(con, (RsAdapter2D)adapter, (RsAllocation)alloc); 772bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 773bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 774bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DSetConstraint(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint dim, jint value) 776bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 777bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter2D)adapter, dim, value); 778bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSetConstraint(con, (RsAdapter2D)adapter, (RsDimension)dim, value); 779bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 780bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 781bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7822e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jintArray data) 783bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 784bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 785bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 786bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 787bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 788bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 789bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 790bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 791bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 7922e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jfloatArray data) 793bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 794bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 795bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); 796bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 797bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DData(con, (RsAdapter2D)adapter, ptr); 798bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 799bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 800bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 801bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 8022e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DSubData_i(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint xoff, jint yoff, jint w, jint h, jintArray data) 803bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 804bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 805bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 806bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 807bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 808bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter2D)adapter, xoff, yoff, w, h, ptr); 809bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); 810bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 811bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 812bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 8132e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DSubData_f(JNIEnv *_env, jobject _this, RsContext con, jint adapter, jint xoff, jint yoff, jint w, jint h, jfloatArray data) 814bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 815bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jint len = _env->GetArrayLength(data); 816bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DSubData_f, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", 817bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); 818bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 819bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAdapter2DSubData(con, (RsAdapter1D)adapter, xoff, yoff, w, h, ptr); 820bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); 821bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 822bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 823bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic jint 8242e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAdapter2DCreate(JNIEnv *_env, jobject _this, RsContext con) 825bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams{ 826bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams LOG_API("nAdapter2DCreate, con(%p)", con); 827bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsAdapter2DCreate(con); 828bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams} 829bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 830bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 831bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 832bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 8332e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint script, jint alloc, jint slot) 834d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 835d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 836bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 837d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 838d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 839d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8402e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarI(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 8414d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 842cfc04366998cd0c626594c9cf70336a11bdf5996Jason Sams LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 8434d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarI(con, (RsScript)script, slot, val); 8444d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8454d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 8464d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 8476f4cf0b8885403ead157ae00fd43cf1282331c23Jason SamsnScriptSetVarObj(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 8486f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{ 8496f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams LOG_API("nScriptSetVarObj, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 8506f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams rsScriptSetVarObj(con, (RsScript)script, slot, (RsObjectBase)val); 8516f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams} 8526f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams 8536f4cf0b8885403ead157ae00fd43cf1282331c23Jason Samsstatic void 854031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen HinesnScriptSetVarJ(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jlong val) 855031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{ 856031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", con, (void *)script, slot, val); 857031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsScriptSetVarJ(con, (RsScript)script, slot, val); 858031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines} 859031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines 860031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hinesstatic void 8612e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarF(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, float val) 8624d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 863ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", con, (void *)script, slot, val); 8644d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarF(con, (RsScript)script, slot, val); 8654d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8664d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 8674d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 868ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen HinesnScriptSetVarD(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, double val) 869ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{ 870ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", con, (void *)script, slot, val); 871ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsScriptSetVarD(con, (RsScript)script, slot, val); 872ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines} 873ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 874ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hinesstatic void 8752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 8764d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 8774d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 8784d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 8794d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 8804d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarV(con, (RsScript)script, slot, ptr, len); 8814d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 8824d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 8834d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 884d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 885d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8862e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone) 887584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 88807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 889584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 890584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 891584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 892584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 893584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 894bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 895584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 896584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 897584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 898584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 899584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 900584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 90122534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 9022e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvoke(JNIEnv *_env, jobject _this, RsContext con, jint obj, jint slot) 90322534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 9044d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 9054d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 90622534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 90722534176fb5c1257130ef4ee589739ca42766a32Jason Sams 908584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 9092e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 910be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 9114d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 9124d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 9134d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 9144d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvokeV(con, (RsScript)script, slot, ptr, len); 9154d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 916be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 917be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 918d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 919fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 920fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 921d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9222e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCBegin(JNIEnv *_env, jobject _this, RsContext con) 923d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 924fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCBegin, con(%p)", con); 925bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCBegin(con); 926d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 927d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 928d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9292e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCSetScript(JNIEnv *_env, jobject _this, RsContext con, jbyteArray scriptRef, 93043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint offset, jint length) 931d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 932d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("!!! nScriptCSetScript, con(%p)", con); 93343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 93443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 93543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_base = 0; 93643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_ptr; 93743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 93843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 93943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "script == null"); 94043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 94143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 94243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (offset < 0) { 94343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 94443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "offset < 0"); 94543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 94643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 94743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 94843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 94943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length < 0"); 95043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 95143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 95243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich remaining = _env->GetArrayLength(scriptRef) - offset; 95343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 95443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 95543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length > script.length - offset"); 95643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 95743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 95843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_base = (jbyte *) 95943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 96043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_ptr = script_base + offset; 96143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 962bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetText(con, (const char *)script_ptr, length); 96339ddc950c9064129ead5de04b200106c0659f937Jason Sams 96443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 96543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (script_base) { 96643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->ReleasePrimitiveArrayCritical(scriptRef, script_base, 96743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 96843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 969d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 970d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 971d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 972a914f340ae5b267dc3ab36c1156c795b8fa18f5dShih-wei LiaonScriptCCreate(JNIEnv *_env, jobject _this, RsContext con, jstring resName) 973d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 974d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 975a914f340ae5b267dc3ab36c1156c795b8fa18f5dShih-wei Liao const char* resNameUTF = _env->GetStringUTFChars(resName, NULL); 976a914f340ae5b267dc3ab36c1156c795b8fa18f5dShih-wei Liao return (jint)rsScriptCCreate(con, resNameUTF); 977d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 978d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 979d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 980d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 981d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9822e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreBegin(JNIEnv *_env, jobject _this, RsContext con, jint in, jint out) 983d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 98454db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 98554db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreBegin(con, (RsElement)in, (RsElement)out); 986d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 987d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 988d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9892e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDepthFunc(JNIEnv *_env, jobject _this, RsContext con, jint func) 990d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 99154db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDepthFunc, con(%p), func(%i)", con, func); 99254db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDepthFunc(con, (RsDepthFunc)func); 993d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 994d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 995d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9962e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDepthMask(JNIEnv *_env, jobject _this, RsContext con, jboolean enable) 997d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 99854db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDepthMask, con(%p), enable(%i)", con, enable); 99954db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDepthMask(con, enable); 1000d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1001d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1002d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10032e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreColorMask(JNIEnv *_env, jobject _this, RsContext con, jboolean r, jboolean g, jboolean b, jboolean a) 1004d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 100554db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreColorMask, con(%p), r(%i), g(%i), b(%i), a(%i)", con, r, g, b, a); 100654db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreColorMask(con, r, g, b, a); 1007d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1008d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1009d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10102e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreBlendFunc(JNIEnv *_env, jobject _this, RsContext con, int src, int dst) 1011d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 101254db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreBlendFunc, con(%p), src(%i), dst(%i)", con, src, dst); 101354db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreBlendFunc(con, (RsBlendSrcFunc)src, (RsBlendDstFunc)dst); 1014d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1015d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1016d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10172e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDither(JNIEnv *_env, jobject _this, RsContext con, jboolean enable) 1018d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 101954db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDither, con(%p), enable(%i)", con, enable); 102054db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDither(con, enable); 1021d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1022d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1023d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 10242e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreCreate(JNIEnv *_env, jobject _this, RsContext con) 1025d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 102654db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreCreate, con(%p)", con); 102754db59c3594e887a412a24713fc3daa1c2404593Jason Sams return (jint)rsProgramStoreCreate(con); 1028d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1029d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10300011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 10310011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 10320011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 10332e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindConstants(JNIEnv *_env, jobject _this, RsContext con, jint vpv, jint slot, jint a) 10340011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 10350011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 10360011bcf57ff711a221a3a4c73f2a79125111647dJason Sams rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a); 10370011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 103854c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 1039d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 10402e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindTexture(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 104154c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 104268afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 104368afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 104454c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 104554c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 104654c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 10472e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindSampler(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 1048d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 104968afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 105068afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 1051d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1052d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 105368afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 1054d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 105568afd01ec9fd37774d8291192952a25e5605b6fbJason Samsstatic jint 1056b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramFragmentCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 10577e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 10587e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 10597e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint shaderLen = _env->GetStringUTFLength(shader); 10607e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10617e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 10627e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 1063b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk LOG_API("nProgramFragmentCreate, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 10647e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 1065b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk jint ret = (jint)rsProgramFragmentCreate(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 10667e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 10677e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10687e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 10697e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 10707e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10717e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 10721fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 10731fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 10740011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 1075b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramVertexCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 10761fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 10770011bcf57ff711a221a3a4c73f2a79125111647dJason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 10780011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint shaderLen = _env->GetStringUTFLength(shader); 10790011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 10800011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 10811fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1082b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk LOG_API("nProgramVertexCreate, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 1083ee41112e1539de95596600fd2c6dada5d275217fJason Sams 1084b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk jint ret = (jint)rsProgramVertexCreate(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 10850011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 10860011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 10870011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 10881fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 10891fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 1090ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 1091ebfb436a49673693b98469683451bd9ede797557Jason Sams 1092ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 10932e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, RsContext con, jboolean pointSmooth, jboolean lineSmooth, jboolean pointSprite) 1094ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 109580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterCreate, con(%p), pointSmooth(%i), lineSmooth(%i), pointSprite(%i)", 109680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk con, pointSmooth, lineSmooth, pointSprite); 109780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return (jint)rsProgramRasterCreate(con, pointSmooth, lineSmooth, pointSprite); 1098ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1099ebfb436a49673693b98469683451bd9ede797557Jason Sams 1100ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 11012e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterSetLineWidth(JNIEnv *_env, jobject _this, RsContext con, jint vpr, jfloat v) 1102ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1103ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterSetLineWidth, con(%p), vpf(%p), value(%f)", con, (RsProgramRaster)vpr, v); 110480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsProgramRasterSetLineWidth(con, (RsProgramRaster)vpr, v); 110580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 110680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 110780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 11082e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterSetCullMode(JNIEnv *_env, jobject _this, RsContext con, jint vpr, jint v) 110980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 111080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterSetCullMode, con(%p), vpf(%p), value(%i)", con, (RsProgramRaster)vpr, v); 111180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsProgramRasterSetCullMode(con, (RsProgramRaster)vpr, (RsCullMode)v); 1112ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1113ebfb436a49673693b98469683451bd9ede797557Jason Sams 1114d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1115d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1116d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1117d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 11182e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, RsContext con, jint script) 1119d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1120d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 1121bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 1122d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1123d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1124d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 11252e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramStore(JNIEnv *_env, jobject _this, RsContext con, jint pfs) 1126d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 112754db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", con, (RsProgramStore)pfs); 112854db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsContextBindProgramStore(con, (RsProgramStore)pfs); 1129d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1130d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1131d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 11322e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1133d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1134d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 1135bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 1136d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1137d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 11380826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 11392e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, RsContext con, jint pf) 11400826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 11410826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 1142bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 11430826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 11440826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 1145d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 11462e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, RsContext con, jint pf) 1147ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 1148ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 1149ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 1150ebfb436a49673693b98469683451bd9ede797557Jason Sams} 1151ebfb436a49673693b98469683451bd9ede797557Jason Sams 1152d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 115302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 115402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 115502fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 11562e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerBegin(JNIEnv *_env, jobject _this, RsContext con) 115702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 115802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerBegin, con(%p)", con); 1159bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerBegin(con); 116002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 116102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 116202fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 11632e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerSet(JNIEnv *_env, jobject _this, RsContext con, jint p, jint v) 116402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 116502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerSet, con(%p), param(%i), value(%i)", con, p, v); 1166bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerSet(con, (RsSamplerParam)p, (RsSamplerValue)v); 116702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 116802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1169f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchoukstatic void 1170f5b3510c706ed1f7611760dff0c94f2111531c68Alex SakhartchouknSamplerSet2(JNIEnv *_env, jobject _this, RsContext con, jint p, jfloat v) 1171f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk{ 1172f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk LOG_API("nSamplerSet2, con(%p), param(%i), value(%f)", con, p, v); 1173f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk rsSamplerSet2(con, (RsSamplerParam)p, v); 1174f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk} 1175f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk 117602fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 11772e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerCreate(JNIEnv *_env, jobject _this, RsContext con) 117802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 1179bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 1180bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsSamplerCreate(con); 118102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 118202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1183bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 1184bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 11851bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 11862e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshCreate(JNIEnv *_env, jobject _this, RsContext con, jint vtxCount, jint idxCount) 1187164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 1188164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk LOG_API("nMeshCreate, con(%p), vtxCount(%i), idxCount(%i)", con, vtxCount, idxCount); 1189164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk int id = (int)rsMeshCreate(con, vtxCount, idxCount); 1190164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk return id; 1191164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1192164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1193164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchoukstatic void 11942e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshBindVertex(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jint alloc, jint slot) 1195164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 119680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshBindVertex, con(%p), Mesh(%p), Alloc(%p), slot(%i)", con, (RsMesh)mesh, (RsAllocation)alloc, slot); 119780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshBindVertex(con, (RsMesh)mesh, (RsAllocation)alloc, slot); 1198164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1199164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1200164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchoukstatic void 12012e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshBindIndex(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jint alloc, jint primID, jint slot) 1202164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 120380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshBindIndex, con(%p), Mesh(%p), Alloc(%p)", con, (RsMesh)mesh, (RsAllocation)alloc); 120480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshBindIndex(con, (RsMesh)mesh, (RsAllocation)alloc, primID, slot); 120580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 120680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 12079d71e2180062931416092f26276a07e55b318f62Alex Sakhartchoukstatic void 12089d71e2180062931416092f26276a07e55b318f62Alex SakhartchouknMeshInitVertexAttribs(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 12099d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk{ 12109d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk LOG_API("nMeshInitVertexAttribs, con(%p), Mesh(%p)", con, (RsMesh)mesh); 12119d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk rsMeshInitVertexAttribs(con, (RsMesh)mesh); 12129d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk} 12139d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk 12149d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk 121580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 12162e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 121780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 121880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 121980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint vtxCount = 0; 1220581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertexBufferCount(con, (RsMesh)mesh, &vtxCount); 122180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return vtxCount; 122280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 122380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 122480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 12252e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndexCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 122680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 122780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 122880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint idxCount = 0; 1229581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndexCount(con, (RsMesh)mesh, &idxCount); 123080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return idxCount; 123180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 123280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 123380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 12342e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _ids, int numVtxIDs) 123580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 123680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 123780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 123880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation)); 1239581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertices(con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs); 124080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 124180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numVtxIDs; i ++) { 124280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&allocs[i]); 124380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 124480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 124580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 124680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 124780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 124880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 12492e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _idxIds, jintArray _primitives, int numIndices) 125080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 125180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 125280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 125380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation)); 125480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t)); 125580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1256581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndices(con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices); 125780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 125880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numIndices; i ++) { 125980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_idxIds, i, 1, (const jint*)&allocs[i]); 126080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_primitives, i, 1, (const jint*)&prims[i]); 126180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 126280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 126380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 126480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(prims); 1265164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1266164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1267164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk// --------------------------------------------------------------------------- 1268164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1269d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 127094d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1271d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1272d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 12731c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"_nInit", "()V", (void*)_nInit }, 12741c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nInitElements", "(IIII)V", (void*)nInitElements }, 12751c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 12761c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 12771c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 12781c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 12791c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextGetUserMessage", "(I[I)V", (void*)nContextGetUserMessage }, 12801c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, 12811c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextPeekMessage", "(I[IZ)I", (void*)nContextPeekMessage }, 12821c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 12831c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, 12841c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, 12852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 12872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams// All methods below are thread protected in java. 1288b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextCreate", "(II)I", (void*)nContextCreate }, 128911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams{"rsnContextCreateGL", "(IIIIIIIIIIIIF)I", (void*)nContextCreateGL }, 12902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextFinish", "(I)V", (void*)nContextFinish }, 12912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority }, 12922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1293b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextDestroy", "(I)V", (void*)nContextDestroy }, 12942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextDump", "(II)V", (void*)nContextDump }, 12952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextPause", "(I)V", (void*)nContextPause }, 12962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextResume", "(I)V", (void*)nContextResume }, 12972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAssignName", "(II[B)V", (void*)nAssignName }, 1298b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnGetName", "(II)Ljava/lang/String;", (void*)nGetName }, 12992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnObjDestroy", "(II)V", (void*)nObjDestroy }, 13002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DCreateFromAssetStream", "(II)I", (void*)nFileA3DCreateFromAssetStream }, 13022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetNumIndexEntries", "(II)I", (void*)nFileA3DGetNumIndexEntries }, 1303b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFileA3DGetIndexEntries", "(III[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, 13042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetEntryByIndex", "(III)I", (void*)nFileA3DGetEntryByIndex }, 13052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1306b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFontCreateFromFile", "(ILjava/lang/String;II)I", (void*)nFontCreateFromFile }, 13072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementCreate", "(IIIZI)I", (void*)nElementCreate }, 130970d4e5024298f71edb3b04867e05568f5495b4ceJason Sams{"rsnElementCreate2", "(I[I[Ljava/lang/String;[I)I", (void*)nElementCreate2 }, 13102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementGetNativeData", "(II[I)V", (void*)nElementGetNativeData }, 1311b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnElementGetSubElements", "(II[I[Ljava/lang/String;)V", (void*)nElementGetSubElements }, 13122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1313bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams{"rsnTypeCreate", "(IIIIIZZ)I", (void*)nTypeCreate }, 1314b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData }, 13152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateTyped", "(II)I", (void*)nAllocationCreateTyped }, 131726ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk{"rsnAllocationUpdateFromBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationUpdateFromBitmap }, 13182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateFromBitmap", "(IIZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap }, 131967f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk{"rsnAllocationCubeCreateFromBitmap","(IIZLandroid/graphics/Bitmap;)I", (void*)nAllocationCubeCreateFromBitmap }, 13202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateBitmapRef", "(IILandroid/graphics/Bitmap;)I", (void*)nAllocationCreateBitmapRef }, 13212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationCreateFromAssetStream","(IIZI)I", (void*)nAllocationCreateFromAssetStream }, 13222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationUploadToTexture", "(IIZI)V", (void*)nAllocationUploadToTexture }, 13232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationUploadToBufferObject","(II)V", (void*)nAllocationUploadToBufferObject }, 13242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[II)V", (void*)nAllocationSubData1D_i }, 13252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[SI)V", (void*)nAllocationSubData1D_s }, 13262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[BI)V", (void*)nAllocationSubData1D_b }, 13272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData1D", "(IIII[FI)V", (void*)nAllocationSubData1D_f }, 132849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{"rsnAllocationSubElementData1D", "(IIII[BI)V", (void*)nAllocationSubElementData1D }, 13292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData2D", "(IIIIII[II)V", (void*)nAllocationSubData2D_i }, 13302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationSubData2D", "(IIIIII[FI)V", (void*)nAllocationSubData2D_f }, 13312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[I)V", (void*)nAllocationRead_i }, 13322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[F)V", (void*)nAllocationRead_f }, 13332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationGetType", "(II)I", (void*)nAllocationGetType}, 13345edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize1D", "(III)V", (void*)nAllocationResize1D }, 13355edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize2D", "(IIII)V", (void*)nAllocationResize2D }, 13362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DBindAllocation", "(III)V", (void*)nAdapter1DBindAllocation }, 13382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DSetConstraint", "(IIII)V", (void*)nAdapter1DSetConstraint }, 13392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DData", "(II[I)V", (void*)nAdapter1DData_i }, 13402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DData", "(II[F)V", (void*)nAdapter1DData_f }, 13412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DSubData", "(IIII[I)V", (void*)nAdapter1DSubData_i }, 13422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DSubData", "(IIII[F)V", (void*)nAdapter1DSubData_f }, 13432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter1DCreate", "(I)I", (void*)nAdapter1DCreate }, 13442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DBindAllocation", "(III)V", (void*)nAdapter2DBindAllocation }, 13462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DSetConstraint", "(IIII)V", (void*)nAdapter2DSetConstraint }, 13472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DData", "(II[I)V", (void*)nAdapter2DData_i }, 13482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DData", "(II[F)V", (void*)nAdapter2DData_f }, 13492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DSubData", "(IIIIII[I)V", (void*)nAdapter2DSubData_i }, 13502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DSubData", "(IIIIII[F)V", (void*)nAdapter2DSubData_f }, 13512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAdapter2DCreate", "(I)I", (void*)nAdapter2DCreate }, 13522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptBindAllocation", "(IIII)V", (void*)nScriptBindAllocation }, 13542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone }, 13552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke }, 13562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV }, 13572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI }, 1358031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{"rsnScriptSetVarJ", "(IIIJ)V", (void*)nScriptSetVarJ }, 13592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, 1360ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD }, 13612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV }, 13626f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{"rsnScriptSetVarObj", "(IIII)V", (void*)nScriptSetVarObj }, 13632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCBegin", "(I)V", (void*)nScriptCBegin }, 13652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCSetScript", "(I[BII)V", (void*)nScriptCSetScript }, 1366a914f340ae5b267dc3ab36c1156c795b8fa18f5dShih-wei Liao{"rsnScriptCCreate", "(ILjava/lang/String;)I", (void*)nScriptCCreate }, 13672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreBegin", "(III)V", (void*)nProgramStoreBegin }, 13692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDepthFunc", "(II)V", (void*)nProgramStoreDepthFunc }, 13702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDepthMask", "(IZ)V", (void*)nProgramStoreDepthMask }, 13712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreColorMask", "(IZZZZ)V", (void*)nProgramStoreColorMask }, 13722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreBlendFunc", "(III)V", (void*)nProgramStoreBlendFunc }, 13732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDither", "(IZ)V", (void*)nProgramStoreDither }, 13742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreCreate", "(I)I", (void*)nProgramStoreCreate }, 13752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindConstants", "(IIII)V", (void*)nProgramBindConstants }, 13772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindTexture", "(IIII)V", (void*)nProgramBindTexture }, 13782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindSampler", "(IIII)V", (void*)nProgramBindSampler }, 13792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1380b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramFragmentCreate", "(ILjava/lang/String;[I)I", (void*)nProgramFragmentCreate }, 13812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1382b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramRasterCreate", "(IZZZ)I", (void*)nProgramRasterCreate }, 13832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramRasterSetLineWidth", "(IIF)V", (void*)nProgramRasterSetLineWidth }, 13842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramRasterSetCullMode", "(III)V", (void*)nProgramRasterSetCullMode }, 13852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1386b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramVertexCreate", "(ILjava/lang/String;[I)I", (void*)nProgramVertexCreate }, 13872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindRootScript", "(II)V", (void*)nContextBindRootScript }, 1389b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextBindProgramStore", "(II)V", (void*)nContextBindProgramStore }, 13902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramFragment", "(II)V", (void*)nContextBindProgramFragment }, 13912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramVertex", "(II)V", (void*)nContextBindProgramVertex }, 13922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramRaster", "(II)V", (void*)nContextBindProgramRaster }, 13932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerBegin", "(I)V", (void*)nSamplerBegin }, 13952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerSet", "(III)V", (void*)nSamplerSet }, 1396f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk{"rsnSamplerSet2", "(IIF)V", (void*)nSamplerSet2 }, 13972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerCreate", "(I)I", (void*)nSamplerCreate }, 13982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 13992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshCreate", "(III)I", (void*)nMeshCreate }, 14002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshBindVertex", "(IIII)V", (void*)nMeshBindVertex }, 14012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshBindIndex", "(IIIII)V", (void*)nMeshBindIndex }, 14029d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk{"rsnMeshInitVertexAttribs", "(II)V", (void*)nMeshInitVertexAttribs }, 14032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 14042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetVertexBufferCount", "(II)I", (void*)nMeshGetVertexBufferCount }, 14052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndexCount", "(II)I", (void*)nMeshGetIndexCount }, 1406b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnMeshGetVertices", "(II[II)V", (void*)nMeshGetVertices }, 14072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndices", "(II[I[II)V", (void*)nMeshGetIndices }, 140880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1409d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1410d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1411d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1412d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1413d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1414d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1415d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1416d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1417d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1418d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1419d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1420d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1421d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1422d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1423d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1424d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1425d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1426d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1427d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1428d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1429d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1430d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1431d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1432d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1433d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1434d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1435d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1436d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1437d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1438d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1439d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1440d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 144180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1442