android_renderscript_RenderScript.cpp revision 49a05d7b82956009f03acbb92a064eed054eb031
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 62d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void _nInit(JNIEnv *_env, jclass _this) 63d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 64d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams gContextId = _env->GetFieldID(_this, "mContext", "I"); 65ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams 66ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); 67ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I"); 68d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 69d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 70d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 71d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 723eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsstatic void 732e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextFinish(JNIEnv *_env, jobject _this, RsContext con) 7496ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams{ 7596ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams LOG_API("nContextFinish, con(%p)", con); 7696ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams rsContextFinish(con); 7796ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams} 7896ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 7996ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Samsstatic void 802e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAssignName(JNIEnv *_env, jobject _this, RsContext con, jint obj, jbyteArray str) 813eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams{ 8207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nAssignName, con(%p), obj(%p)", con, (void *)obj); 833eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jint len = _env->GetArrayLength(str); 843eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); 85bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAssignName(con, (void *)obj, (const char *)cptr, len); 863eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); 873eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams} 883eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 89fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchoukstatic jstring 902e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnGetName(JNIEnv *_env, jobject _this, RsContext con, jint obj) 91fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk{ 92fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk LOG_API("nGetName, con(%p), obj(%p)", con, (void *)obj); 93fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk const char *name = NULL; 94581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaGetName(con, (void *)obj, &name); 95581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk if(name == NULL || strlen(name) == 0) { 96581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return NULL; 97581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk } 98fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk return _env->NewStringUTF(name); 99fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk} 100fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk 1017ce033d797e5df5e2131e2ed459fba181eaf4658Jason Samsstatic void 1022e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnObjDestroy(JNIEnv *_env, jobject _this, RsContext con, jint obj) 1037ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams{ 1047ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj); 1059c25aee52672f9c8908e062bde502341c189970eJason Sams rsObjDestroy(con, (void *)obj); 1067ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams} 1077ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams 1083eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams// --------------------------------------------------------------------------- 1093eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 110d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 111d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceCreate(JNIEnv *_env, jobject _this) 112d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 113d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceCreate"); 114d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return (jint)rsDeviceCreate(); 115d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 116d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 117d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 118d19f10d43aa400e1183aa21a97099d02074131a2Jason SamsnDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) 119d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 120d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nDeviceDestroy"); 121d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return rsDeviceDestroy((RsDevice)dev); 122d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 123d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 124ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 125ebfb436a49673693b98469683451bd9ede797557Jason SamsnDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value) 126ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 127ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value); 128ebfb436a49673693b98469683451bd9ede797557Jason Sams return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value); 129ebfb436a49673693b98469683451bd9ede797557Jason Sams} 130ebfb436a49673693b98469683451bd9ede797557Jason Sams 131d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 132704ff64b099406bb328898a7443921f22dbffd6dJason SamsnContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver) 133d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 134d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextCreate"); 135704ff64b099406bb328898a7443921f22dbffd6dJason Sams return (jint)rsContextCreate((RsDevice)dev, ver); 136704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 137704ff64b099406bb328898a7443921f22dbffd6dJason Sams 138704ff64b099406bb328898a7443921f22dbffd6dJason Samsstatic jint 13911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason SamsnContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, 14011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 14111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 14211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 14311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 14411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int samplesMin, int samplesPref, float samplesQ) 14511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams{ 14611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams RsSurfaceConfig sc; 14711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaMin = alphaMin; 14811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.alphaPref = alphaPref; 14911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorMin = colorMin; 15011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.colorPref = colorPref; 15111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthMin = depthMin; 15211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.depthPref = depthPref; 15311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesMin = samplesMin; 15411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesPref = samplesPref; 15511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams sc.samplesQ = samplesQ; 15611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams 157704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nContextCreateGL"); 15811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams return (jint)rsContextCreateGL((RsDevice)dev, ver, sc); 159d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 160d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 161d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 1622e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetPriority(JNIEnv *_env, jobject _this, RsContext con, jint p) 1637d787b4722eaeb79cab42c36060336e092b77b5fJason Sams{ 1647d787b4722eaeb79cab42c36060336e092b77b5fJason Sams LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p); 1657d787b4722eaeb79cab42c36060336e092b77b5fJason Sams rsContextSetPriority(con, p); 1667d787b4722eaeb79cab42c36060336e092b77b5fJason Sams} 1677d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1687d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1697d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 1707d787b4722eaeb79cab42c36060336e092b77b5fJason Samsstatic void 1712e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextSetSurface(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject wnd) 172efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams{ 1733bc47d438171dce294e816366d53bc9eca772c5bJason Sams LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)wnd); 174efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 175efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams Surface * window = NULL; 176efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams if (wnd == NULL) { 177efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 178efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } else { 179ee956053d6e3f7a7a82e41853b9b251fdc226d7aJim Miller window = (Surface*) android_Surface_getNativeWindow(_env, wnd).get(); 180efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 181efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 1823bc47d438171dce294e816366d53bc9eca772c5bJason Sams rsContextSetSurface(con, width, height, window); 183efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams} 184efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 185efd9b6fb2e0f31b50db089352118e5daeb268879Jason Samsstatic void 1862e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDestroy(JNIEnv *_env, jobject _this, RsContext con) 187d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams LOG_API("nContextDestroy, con(%p)", con); 1892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsContextDestroy(con); 190d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 191d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 192715333b832fb448c32165c7d97d408a3fa43f7cbJason Samsstatic void 1932e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextDump(JNIEnv *_env, jobject _this, RsContext con, jint bits) 194715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams{ 195715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits); 196715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams rsContextDump((RsContext)con, bits); 197715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams} 198d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 199d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 2002e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextPause(JNIEnv *_env, jobject _this, RsContext con) 20165e7aa56f56097418d617663683544c25b3988eaJason Sams{ 20265e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextPause, con(%p)", con); 20365e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextPause(con); 20465e7aa56f56097418d617663683544c25b3988eaJason Sams} 20565e7aa56f56097418d617663683544c25b3988eaJason Sams 20665e7aa56f56097418d617663683544c25b3988eaJason Samsstatic void 2072e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextResume(JNIEnv *_env, jobject _this, RsContext con) 20865e7aa56f56097418d617663683544c25b3988eaJason Sams{ 20965e7aa56f56097418d617663683544c25b3988eaJason Sams LOG_API("nContextResume, con(%p)", con); 21065e7aa56f56097418d617663683544c25b3988eaJason Sams rsContextResume(con); 21165e7aa56f56097418d617663683544c25b3988eaJason Sams} 21265e7aa56f56097418d617663683544c25b3988eaJason Sams 2131c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2141c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jstring 2151c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetErrorMessage(JNIEnv *_env, jobject _this, RsContext con) 2161c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2171c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextGetErrorMessage, con(%p)", con); 2181c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams char buf[1024]; 2191c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2201c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2211c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 2221c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams int id = rsContextGetMessage(con, buf, &receiveLen, &subID, sizeof(buf), true); 2231c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (!id && receiveLen) { 2241c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOGV("message receive buffer too small. %i", receiveLen); 2251c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 2261c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams return _env->NewStringUTF(buf); 2271c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 2281c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2291c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic void 2301c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) 231516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 232516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint len = _env->GetArrayLength(data); 233516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextGetMessage, con(%p), len(%i)", con, len); 234516c31911578db8ce53529483c3ded918ac7dc6bJason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 235516c31911578db8ce53529483c3ded918ac7dc6bJason Sams size_t receiveLen; 2361c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 2371c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams int id = rsContextGetMessage(con, ptr, &receiveLen, &subID, len * 4, true); 238516c31911578db8ce53529483c3ded918ac7dc6bJason Sams if (!id && receiveLen) { 2391d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams LOGV("message receive buffer too small. %i", receiveLen); 240516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 241516c31911578db8ce53529483c3ded918ac7dc6bJason Sams _env->ReleaseIntArrayElements(data, ptr, 0); 2421c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams} 2431c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 2441c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Samsstatic jint 2451c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason SamsnContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData, jboolean wait) 2461c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{ 2471c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams LOG_API("nContextPeekMessage, con(%p)", con); 2481c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); 2491c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams size_t receiveLen; 2501c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams uint32_t subID; 2511c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams int id = rsContextPeekMessage(con, &receiveLen, &subID, wait); 2521c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[0] = (jint)subID; 2531c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams auxDataPtr[1] = (jint)receiveLen; 2541c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); 255516c31911578db8ce53529483c3ded918ac7dc6bJason Sams return id; 256516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 257516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 2582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextInitToClient(JNIEnv *_env, jobject _this, RsContext con) 259516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 260516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextInitToClient, con(%p)", con); 261516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextInitToClient(con); 262516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 263516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 2642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Samsstatic void nContextDeinitToClient(JNIEnv *_env, jobject _this, RsContext con) 265516c31911578db8ce53529483c3ded918ac7dc6bJason Sams{ 266516c31911578db8ce53529483c3ded918ac7dc6bJason Sams LOG_API("nContextDeinitToClient, con(%p)", con); 267516c31911578db8ce53529483c3ded918ac7dc6bJason Sams rsContextDeinitToClient(con); 268516c31911578db8ce53529483c3ded918ac7dc6bJason Sams} 269516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 270516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 271718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 2722e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementCreate(JNIEnv *_env, jobject _this, RsContext con, jint type, jint kind, jboolean norm, jint size) 273d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 274718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size); 275718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)rsElementCreate(con, (RsDataType)type, (RsDataKind)kind, norm, size); 276d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 277d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 278718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Samsstatic jint 27970d4e5024298f71edb3b04867e05568f5495b4ceJason SamsnElementCreate2(JNIEnv *_env, jobject _this, RsContext con, jintArray _ids, jobjectArray _names, jintArray _arraySizes) 280d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 281718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams int fieldCount = _env->GetArrayLength(_ids); 282704ff64b099406bb328898a7443921f22dbffd6dJason Sams LOG_API("nElementCreate2, con(%p)", con); 283718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 284718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jint *ids = _env->GetIntArrayElements(_ids, NULL); 28570d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint *arraySizes = _env->GetIntArrayElements(_arraySizes, NULL); 286718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams const char ** nameArray = (const char **)calloc(fieldCount, sizeof(char *)); 287718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams size_t* sizeArray = (size_t*)calloc(fieldCount, sizeof(size_t)); 288718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams 289718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 290718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 291718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams nameArray[ct] = _env->GetStringUTFChars(s, NULL); 292718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams sizeArray[ct] = _env->GetStringUTFLength(s); 29343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 29470d4e5024298f71edb3b04867e05568f5495b4ceJason Sams jint id = (jint)rsElementCreate2(con, fieldCount, (RsElement *)ids, nameArray, sizeArray, (const uint32_t *)arraySizes); 295718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams for (int ct=0; ct < fieldCount; ct++) { 296718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams jstring s = (jstring)_env->GetObjectArrayElement(_names, ct); 297718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseStringUTFChars(s, nameArray[ct]); 29843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 299718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams _env->ReleaseIntArrayElements(_ids, ids, JNI_ABORT); 30070d4e5024298f71edb3b04867e05568f5495b4ceJason Sams _env->ReleaseIntArrayElements(_arraySizes, arraySizes, JNI_ABORT); 301718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(nameArray); 302718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams free(sizeArray); 303718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams return (jint)id; 304d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 305d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 306dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3072e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _elementData) 308dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 309dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_elementData); 310dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetNativeData, con(%p)", con); 311dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 312dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements 313dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(dataSize == 5); 314dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 315dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t elementData[5]; 316581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetNativeData(con, (RsElement)id, elementData, dataSize); 317dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 318dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < dataSize; i ++) { 319dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_elementData, i, 1, (const jint*)&elementData[i]); 320dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 321dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 322dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 323dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 324dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3252e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnElementGetSubElements(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _IDs, jobjectArray _names) 326dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 327dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int dataSize = _env->GetArrayLength(_IDs); 328dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nElementGetSubElements, con(%p)", con); 329dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 330dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t *ids = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t)); 331dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk const char **names = (const char **)malloc((uint32_t)dataSize * sizeof(const char *)); 332dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 333581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaElementGetSubElements(con, (RsElement)id, ids, names, (uint32_t)dataSize); 334dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 33511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams for(jint i = 0; i < dataSize; i++) { 336dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i])); 337dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_IDs, i, 1, (const jint*)&ids[i]); 338dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 339dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 340dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(ids); 341dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk free(names); 342dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 343dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 344d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 345d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 3463b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Samsstatic int 347bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason SamsnTypeCreate(JNIEnv *_env, jobject _this, RsContext con, RsElement eid, 348bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces) 349d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 350bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i)", 351bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams con, eid, dimx, dimy, dimz, mips, faces); 3523b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams 353bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams jint id = (jint)rsaTypeCreate(con, (RsElement)eid, dimx, dimy, dimz, mips, faces); 3543b9c52ab8c1ab240d2299358d01a8efbe392d111Jason Sams return (jint)id; 355d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 356d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 357dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic void 3582e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnTypeGetNativeData(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray _typeData) 359dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 360dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // We are packing 6 items: mDimX; mDimY; mDimZ; 361dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk // mDimLOD; mDimFaces; mElement; into typeData 362dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int elementCount = _env->GetArrayLength(_typeData); 363dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 364dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk assert(elementCount == 6); 365dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nTypeCreate, con(%p)", con); 366dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 367dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk uint32_t typeData[6]; 368581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaTypeGetNativeData(con, (RsType)id, typeData, 6); 369dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 370dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk for(jint i = 0; i < elementCount; i ++) { 371dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk _env->SetIntArrayRegion(_typeData, i, 1, (const jint*)&typeData[i]); 372dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 373dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 374dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 375d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 376d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 377d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 3785476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCreateTyped(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mips, jint usage) 379d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 380d4b23b54445b13dacaafad97d100999abb36ea6fJason Sams LOG_API("nAllocationCreateTyped, con(%p), type(%p), mip(%i), usage(%i)", con, (RsElement)type, mips, usage); 381d4b23b54445b13dacaafad97d100999abb36ea6fJason Sams return (jint) rsaAllocationCreateTyped(con, (RsType)type, (RsAllocationMipmapControl)mips, (uint32_t)usage); 382d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 383d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 384d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 3855476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationSyncAll(JNIEnv *_env, jobject _this, RsContext con, jint a, jint bits) 3865476b450e50939940dcf3f15c92335cee2fc572dJason Sams{ 3875476b450e50939940dcf3f15c92335cee2fc572dJason Sams LOG_API("nAllocationSyncAll, con(%p), a(%p), bits(0x%08x)", con, (RsAllocation)a, bits); 3885476b450e50939940dcf3f15c92335cee2fc572dJason Sams rsAllocationSyncAll(con, (RsAllocation)a, (RsAllocationUsageType)bits); 3895476b450e50939940dcf3f15c92335cee2fc572dJason Sams} 3905476b450e50939940dcf3f15c92335cee2fc572dJason Sams 391fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsstatic int 3925476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 393fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams{ 394ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams SkBitmap const * nativeBitmap = 395ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 396ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams const SkBitmap& bitmap(*nativeBitmap); 397fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 3985476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 3995476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 400d4b23b54445b13dacaafad97d100999abb36ea6fJason Sams jint id = (jint)rsaAllocationCreateFromBitmap(con, (RsType)type, (RsAllocationMipmapControl)mip, ptr, usage); 4015476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 4025476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 403ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams} 404fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 40567f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchoukstatic int 4065476b450e50939940dcf3f15c92335cee2fc572dJason SamsnAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage) 40767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk{ 40867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk SkBitmap const * nativeBitmap = 40967f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 41067f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 41167f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 4125476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.lockPixels(); 4135476b450e50939940dcf3f15c92335cee2fc572dJason Sams const void* ptr = bitmap.getPixels(); 414d4b23b54445b13dacaafad97d100999abb36ea6fJason Sams jint id = (jint)rsaAllocationCubeCreateFromBitmap(con, (RsType)type, (RsAllocationMipmapControl)mip, ptr, usage); 4155476b450e50939940dcf3f15c92335cee2fc572dJason Sams bitmap.unlockPixels(); 4165476b450e50939940dcf3f15c92335cee2fc572dJason Sams return id; 41767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk} 41867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk 41926ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchoukstatic void 4204ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 42126ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk{ 42226ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk SkBitmap const * nativeBitmap = 42326ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 42426ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk const SkBitmap& bitmap(*nativeBitmap); 42526ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk 4264ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 4274ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const void* ptr = bitmap.getPixels(); 4284ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsAllocationCopyFromBitmap(con, (RsAllocation)alloc, ptr, bitmap.getSize()); 4294ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 4308a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 4318a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4324ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void 4334ef6650bd05a39a09958ea1db92f120ea4949cb1Jason SamsnAllocationCopyToBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) 4348a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams{ 4354ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = 4364ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); 4374ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams const SkBitmap& bitmap(*nativeBitmap); 4388a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4394ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.lockPixels(); 4404ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams void* ptr = bitmap.getPixels(); 4414ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsAllocationCopyToBitmap(con, (RsAllocation)alloc, ptr, bitmap.getSize()); 4424ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams bitmap.unlockPixels(); 4438a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams} 4448a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 4454ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Samsstatic void ReleaseBitmapCallback(void *bmp) 446650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy{ 4474ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; 4484ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams nativeBitmap->unlockPixels(); 449650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy} 450650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 4514ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 452d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 45349a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jintArray data, int sizeBytes) 454d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 455d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 45649a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 457d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 45849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 459d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 460d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 461d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 462d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 46349a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_s(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jshortArray data, int sizeBytes) 464d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 465d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 46649a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_s, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 467768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jshort *ptr = _env->GetShortArrayElements(data, NULL); 46849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 469768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseShortArrayElements(data, ptr, JNI_ABORT); 470d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 471d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 472d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 47349a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_b(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jbyteArray data, int sizeBytes) 474d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 475d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 47649a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_b, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 477768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 47849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 479768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 480d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 481d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 482d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 48349a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData1D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint count, jfloatArray data, int sizeBytes) 484d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 485d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 48649a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation1DData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, count, len, sizeBytes); 487d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 48849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DData(con, (RsAllocation)alloc, offset, lod, count, ptr, sizeBytes); 489d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 490d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 491d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 492d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 49349a05d7b82956009f03acbb92a064eed054eb031Jason Sams// native void rsnAllocationElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes); 49449a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationElementData1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint offset, jint lod, jint compIdx, jbyteArray data, int sizeBytes) 49549bdaf0293408159df18a1d8540360f9623c40f7Jason Sams{ 49649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jint len = _env->GetArrayLength(data); 49749a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocationElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); 49849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 49949a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation1DElementData(con, (RsAllocation)alloc, offset, lod, ptr, compIdx, sizeBytes); 50049bdaf0293408159df18a1d8540360f9623c40f7Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 50149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams} 50249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 50349bdaf0293408159df18a1d8540360f9623c40f7Jason Samsstatic void 50449a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 50549a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jintArray data, int sizeBytes) 506d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 507d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 50849a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation2DData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 509d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 51049a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 511d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); 512d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 513d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 514d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 51549a05d7b82956009f03acbb92a064eed054eb031Jason SamsnAllocationData2D_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint xoff, jint yoff, jint lod, jint face, 51649a05d7b82956009f03acbb92a064eed054eb031Jason Sams jint w, jint h, jfloatArray data, int sizeBytes) 517d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 518d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint len = _env->GetArrayLength(data); 51949a05d7b82956009f03acbb92a064eed054eb031Jason Sams LOG_API("nAllocation2DData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); 520d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 52149a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsAllocation2DData(con, (RsAllocation)alloc, xoff, yoff, lod, (RsAllocationCubemapFace)face, w, h, ptr, sizeBytes); 522d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); 523d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 524d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 52540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 5262e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_i(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jintArray data) 52740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 52840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 52940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams LOG_API("nAllocationRead_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 53040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint *ptr = _env->GetIntArrayElements(data, NULL); 531bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 532ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseIntArrayElements(data, ptr, 0); 53340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 53440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 53540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Samsstatic void 5362e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationRead_f(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jfloatArray data) 53740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams{ 53840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jint len = _env->GetArrayLength(data); 539a8f2acee39aae94f9d7148f775ca8e35344da4b4Joe Onorato LOG_API("nAllocationRead_f, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); 54040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams jfloat *ptr = _env->GetFloatArrayElements(data, NULL); 541bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsAllocationRead(con, (RsAllocation)alloc, ptr); 542ae209acd8d48755df7d49459b1bcbc3b8e20561dJoe Onorato _env->ReleaseFloatArrayElements(data, ptr, 0); 54340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams} 544d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 545dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchoukstatic jint 5462e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnAllocationGetType(JNIEnv *_env, jobject _this, RsContext con, jint a) 547dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk{ 548dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk LOG_API("nAllocationGetType, con(%p), a(%p)", con, (RsAllocation)a); 549581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk return (jint) rsaAllocationGetType(con, (RsAllocation)a); 550dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk} 551dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 5525edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 5535edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize1D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX) 5545edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 5555edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", con, (RsAllocation)alloc, dimX); 5565edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize1D(con, (RsAllocation)alloc, dimX); 5575edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 5585edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 5595edc608a0749ed4b7074b5c1243043eb722c3c31Jason Samsstatic void 5605edc608a0749ed4b7074b5c1243043eb722c3c31Jason SamsnAllocationResize2D(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jint dimX, jint dimY) 5615edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{ 5625edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i), sizeY(%i)", con, (RsAllocation)alloc, dimX, dimY); 5635edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsAllocationResize2D(con, (RsAllocation)alloc, dimX, dimY); 5645edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams} 5655edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 566aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk// ----------------------------------- 567aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 568aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 5692e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, RsContext con, jint native_asset) 570aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 571aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) native_asset); 572aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 573aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk Asset* asset = reinterpret_cast<Asset*>(native_asset); 574aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 575581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk jint id = (jint)rsaFileA3DCreateFromAssetStream(con, asset->getBuffer(false), asset->getLength()); 576aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 577aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 578aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 579aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 5802e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D) 581aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 582aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk int32_t numEntries = 0; 583581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetNumIndexEntries(con, &numEntries, (RsFile)fileA3D); 584aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return numEntries; 585aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 586aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 587aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic void 5882e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries) 589aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 590aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 591aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry)); 592aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 593581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaFileA3DGetIndexEntries(con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D); 594aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 595aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk for(jint i = 0; i < numEntries; i ++) { 596aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName)); 597aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID); 598aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk } 599aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 600aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk free(fileEntries); 601aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 602aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk 603aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukstatic int 6042e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, RsContext con, jint fileA3D, jint index) 605aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk{ 606aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk LOGV("______nFileA3D %u", (uint32_t) fileA3D); 607581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk jint id = (jint)rsaFileA3DGetEntryByIndex(con, (uint32_t)index, (RsFile)fileA3D); 608aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk return id; 609aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk} 610d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 611d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ----------------------------------- 612d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 6139b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchoukstatic int 614e27cdeeecba5b445e307d653d9cb7da007adfac3Alex SakhartchouknFontCreateFromFile(JNIEnv *_env, jobject _this, RsContext con, jstring fileName, jfloat fontSize, jint dpi) 6159b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk{ 6169b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk const char* fileNameUTF = _env->GetStringUTFChars(fileName, NULL); 6179b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 6189b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk jint id = (jint)rsFontCreateFromFile(con, fileNameUTF, fontSize, dpi); 6199b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return id; 6209b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk} 6219b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 622bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams// ----------------------------------- 623bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 624bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Samsstatic void 6252e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptBindAllocation(JNIEnv *_env, jobject _this, RsContext con, jint script, jint alloc, jint slot) 626d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 627d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); 628bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptBindAllocation(con, (RsScript)script, (RsAllocation)alloc, slot); 629d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 630d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 631d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6322e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarI(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 6334d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 634cfc04366998cd0c626594c9cf70336a11bdf5996Jason Sams LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 6354d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarI(con, (RsScript)script, slot, val); 6364d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 6374d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 6384d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 6396f4cf0b8885403ead157ae00fd43cf1282331c23Jason SamsnScriptSetVarObj(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jint val) 6406f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{ 6416f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams LOG_API("nScriptSetVarObj, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val); 6426f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams rsScriptSetVarObj(con, (RsScript)script, slot, (RsObjectBase)val); 6436f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams} 6446f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams 6456f4cf0b8885403ead157ae00fd43cf1282331c23Jason Samsstatic void 646031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen HinesnScriptSetVarJ(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jlong val) 647031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{ 648031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", con, (void *)script, slot, val); 649031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsScriptSetVarJ(con, (RsScript)script, slot, val); 650031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines} 651031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines 652031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hinesstatic void 6532e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarF(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, float val) 6544d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 655ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", con, (void *)script, slot, val); 6564d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarF(con, (RsScript)script, slot, val); 6574d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 6584d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 6594d3399337d18ef04116bc8a2e5799274655d0c30Jason Samsstatic void 660ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen HinesnScriptSetVarD(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, double val) 661ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{ 662ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", con, (void *)script, slot, val); 663ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsScriptSetVarD(con, (RsScript)script, slot, val); 664ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines} 665ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 666ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hinesstatic void 6672e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetVarV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 6684d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams{ 6694d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 6704d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 6714d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 6724d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptSetVarV(con, (RsScript)script, slot, ptr, len); 6734d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 6744d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams} 6754d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 676d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 677d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 6782e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone) 679584a375df68ed7d62b38389078c6804edf228f9cRomain Guy{ 68007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone); 681584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 682584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jint length = _env->GetArrayLength(timeZone); 683584a375df68ed7d62b38389078c6804edf228f9cRomain Guy jbyte* timeZone_ptr; 684584a375df68ed7d62b38389078c6804edf228f9cRomain Guy timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); 685584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 686bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptSetTimeZone(con, (RsScript)script, (const char *)timeZone_ptr, length); 687584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 688584a375df68ed7d62b38389078c6804edf228f9cRomain Guy if (timeZone_ptr) { 689584a375df68ed7d62b38389078c6804edf228f9cRomain Guy _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); 690584a375df68ed7d62b38389078c6804edf228f9cRomain Guy } 691584a375df68ed7d62b38389078c6804edf228f9cRomain Guy} 692584a375df68ed7d62b38389078c6804edf228f9cRomain Guy 69322534176fb5c1257130ef4ee589739ca42766a32Jason Samsstatic void 6942e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvoke(JNIEnv *_env, jobject _this, RsContext con, jint obj, jint slot) 69522534176fb5c1257130ef4ee589739ca42766a32Jason Sams{ 6964d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj); 6974d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvoke(con, (RsScript)obj, slot); 69822534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 69922534176fb5c1257130ef4ee589739ca42766a32Jason Sams 700584a375df68ed7d62b38389078c6804edf228f9cRomain Guystatic void 7012e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data) 702be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams{ 7034d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", con, (void *)script, slot); 7044d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jint len = _env->GetArrayLength(data); 7054d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams jbyte *ptr = _env->GetByteArrayElements(data, NULL); 7064d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rsScriptInvokeV(con, (RsScript)script, slot, ptr, len); 7074d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); 708be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams} 709be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams 710d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 711fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams// ----------------------------------- 712fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams 713d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7142e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCBegin(JNIEnv *_env, jobject _this, RsContext con) 715d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 716fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams LOG_API("nScriptCBegin, con(%p)", con); 717bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCBegin(con); 718d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 719d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 720d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7212e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnScriptCSetScript(JNIEnv *_env, jobject _this, RsContext con, jbyteArray scriptRef, 72243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint offset, jint length) 723d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 724d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("!!! nScriptCSetScript, con(%p)", con); 72543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint _exception = 0; 72643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jint remaining; 72743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_base = 0; 72843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich jbyte* script_ptr; 72943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (!scriptRef) { 73043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 73143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "script == null"); 73243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 73343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 73443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (offset < 0) { 73543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 73643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "offset < 0"); 73743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 73843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 73943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (length < 0) { 74043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 74143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length < 0"); 74243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 74343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 74443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich remaining = _env->GetArrayLength(scriptRef) - offset; 74543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (remaining < length) { 74643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception = 1; 74743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich //_env->ThrowNew(IAEClass, "length > script.length - offset"); 74843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich goto exit; 74943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 75043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_base = (jbyte *) 75143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); 75243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich script_ptr = script_base + offset; 75343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 754bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsScriptCSetText(con, (const char *)script_ptr, length); 75539ddc950c9064129ead5de04b200106c0659f937Jason Sams 75643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichexit: 75743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (script_base) { 75843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _env->ReleasePrimitiveArrayCritical(scriptRef, script_base, 75943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich _exception ? JNI_ABORT: 0); 76043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 761d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 762d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 763d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 764eeca435dc6134a285b9bbb832cd6a1a88f34e85fShih-wei LiaonScriptCCreate(JNIEnv *_env, jobject _this, RsContext con, jstring packageName, jstring resName, jstring cacheDir) 765d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 766d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nScriptCCreate, con(%p)", con); 767eeca435dc6134a285b9bbb832cd6a1a88f34e85fShih-wei Liao const char* packageNameUTF = _env->GetStringUTFChars(packageName, NULL); 768a914f340ae5b267dc3ab36c1156c795b8fa18f5dShih-wei Liao const char* resNameUTF = _env->GetStringUTFChars(resName, NULL); 7696b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao const char* cacheDirUTF = _env->GetStringUTFChars(cacheDir, NULL); 770eeca435dc6134a285b9bbb832cd6a1a88f34e85fShih-wei Liao jint i = (jint)rsScriptCCreate(con, packageNameUTF, resNameUTF, cacheDirUTF); 771eeca435dc6134a285b9bbb832cd6a1a88f34e85fShih-wei Liao _env->ReleaseStringUTFChars(packageName, packageNameUTF); 7726b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao _env->ReleaseStringUTFChars(resName, resNameUTF); 7736b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao _env->ReleaseStringUTFChars(cacheDir, cacheDirUTF); 7746b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao return i; 775d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 776d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 777d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 778d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 779d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7802e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreBegin(JNIEnv *_env, jobject _this, RsContext con, jint in, jint out) 781d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 78254db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); 78354db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreBegin(con, (RsElement)in, (RsElement)out); 784d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 785d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 786d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7872e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDepthFunc(JNIEnv *_env, jobject _this, RsContext con, jint func) 788d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 78954db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDepthFunc, con(%p), func(%i)", con, func); 79054db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDepthFunc(con, (RsDepthFunc)func); 791d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 792d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 793d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 7942e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDepthMask(JNIEnv *_env, jobject _this, RsContext con, jboolean enable) 795d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 79654db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDepthMask, con(%p), enable(%i)", con, enable); 79754db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDepthMask(con, enable); 798d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 799d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 800d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8012e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreColorMask(JNIEnv *_env, jobject _this, RsContext con, jboolean r, jboolean g, jboolean b, jboolean a) 802d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 80354db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreColorMask, con(%p), r(%i), g(%i), b(%i), a(%i)", con, r, g, b, a); 80454db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreColorMask(con, r, g, b, a); 805d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 806d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 807d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8082e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreBlendFunc(JNIEnv *_env, jobject _this, RsContext con, int src, int dst) 809d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 81054db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreBlendFunc, con(%p), src(%i), dst(%i)", con, src, dst); 81154db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreBlendFunc(con, (RsBlendSrcFunc)src, (RsBlendDstFunc)dst); 812d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 813d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 814d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8152e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreDither(JNIEnv *_env, jobject _this, RsContext con, jboolean enable) 816d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 81754db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreDither, con(%p), enable(%i)", con, enable); 81854db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsProgramStoreDither(con, enable); 819d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 820d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 821d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic jint 8222e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramStoreCreate(JNIEnv *_env, jobject _this, RsContext con) 823d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 82454db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nProgramStoreCreate, con(%p)", con); 82554db59c3594e887a412a24713fc3daa1c2404593Jason Sams return (jint)rsProgramStoreCreate(con); 826d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 827d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 8280011bcf57ff711a221a3a4c73f2a79125111647dJason Sams// --------------------------------------------------------------------------- 8290011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 8300011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic void 8312e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindConstants(JNIEnv *_env, jobject _this, RsContext con, jint vpv, jint slot, jint a) 8320011bcf57ff711a221a3a4c73f2a79125111647dJason Sams{ 8330011bcf57ff711a221a3a4c73f2a79125111647dJason Sams LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); 8340011bcf57ff711a221a3a4c73f2a79125111647dJason Sams rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a); 8350011bcf57ff711a221a3a4c73f2a79125111647dJason Sams} 83654c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 837d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 8382e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindTexture(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 83954c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams{ 84068afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 84168afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a); 84254c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams} 84354c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Sams 84454c0ec14e016e4a1bf3ceab40ed6ca5447da4725Jason Samsstatic void 8452e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramBindSampler(JNIEnv *_env, jobject _this, RsContext con, jint vpf, jint slot, jint a) 846d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 84768afd01ec9fd37774d8291192952a25e5605b6fbJason Sams LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); 84868afd01ec9fd37774d8291192952a25e5605b6fbJason Sams rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a); 849d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 850d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 85168afd01ec9fd37774d8291192952a25e5605b6fbJason Sams// --------------------------------------------------------------------------- 852d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 85368afd01ec9fd37774d8291192952a25e5605b6fbJason Samsstatic jint 854b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramFragmentCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 8557e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams{ 8567e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 8577e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint shaderLen = _env->GetStringUTFLength(shader); 8587e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 8597e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams jint paramLen = _env->GetArrayLength(params); 8607e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 861b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk LOG_API("nProgramFragmentCreate, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 8627e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 863b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk jint ret = (jint)rsProgramFragmentCreate(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 8647e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 8657e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 8667e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return ret; 8677e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams} 8687e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 8697e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 8701fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams// --------------------------------------------------------------------------- 8711fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 8720011bcf57ff711a221a3a4c73f2a79125111647dJason Samsstatic jint 873b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex SakhartchouknProgramVertexCreate(JNIEnv *_env, jobject _this, RsContext con, jstring shader, jintArray params) 8741fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams{ 8750011bcf57ff711a221a3a4c73f2a79125111647dJason Sams const char* shaderUTF = _env->GetStringUTFChars(shader, NULL); 8760011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint shaderLen = _env->GetStringUTFLength(shader); 8770011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint *paramPtr = _env->GetIntArrayElements(params, NULL); 8780011bcf57ff711a221a3a4c73f2a79125111647dJason Sams jint paramLen = _env->GetArrayLength(params); 8791fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 880b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk LOG_API("nProgramVertexCreate, con(%p), shaderLen(%i), paramLen(%i)", con, shaderLen, paramLen); 881ee41112e1539de95596600fd2c6dada5d275217fJason Sams 882b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk jint ret = (jint)rsProgramVertexCreate(con, shaderUTF, shaderLen, (uint32_t *)paramPtr, paramLen); 8830011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseStringUTFChars(shader, shaderUTF); 8840011bcf57ff711a221a3a4c73f2a79125111647dJason Sams _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT); 8850011bcf57ff711a221a3a4c73f2a79125111647dJason Sams return ret; 8861fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams} 8871fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 888ebfb436a49673693b98469683451bd9ede797557Jason Sams// --------------------------------------------------------------------------- 889ebfb436a49673693b98469683451bd9ede797557Jason Sams 890ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic jint 8912e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterCreate(JNIEnv *_env, jobject _this, RsContext con, jboolean pointSmooth, jboolean lineSmooth, jboolean pointSprite) 892ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 89380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterCreate, con(%p), pointSmooth(%i), lineSmooth(%i), pointSprite(%i)", 89480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk con, pointSmooth, lineSmooth, pointSprite); 89580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return (jint)rsProgramRasterCreate(con, pointSmooth, lineSmooth, pointSprite); 896ebfb436a49673693b98469683451bd9ede797557Jason Sams} 897ebfb436a49673693b98469683451bd9ede797557Jason Sams 898ebfb436a49673693b98469683451bd9ede797557Jason Samsstatic void 8992e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterSetLineWidth(JNIEnv *_env, jobject _this, RsContext con, jint vpr, jfloat v) 900ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 901ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nProgramRasterSetLineWidth, con(%p), vpf(%p), value(%f)", con, (RsProgramRaster)vpr, v); 90280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsProgramRasterSetLineWidth(con, (RsProgramRaster)vpr, v); 90380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 90480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 90580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 9062e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnProgramRasterSetCullMode(JNIEnv *_env, jobject _this, RsContext con, jint vpr, jint v) 90780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 90880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nProgramRasterSetCullMode, con(%p), vpf(%p), value(%i)", con, (RsProgramRaster)vpr, v); 90980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsProgramRasterSetCullMode(con, (RsProgramRaster)vpr, (RsCullMode)v); 910ebfb436a49673693b98469683451bd9ede797557Jason Sams} 911ebfb436a49673693b98469683451bd9ede797557Jason Sams 912d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 913d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 914d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 915d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9162e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindRootScript(JNIEnv *_env, jobject _this, RsContext con, jint script) 917d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 918d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); 919bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindRootScript(con, (RsScript)script); 920d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 921d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 922d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9232e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramStore(JNIEnv *_env, jobject _this, RsContext con, jint pfs) 924d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 92554db59c3594e887a412a24713fc3daa1c2404593Jason Sams LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", con, (RsProgramStore)pfs); 92654db59c3594e887a412a24713fc3daa1c2404593Jason Sams rsContextBindProgramStore(con, (RsProgramStore)pfs); 927d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 928d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 929d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic void 9302e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramFragment(JNIEnv *_env, jobject _this, RsContext con, jint pf) 931d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 932d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); 933bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramFragment(con, (RsProgramFragment)pf); 934d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 935d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 9360826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Samsstatic void 9372e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramVertex(JNIEnv *_env, jobject _this, RsContext con, jint pf) 9380826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams{ 9390826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); 940bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsContextBindProgramVertex(con, (RsProgramVertex)pf); 9410826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams} 9420826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 943d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onoratostatic void 9442e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnContextBindProgramRaster(JNIEnv *_env, jobject _this, RsContext con, jint pf) 945ebfb436a49673693b98469683451bd9ede797557Jason Sams{ 946ebfb436a49673693b98469683451bd9ede797557Jason Sams LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf); 947ebfb436a49673693b98469683451bd9ede797557Jason Sams rsContextBindProgramRaster(con, (RsProgramRaster)pf); 948ebfb436a49673693b98469683451bd9ede797557Jason Sams} 949ebfb436a49673693b98469683451bd9ede797557Jason Sams 950d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 95102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams// --------------------------------------------------------------------------- 95202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 95302fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 9542e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerBegin(JNIEnv *_env, jobject _this, RsContext con) 95502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 95602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerBegin, con(%p)", con); 957bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerBegin(con); 95802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 95902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 96002fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic void 9612e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerSet(JNIEnv *_env, jobject _this, RsContext con, jint p, jint v) 96202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 96302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LOG_API("nSamplerSet, con(%p), param(%i), value(%i)", con, p, v); 964bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams rsSamplerSet(con, (RsSamplerParam)p, (RsSamplerValue)v); 96502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 96602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 967f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchoukstatic void 968f5b3510c706ed1f7611760dff0c94f2111531c68Alex SakhartchouknSamplerSet2(JNIEnv *_env, jobject _this, RsContext con, jint p, jfloat v) 969f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk{ 970f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk LOG_API("nSamplerSet2, con(%p), param(%i), value(%f)", con, p, v); 971f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk rsSamplerSet2(con, (RsSamplerParam)p, v); 972f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk} 973f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk 97402fb2cb531035779a25dbf9595e0628ea40585b0Jason Samsstatic jint 9752e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnSamplerCreate(JNIEnv *_env, jobject _this, RsContext con) 97602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams{ 977bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LOG_API("nSamplerCreate, con(%p)", con); 978bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams return (jint)rsSamplerCreate(con); 97902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams} 98002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 981bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams// --------------------------------------------------------------------------- 982bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 9831bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsstatic jint 9842e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshCreate(JNIEnv *_env, jobject _this, RsContext con, jint vtxCount, jint idxCount) 985164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 986164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk LOG_API("nMeshCreate, con(%p), vtxCount(%i), idxCount(%i)", con, vtxCount, idxCount); 987164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk int id = (int)rsMeshCreate(con, vtxCount, idxCount); 988164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk return id; 989164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 990164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 991164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchoukstatic void 9922e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshBindVertex(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jint alloc, jint slot) 993164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 99480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshBindVertex, con(%p), Mesh(%p), Alloc(%p), slot(%i)", con, (RsMesh)mesh, (RsAllocation)alloc, slot); 99580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshBindVertex(con, (RsMesh)mesh, (RsAllocation)alloc, slot); 996164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 997164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 998164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchoukstatic void 9992e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshBindIndex(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jint alloc, jint primID, jint slot) 1000164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk{ 100180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshBindIndex, con(%p), Mesh(%p), Alloc(%p)", con, (RsMesh)mesh, (RsAllocation)alloc); 100280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk rsMeshBindIndex(con, (RsMesh)mesh, (RsAllocation)alloc, primID, slot); 100380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 100480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 10059d71e2180062931416092f26276a07e55b318f62Alex Sakhartchoukstatic void 10069d71e2180062931416092f26276a07e55b318f62Alex SakhartchouknMeshInitVertexAttribs(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 10079d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk{ 10089d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk LOG_API("nMeshInitVertexAttribs, con(%p), Mesh(%p)", con, (RsMesh)mesh); 10099d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk rsMeshInitVertexAttribs(con, (RsMesh)mesh); 10109d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk} 10119d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk 10129d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk 101380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 10142e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 101580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 101680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 101780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint vtxCount = 0; 1018581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertexBufferCount(con, (RsMesh)mesh, &vtxCount); 101980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return vtxCount; 102080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 102180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 102280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic jint 10232e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndexCount(JNIEnv *_env, jobject _this, RsContext con, jint mesh) 102480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 102580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", con, (RsMesh)mesh); 102680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk jint idxCount = 0; 1027581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndexCount(con, (RsMesh)mesh, &idxCount); 102880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk return idxCount; 102980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 103080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 103180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 10322e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetVertices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _ids, int numVtxIDs) 103380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 103480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 103580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 103680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation)); 1037581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetVertices(con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs); 103880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 103980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numVtxIDs; i ++) { 104080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&allocs[i]); 104180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 104280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 104380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 104480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk} 104580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 104680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchoukstatic void 10472e1872fe07cf8952812a417985e6e1f61bdeab5dJason SamsnMeshGetIndices(JNIEnv *_env, jobject _this, RsContext con, jint mesh, jintArray _idxIds, jintArray _primitives, int numIndices) 104880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk{ 104980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh); 105080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 105180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation)); 105280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t)); 105380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1054581cc64028e8b8f66cec8105bf530b16d5fb34ebAlex Sakhartchouk rsaMeshGetIndices(con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices); 105580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 105680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk for(jint i = 0; i < numIndices; i ++) { 105780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_idxIds, i, 1, (const jint*)&allocs[i]); 105880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk _env->SetIntArrayRegion(_primitives, i, 1, (const jint*)&prims[i]); 105980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 106080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 106180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(allocs); 106280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk free(prims); 1063164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk} 1064164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1065164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk// --------------------------------------------------------------------------- 1066164aaedf7f24827c3da84acc733325ae985930d6Alex Sakhartchouk 1067d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 106894d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samsstatic const char *classPathName = "android/renderscript/RenderScript"; 1069d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1070d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic JNINativeMethod methods[] = { 10711c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"_nInit", "()V", (void*)_nInit }, 10721c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 10731c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceCreate", "()I", (void*)nDeviceCreate }, 10741c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, 10751c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, 10761c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextGetUserMessage", "(I[I)V", (void*)nContextGetUserMessage }, 10771c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, 10781c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextPeekMessage", "(I[IZ)I", (void*)nContextPeekMessage }, 10791c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 10801c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, 10811c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams{"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, 10822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 10832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 10842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams// All methods below are thread protected in java. 1085b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextCreate", "(II)I", (void*)nContextCreate }, 108611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams{"rsnContextCreateGL", "(IIIIIIIIIIIIF)I", (void*)nContextCreateGL }, 10872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextFinish", "(I)V", (void*)nContextFinish }, 10882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority }, 10892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface }, 1090b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextDestroy", "(I)V", (void*)nContextDestroy }, 10912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextDump", "(II)V", (void*)nContextDump }, 10922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextPause", "(I)V", (void*)nContextPause }, 10932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextResume", "(I)V", (void*)nContextResume }, 10942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAssignName", "(II[B)V", (void*)nAssignName }, 1095b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnGetName", "(II)Ljava/lang/String;", (void*)nGetName }, 10962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnObjDestroy", "(II)V", (void*)nObjDestroy }, 10972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 10982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DCreateFromAssetStream", "(II)I", (void*)nFileA3DCreateFromAssetStream }, 10992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetNumIndexEntries", "(II)I", (void*)nFileA3DGetNumIndexEntries }, 1100b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnFileA3DGetIndexEntries", "(III[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, 11012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnFileA3DGetEntryByIndex", "(III)I", (void*)nFileA3DGetEntryByIndex }, 11022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1103e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk{"rsnFontCreateFromFile", "(ILjava/lang/String;FI)I", (void*)nFontCreateFromFile }, 11042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementCreate", "(IIIZI)I", (void*)nElementCreate }, 110670d4e5024298f71edb3b04867e05568f5495b4ceJason Sams{"rsnElementCreate2", "(I[I[Ljava/lang/String;[I)I", (void*)nElementCreate2 }, 11072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnElementGetNativeData", "(II[I)V", (void*)nElementGetNativeData }, 1108b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnElementGetSubElements", "(II[I[Ljava/lang/String;)V", (void*)nElementGetSubElements }, 11092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1110bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams{"rsnTypeCreate", "(IIIIIZZ)I", (void*)nTypeCreate }, 1111b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData }, 11122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1113d4b23b54445b13dacaafad97d100999abb36ea6fJason Sams{"rsnAllocationCreateTyped", "(IIII)I", (void*)nAllocationCreateTyped }, 11145476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCreateFromBitmap", "(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCreateFromBitmap }, 11155476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationCubeCreateFromBitmap","(IIILandroid/graphics/Bitmap;I)I", (void*)nAllocationCubeCreateFromBitmap }, 11165476b450e50939940dcf3f15c92335cee2fc572dJason Sams 11174ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyFromBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyFromBitmap }, 11184ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams{"rsnAllocationCopyToBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyToBitmap }, 11194ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 11205476b450e50939940dcf3f15c92335cee2fc572dJason Sams{"rsnAllocationSyncAll", "(III)V", (void*)nAllocationSyncAll }, 112149a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[II)V", (void*)nAllocationData1D_i }, 112249a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[SI)V", (void*)nAllocationData1D_s }, 112349a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[BI)V", (void*)nAllocationData1D_b }, 112449a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData1D", "(IIIII[FI)V", (void*)nAllocationData1D_f }, 112549a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationElementData1D", "(IIIII[BI)V", (void*)nAllocationElementData1D }, 112649a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[II)V", (void*)nAllocationData2D_i }, 112749a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnAllocationData2D", "(IIIIIIII[FI)V", (void*)nAllocationData2D_f }, 11282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[I)V", (void*)nAllocationRead_i }, 11292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationRead", "(II[F)V", (void*)nAllocationRead_f }, 11302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnAllocationGetType", "(II)I", (void*)nAllocationGetType}, 11315edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize1D", "(III)V", (void*)nAllocationResize1D }, 11325edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams{"rsnAllocationResize2D", "(IIII)V", (void*)nAllocationResize2D }, 11332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptBindAllocation", "(IIII)V", (void*)nScriptBindAllocation }, 11352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone }, 11362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke }, 11372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV }, 11382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI }, 1139031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines{"rsnScriptSetVarJ", "(IIIJ)V", (void*)nScriptSetVarJ }, 11402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, 1141ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines{"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD }, 11422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV }, 11436f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams{"rsnScriptSetVarObj", "(IIII)V", (void*)nScriptSetVarObj }, 11442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCBegin", "(I)V", (void*)nScriptCBegin }, 11462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnScriptCSetScript", "(I[BII)V", (void*)nScriptCSetScript }, 1147eeca435dc6134a285b9bbb832cd6a1a88f34e85fShih-wei Liao{"rsnScriptCCreate", "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", (void*)nScriptCCreate }, 11482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreBegin", "(III)V", (void*)nProgramStoreBegin }, 11502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDepthFunc", "(II)V", (void*)nProgramStoreDepthFunc }, 11512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDepthMask", "(IZ)V", (void*)nProgramStoreDepthMask }, 11522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreColorMask", "(IZZZZ)V", (void*)nProgramStoreColorMask }, 11532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreBlendFunc", "(III)V", (void*)nProgramStoreBlendFunc }, 11542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreDither", "(IZ)V", (void*)nProgramStoreDither }, 11552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramStoreCreate", "(I)I", (void*)nProgramStoreCreate }, 11562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindConstants", "(IIII)V", (void*)nProgramBindConstants }, 11582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindTexture", "(IIII)V", (void*)nProgramBindTexture }, 11592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramBindSampler", "(IIII)V", (void*)nProgramBindSampler }, 11602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 116149a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnProgramFragmentCreate", "(ILjava/lang/String;[I)I", (void*)nProgramFragmentCreate }, 11622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1163b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnProgramRasterCreate", "(IZZZ)I", (void*)nProgramRasterCreate }, 11642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramRasterSetLineWidth", "(IIF)V", (void*)nProgramRasterSetLineWidth }, 11652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnProgramRasterSetCullMode", "(III)V", (void*)nProgramRasterSetCullMode }, 11662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 116749a05d7b82956009f03acbb92a064eed054eb031Jason Sams{"rsnProgramVertexCreate", "(ILjava/lang/String;[I)I", (void*)nProgramVertexCreate }, 11682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindRootScript", "(II)V", (void*)nContextBindRootScript }, 1170b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnContextBindProgramStore", "(II)V", (void*)nContextBindProgramStore }, 11712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramFragment", "(II)V", (void*)nContextBindProgramFragment }, 11722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramVertex", "(II)V", (void*)nContextBindProgramVertex }, 11732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnContextBindProgramRaster", "(II)V", (void*)nContextBindProgramRaster }, 11742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerBegin", "(I)V", (void*)nSamplerBegin }, 11762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerSet", "(III)V", (void*)nSamplerSet }, 1177f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk{"rsnSamplerSet2", "(IIF)V", (void*)nSamplerSet2 }, 11782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnSamplerCreate", "(I)I", (void*)nSamplerCreate }, 11792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshCreate", "(III)I", (void*)nMeshCreate }, 11812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshBindVertex", "(IIII)V", (void*)nMeshBindVertex }, 11822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshBindIndex", "(IIIII)V", (void*)nMeshBindIndex }, 11839d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk{"rsnMeshInitVertexAttribs", "(II)V", (void*)nMeshInitVertexAttribs }, 11842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 11852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetVertexBufferCount", "(II)I", (void*)nMeshGetVertexBufferCount }, 11862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndexCount", "(II)I", (void*)nMeshGetIndexCount }, 1187b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk{"rsnMeshGetVertices", "(II[II)V", (void*)nMeshGetVertices }, 11882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams{"rsnMeshGetIndices", "(II[I[II)V", (void*)nMeshGetIndices }, 118980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 1190d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 1191d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1192d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsstatic int registerFuncs(JNIEnv *_env) 1193d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1194d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return android::AndroidRuntime::registerNativeMethods( 1195d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams _env, classPathName, methods, NELEM(methods)); 1196d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1197d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1198d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 1199d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1200d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsjint JNI_OnLoad(JavaVM* vm, void* reserved) 1201d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 1202d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams JNIEnv* env = NULL; 1203d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams jint result = -1; 1204d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1205d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { 1206d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: GetEnv failed\n"); 1207d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1208d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1209d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams assert(env != NULL); 1210d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1211d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (registerFuncs(env) < 0) { 1212d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams LOGE("ERROR: MediaPlayer native registration failed\n"); 1213d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams goto bail; 1214d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 1215d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1216d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams /* success -- return valid version number */ 1217d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams result = JNI_VERSION_1_4; 1218d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 1219d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsbail: 1220d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return result; 1221d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 1222