10f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/* 20f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Copyright (C) 2011 The Android Open Source Project 30f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 40f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 50f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * you may not use this file except in compliance with the License. 60f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * You may obtain a copy of the License at 70f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 80f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * http://www.apache.org/licenses/LICENSE-2.0 90f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Unless required by applicable law or agreed to in writing, software 110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See the License for the specific language governing permissions and 140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * limitations under the License. 150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsContext.h" 180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsScriptC.h" 190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsMatrix4x4.h" 200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsMatrix3x3.h" 210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsMatrix2x2.h" 220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsRuntime.h" 230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "utils/Timers.h" 250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsdCore.h" 260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsdBcc.h" 270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsdRuntime.h" 2933b0a9fe4f0fc7bd26378420af259d24036caa22Stephen Hines//#include "rsdPath.h" 300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsdAllocation.h" 310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include <time.h> 330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesusing namespace android; 350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesusing namespace android::renderscript; 360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define GET_TLS() ScriptTLSStruct * tls = \ 380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines (ScriptTLSStruct *)pthread_getspecific(rsdgThreadTLSKey); \ 390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Context * rsc = tls->mContext; \ 400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ScriptC * sc = (ScriptC *) tls->mScript 410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef float float2 __attribute__((ext_vector_type(2))); 430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef float float3 __attribute__((ext_vector_type(3))); 440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef float float4 __attribute__((ext_vector_type(4))); 450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef char char2 __attribute__((ext_vector_type(2))); 460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef char char3 __attribute__((ext_vector_type(3))); 470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef char char4 __attribute__((ext_vector_type(4))); 480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned char uchar2 __attribute__((ext_vector_type(2))); 490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned char uchar3 __attribute__((ext_vector_type(3))); 500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned char uchar4 __attribute__((ext_vector_type(4))); 510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef short short2 __attribute__((ext_vector_type(2))); 520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef short short3 __attribute__((ext_vector_type(3))); 530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef short short4 __attribute__((ext_vector_type(4))); 540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned short ushort2 __attribute__((ext_vector_type(2))); 550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned short ushort3 __attribute__((ext_vector_type(3))); 560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned short ushort4 __attribute__((ext_vector_type(4))); 570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef int32_t int2 __attribute__((ext_vector_type(2))); 580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef int32_t int3 __attribute__((ext_vector_type(3))); 590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef int32_t int4 __attribute__((ext_vector_type(4))); 600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint32_t uint2 __attribute__((ext_vector_type(2))); 610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint32_t uint3 __attribute__((ext_vector_type(3))); 620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint32_t uint4 __attribute__((ext_vector_type(4))); 630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef long long long2 __attribute__((ext_vector_type(2))); 640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef long long long3 __attribute__((ext_vector_type(3))); 650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef long long long4 __attribute__((ext_vector_type(4))); 660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned long long ulong2 __attribute__((ext_vector_type(2))); 670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned long long ulong3 __attribute__((ext_vector_type(3))); 680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned long long ulong4 __attribute__((ext_vector_type(4))); 690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// Allocation 730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_AllocationSyncAll2(Allocation *a, RsAllocationUsageType source) { 770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrAllocationSyncAll(rsc, sc, a, source); 790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_AllocationSyncAll(Allocation *a) { 820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrAllocationSyncAll(rsc, sc, a, RS_ALLOCATION_USAGE_SCRIPT); 840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_AllocationCopy1DRange(Allocation *dstAlloc, 870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t dstOff, 880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t dstMip, 890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t count, 900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *srcAlloc, 910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t srcOff, uint32_t srcMip) { 920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrAllocationCopy1DRange(rsc, dstAlloc, dstOff, dstMip, count, 940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines srcAlloc, srcOff, srcMip); 950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_AllocationCopy2DRange(Allocation *dstAlloc, 980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t dstXoff, uint32_t dstYoff, 990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t dstMip, uint32_t dstFace, 1000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t width, uint32_t height, 1010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *srcAlloc, 1020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t srcXoff, uint32_t srcYoff, 1030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t srcMip, uint32_t srcFace) { 1040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrAllocationCopy2DRange(rsc, dstAlloc, 1060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines dstXoff, dstYoff, dstMip, dstFace, 1070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines width, height, 1080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines srcAlloc, 1090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines srcXoff, srcYoff, srcMip, srcFace); 1100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 1140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// 1150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 1160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_SetObject(ObjectBase **dst, ObjectBase * src) { 1180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrSetObject(rsc, sc, dst, src); 1200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_ClearObject(ObjectBase **dst) { 1230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrClearObject(rsc, sc, dst); 1250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic bool SC_IsObject(const ObjectBase *src) { 1280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrIsObject(rsc, sc, src); 1300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic const Allocation * SC_GetAllocation(const void *ptr) { 1360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsdScriptGetAllocationForPointer(rsc, sc, ptr); 1380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_ForEach_SAA(Script *target, 1410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *in, 1420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *out) { 1430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrForEach(rsc, sc, target, in, out, NULL, 0, NULL); 1450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_ForEach_SAAU(Script *target, 1480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *in, 1490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *out, 1500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const void *usr) { 1510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrForEach(rsc, sc, target, in, out, usr, 0, NULL); 1530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_ForEach_SAAUS(Script *target, 1560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *in, 1570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *out, 1580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const void *usr, 1590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const RsScriptCall *call) { 1600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrForEach(rsc, sc, target, in, out, usr, 0, call); 1620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_ForEach_SAAUL(Script *target, 1650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *in, 1660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *out, 1670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const void *usr, 1680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t usrLen) { 1690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrForEach(rsc, sc, target, in, out, usr, usrLen, NULL); 1710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_ForEach_SAAULS(Script *target, 1740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *in, 1750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Allocation *out, 1760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const void *usr, 1770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t usrLen, 1780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const RsScriptCall *call) { 1790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsrForEach(rsc, sc, target, in, out, usr, usrLen, call); 1810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 1860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// Time routines 1870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 1880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic float SC_GetDt() { 1900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrGetDt(rsc, sc); 1920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestime_t SC_Time(time_t *timer) { 1950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 1960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrTime(rsc, sc, timer); 1970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestm* SC_LocalTime(tm *local, time_t *timer) { 2000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 2010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrLocalTime(rsc, sc, local, timer); 2020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesint64_t SC_UptimeMillis() { 2050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 2060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrUptimeMillis(rsc, sc); 2070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesint64_t SC_UptimeNanos() { 2100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 2110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrUptimeNanos(rsc, sc); 2120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 2150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// Message routines 2160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 2170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic uint32_t SC_ToClient2(int cmdID, void *data, int len) { 2190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 2200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrToClient(rsc, sc, cmdID, data, len); 2210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic uint32_t SC_ToClient(int cmdID) { 2240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 2250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrToClient(rsc, sc, cmdID, NULL, 0); 2260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic uint32_t SC_ToClientBlocking2(int cmdID, void *data, int len) { 2290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 2300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrToClientBlocking(rsc, sc, cmdID, data, len); 2310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic uint32_t SC_ToClientBlocking(int cmdID) { 2340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines GET_TLS(); 2350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return rsrToClientBlocking(rsc, sc, cmdID, NULL, 0); 2360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesint SC_divsi3(int a, int b) { 2390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return a / b; 2400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesint SC_modsi3(int a, int b) { 2430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return a % b; 2440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesunsigned int SC_udivsi3(unsigned int a, unsigned int b) { 2470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return a / b; 2480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesunsigned int SC_umodsi3(unsigned int a, unsigned int b) { 2510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return a % b; 2520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugF(const char *s, float f) { 2550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %f, 0x%08x", s, f, *((int *) (&f))); 2560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugFv2(const char *s, float f1, float f2) { 2580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%f, %f}", s, f1, f2); 2590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugFv3(const char *s, float f1, float f2, float f3) { 2610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%f, %f, %f}", s, f1, f2, f3); 2620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) { 2640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4); 2650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugF2(const char *s, float2 f) { 2670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%f, %f}", s, f.x, f.y); 2680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugF3(const char *s, float3 f) { 2700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%f, %f, %f}", s, f.x, f.y, f.z); 2710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugF4(const char *s, float4 f) { 2730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%f, %f, %f, %f}", s, f.x, f.y, f.z, f.w); 2740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugD(const char *s, double d) { 2760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d))); 2770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugFM4v4(const char *s, const float *f) { 2790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]); 2800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]); 2810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]); 2820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]); 2830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugFM3v3(const char *s, const float *f) { 2850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]); 2860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %f, %f, %f", s, f[1], f[4], f[7]); 2870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %f, %f, %f}",s, f[2], f[5], f[8]); 2880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugFM2v2(const char *s, const float *f) { 2900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%f, %f", s, f[0], f[2]); 2910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %f, %f}",s, f[1], f[3]); 2920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugI8(const char *s, char c) { 2940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %hhd 0x%hhx", s, c, (unsigned char)c); 2950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugC2(const char *s, char2 c) { 2970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hhd, %hhd} 0x%hhx 0x%hhx", s, c.x, c.y, (unsigned char)c.x, (unsigned char)c.y); 2980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugC3(const char *s, char3 c) { 3000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hhd, %hhd, %hhd} 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, (unsigned char)c.x, (unsigned char)c.y, (unsigned char)c.z); 3010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugC4(const char *s, char4 c) { 3030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hhd, %hhd, %hhd, %hhd} 0x%hhx 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, c.w, (unsigned char)c.x, (unsigned char)c.y, (unsigned char)c.z, (unsigned char)c.w); 3040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugU8(const char *s, unsigned char c) { 3060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %hhu 0x%hhx", s, c, c); 3070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUC2(const char *s, uchar2 c) { 3090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hhu, %hhu} 0x%hhx 0x%hhx", s, c.x, c.y, c.x, c.y); 3100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUC3(const char *s, uchar3 c) { 3120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hhu, %hhu, %hhu} 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, c.x, c.y, c.z); 3130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUC4(const char *s, uchar4 c) { 3150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hhu, %hhu, %hhu, %hhu} 0x%hhx 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, c.w, c.x, c.y, c.z, c.w); 3160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugI16(const char *s, short c) { 3180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %hd 0x%hx", s, c, c); 3190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugS2(const char *s, short2 c) { 3210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hd, %hd} 0x%hx 0x%hx", s, c.x, c.y, c.x, c.y); 3220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugS3(const char *s, short3 c) { 3240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hd, %hd, %hd} 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.x, c.y, c.z); 3250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugS4(const char *s, short4 c) { 3270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hd, %hd, %hd, %hd} 0x%hx 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.w, c.x, c.y, c.z, c.w); 3280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugU16(const char *s, unsigned short c) { 3300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %hu 0x%hx", s, c, c); 3310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUS2(const char *s, ushort2 c) { 3330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hu, %hu} 0x%hx 0x%hx", s, c.x, c.y, c.x, c.y); 3340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUS3(const char *s, ushort3 c) { 3360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hu, %hu, %hu} 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.x, c.y, c.z); 3370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUS4(const char *s, ushort4 c) { 3390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%hu, %hu, %hu, %hu} 0x%hx 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.w, c.x, c.y, c.z, c.w); 3400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugI32(const char *s, int32_t i) { 3420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %d 0x%x", s, i, i); 3430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugI2(const char *s, int2 i) { 3450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%d, %d} 0x%x 0x%x", s, i.x, i.y, i.x, i.y); 3460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugI3(const char *s, int3 i) { 3480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%d, %d, %d} 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.x, i.y, i.z); 3490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugI4(const char *s, int4 i) { 3510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%d, %d, %d, %d} 0x%x 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.w, i.x, i.y, i.z, i.w); 3520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugU32(const char *s, uint32_t i) { 3540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %u 0x%x", s, i, i); 3550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUI2(const char *s, uint2 i) { 3570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%u, %u} 0x%x 0x%x", s, i.x, i.y, i.x, i.y); 3580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUI3(const char *s, uint3 i) { 3600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%u, %u, %u} 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.x, i.y, i.z); 3610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUI4(const char *s, uint4 i) { 3630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%u, %u, %u, %u} 0x%x 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.w, i.x, i.y, i.z, i.w); 3640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugLL64(const char *s, long long ll) { 3660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %lld 0x%llx", s, ll, ll); 3670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugL2(const char *s, long2 ll) { 3690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%lld, %lld} 0x%llx 0x%llx", s, ll.x, ll.y, ll.x, ll.y); 3700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugL3(const char *s, long3 ll) { 3720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%lld, %lld, %lld} 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.x, ll.y, ll.z); 3730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugL4(const char *s, long4 ll) { 3750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%lld, %lld, %lld, %lld} 0x%llx 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.w, ll.x, ll.y, ll.z, ll.w); 3760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugULL64(const char *s, unsigned long long ll) { 3780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %llu 0x%llx", s, ll, ll); 3790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUL2(const char *s, ulong2 ll) { 3810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%llu, %llu} 0x%llx 0x%llx", s, ll.x, ll.y, ll.x, ll.y); 3820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUL3(const char *s, ulong3 ll) { 3840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%llu, %llu, %llu} 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.x, ll.y, ll.z); 3850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugUL4(const char *s, ulong4 ll) { 3870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s {%llu, %llu, %llu, %llu} 0x%llx 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.w, ll.x, ll.y, ll.z, ll.w); 3880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic void SC_debugP(const char *s, const void *p) { 3900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGD("%s %p", s, p); 3910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 3920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 3950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// Stub implementation 3960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines////////////////////////////////////////////////////////////////////////////// 3970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// llvm name mangling ref 3990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// <builtin-type> ::= v # void 4000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= b # bool 4010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= c # char 4020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= a # signed char 4030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= h # unsigned char 4040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= s # short 4050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= t # unsigned short 4060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= i # int 4070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= j # unsigned int 4080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= l # long 4090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= m # unsigned long 4100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= x # long long, __int64 4110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= y # unsigned long long, __int64 4120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= f # float 4130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// ::= d # double 4140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic RsdSymbolTable gSyms[] = { 4160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "memset", (void *)&memset, true }, 4170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "memcpy", (void *)&memcpy, true }, 4180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // Refcounting 4200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true }, 4210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true }, 4220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true }, 4230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true }, 4250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true }, 4260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true }, 4270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true }, 4290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true }, 4300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true }, 4310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true }, 4330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true }, 4340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true }, 4350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true }, 4370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true }, 4380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true }, 4390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP7rs_pathS_", (void *)&SC_SetObject, true }, 4410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP7rs_path", (void *)&SC_ClearObject, true }, 4420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject7rs_path", (void *)&SC_IsObject, true }, 4430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true }, 4450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true }, 4460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true }, 4470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true }, 4490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true }, 4500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true }, 4510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true }, 4530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true }, 4540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true }, 4550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true }, 4570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true }, 4580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true }, 4590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true }, 4610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true }, 4620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true }, 4630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true }, 4650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true }, 4660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true }, 4670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // Allocation ops 4690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true }, 4700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false }, 4710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false }, 4720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false }, 4730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true }, 4740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false }, 4750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false }, 4760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // Messaging 4780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z14rsSendToClienti", (void *)&SC_ToClient, false }, 4800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false }, 4810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false }, 4820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false }, 4830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true }, 4850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true }, 4860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK16rs_script_call_t", (void *)&SC_ForEach_SAAUS, true }, 4870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true }, 4880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK16rs_script_call_t", (void *)&SC_ForEach_SAAULS, true }, 4890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // time 4910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z6rsTimePi", (void *)&SC_Time, true }, 4920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true }, 4930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true }, 4940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true }, 4950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsGetDtv", (void*)&SC_GetDt, false }, 4960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // Debug 4980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcf", (void *)&SC_debugF, true }, 4990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcff", (void *)&SC_debugFv2, true }, 5000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcfff", (void *)&SC_debugFv3, true }, 5010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcffff", (void *)&SC_debugFv4, true }, 5020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_f", (void *)&SC_debugF2, true }, 5030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_f", (void *)&SC_debugF3, true }, 5040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_f", (void *)&SC_debugF4, true }, 5050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcd", (void *)&SC_debugD, true }, 5060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcPK12rs_matrix4x4", (void *)&SC_debugFM4v4, true }, 5070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcPK12rs_matrix3x3", (void *)&SC_debugFM3v3, true }, 5080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcPK12rs_matrix2x2", (void *)&SC_debugFM2v2, true }, 5090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcc", (void *)&SC_debugI8, true }, 5100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_c", (void *)&SC_debugC2, true }, 5110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_c", (void *)&SC_debugC3, true }, 5120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_c", (void *)&SC_debugC4, true }, 5130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKch", (void *)&SC_debugU8, true }, 5140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_h", (void *)&SC_debugUC2, true }, 5150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_h", (void *)&SC_debugUC3, true }, 5160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_h", (void *)&SC_debugUC4, true }, 5170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcs", (void *)&SC_debugI16, true }, 5180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_s", (void *)&SC_debugS2, true }, 5190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_s", (void *)&SC_debugS3, true }, 5200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_s", (void *)&SC_debugS4, true }, 5210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKct", (void *)&SC_debugU16, true }, 5220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_t", (void *)&SC_debugUS2, true }, 5230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_t", (void *)&SC_debugUS3, true }, 5240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_t", (void *)&SC_debugUS4, true }, 5250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKci", (void *)&SC_debugI32, true }, 5260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_i", (void *)&SC_debugI2, true }, 5270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_i", (void *)&SC_debugI3, true }, 5280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_i", (void *)&SC_debugI4, true }, 5290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcj", (void *)&SC_debugU32, true }, 5300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_j", (void *)&SC_debugUI2, true }, 5310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_j", (void *)&SC_debugUI3, true }, 5320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_j", (void *)&SC_debugUI4, true }, 5330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // Both "long" and "unsigned long" need to be redirected to their 5340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // 64-bit counterparts, since we have hacked Slang to use 64-bit 5350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // for "long" on Arm (to be similar to Java). 5360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcl", (void *)&SC_debugLL64, true }, 5370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_l", (void *)&SC_debugL2, true }, 5380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_l", (void *)&SC_debugL3, true }, 5390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_l", (void *)&SC_debugL4, true }, 5400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcm", (void *)&SC_debugULL64, true }, 5410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_m", (void *)&SC_debugUL2, true }, 5420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_m", (void *)&SC_debugUL3, true }, 5430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_m", (void *)&SC_debugUL4, true }, 5440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcx", (void *)&SC_debugLL64, true }, 5450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_x", (void *)&SC_debugL2, true }, 5460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_x", (void *)&SC_debugL3, true }, 5470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_x", (void *)&SC_debugL4, true }, 5480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcy", (void *)&SC_debugULL64, true }, 5490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv2_y", (void *)&SC_debugUL2, true }, 5500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv3_y", (void *)&SC_debugUL3, true }, 5510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcDv4_y", (void *)&SC_debugUL4, true }, 5520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { "_Z7rsDebugPKcPKv", (void *)&SC_debugP, true }, 5530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines { NULL, NULL, false } 5550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}; 5560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesvoid* rsdLookupRuntimeStub(void* pContext, char const* name) { 5590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ScriptC *s = (ScriptC *)pContext; 5600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RsdSymbolTable *syms = gSyms; 5610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines const RsdSymbolTable *sym = rsdLookupSymbolMath(name); 5620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines if (!sym) { 5640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines while (syms->mPtr) { 5650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines if (!strcmp(syms->mName, name)) { 5660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines sym = syms; 5670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines } 5680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines syms++; 5690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines } 5700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines } 5710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines if (sym) { 5730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines s->mHal.info.isThreadable &= sym->threadable; 5740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return sym->mPtr; 5750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines } 5760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGE("ScriptC sym lookup failed for %s", name); 5770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return NULL; 5780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 5790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 581