1fcf7231249822ff4dae852f1de1f799756689f91Jason Sams/* 24a36b45c72b91045db49c54d33fd7a05fc5a7a3dAlex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project 3fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * 4fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * you may not use this file except in compliance with the License. 6fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * You may obtain a copy of the License at 7fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * 8fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * 10fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * Unless required by applicable law or agreed to in writing, software 11fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * See the License for the specific language governing permissions and 14fcf7231249822ff4dae852f1de1f799756689f91Jason Sams * limitations under the License. 15fcf7231249822ff4dae852f1de1f799756689f91Jason Sams */ 16fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 17fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include "rsContext.h" 18fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include "rsScriptC.h" 19fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include "rsMatrix4x4.h" 20fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include "rsMatrix3x3.h" 21fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include "rsMatrix2x2.h" 22fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include "rsRuntime.h" 23fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 24fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include "utils/Timers.h" 25fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include "rsdCore.h" 26fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 27fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include "rsdRuntime.h" 28fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 29fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#include <time.h> 30fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 31fcf7231249822ff4dae852f1de1f799756689f91Jason Samsusing namespace android; 32fcf7231249822ff4dae852f1de1f799756689f91Jason Samsusing namespace android::renderscript; 33fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 34fcf7231249822ff4dae852f1de1f799756689f91Jason Sams#define GET_TLS() ScriptTLSStruct * tls = \ 35be8ac6ace9036262942bc8c96baa36abeb2291f3Jason Sams (ScriptTLSStruct *)pthread_getspecific(rsdgThreadTLSKey); \ 36fcf7231249822ff4dae852f1de1f799756689f91Jason Sams Context * rsc = tls->mContext; \ 37fcf7231249822ff4dae852f1de1f799756689f91Jason Sams ScriptC * sc = (ScriptC *) tls->mScript 38fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 39fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 40fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 41fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 42fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// Allocation 43fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 44fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 45fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 46fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_AllocationSyncAll2(Allocation *a, RsAllocationUsageType source) { 47fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 48fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrAllocationSyncAll(rsc, sc, a, source); 49fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 50fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 51fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_AllocationSyncAll(Allocation *a) { 52fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 53fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrAllocationSyncAll(rsc, sc, a, RS_ALLOCATION_USAGE_SCRIPT); 54fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 55fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 56304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchoukstatic void SC_AllocationCopy1DRange(Allocation *dstAlloc, 57304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk uint32_t dstOff, 58304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk uint32_t dstMip, 59304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk uint32_t count, 60304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk Allocation *srcAlloc, 61304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk uint32_t srcOff, uint32_t srcMip) { 62304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk GET_TLS(); 638650c32907b74b945dd6cc9a5bf41c12fde005dfAlex Sakhartchouk rsrAllocationCopy1DRange(rsc, dstAlloc, dstOff, dstMip, count, 648650c32907b74b945dd6cc9a5bf41c12fde005dfAlex Sakhartchouk srcAlloc, srcOff, srcMip); 65304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk} 66304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 67304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchoukstatic void SC_AllocationCopy2DRange(Allocation *dstAlloc, 68304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk uint32_t dstXoff, uint32_t dstYoff, 69304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk uint32_t dstMip, uint32_t dstFace, 70304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk uint32_t width, uint32_t height, 71304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk Allocation *srcAlloc, 72304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk uint32_t srcXoff, uint32_t srcYoff, 73304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk uint32_t srcMip, uint32_t srcFace) { 74304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk GET_TLS(); 758650c32907b74b945dd6cc9a5bf41c12fde005dfAlex Sakhartchouk rsrAllocationCopy2DRange(rsc, dstAlloc, 768650c32907b74b945dd6cc9a5bf41c12fde005dfAlex Sakhartchouk dstXoff, dstYoff, dstMip, dstFace, 778650c32907b74b945dd6cc9a5bf41c12fde005dfAlex Sakhartchouk width, height, 788650c32907b74b945dd6cc9a5bf41c12fde005dfAlex Sakhartchouk srcAlloc, 798650c32907b74b945dd6cc9a5bf41c12fde005dfAlex Sakhartchouk srcXoff, srcYoff, srcMip, srcFace); 80304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk} 81304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 82304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 83fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 84fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// Context 85fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 86fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 87fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) { 88fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 89fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrBindTexture(rsc, sc, pf, slot, a); 90fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 91fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 92fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) { 93fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 94fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrBindSampler(rsc, sc, pf, slot, s); 95fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 96fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 97fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) { 98fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 99fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrBindProgramStore(rsc, sc, ps); 100fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 101fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 102fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) { 103fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 104fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrBindProgramFragment(rsc, sc, pf); 105fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 106fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 107fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) { 108fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 109fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrBindProgramVertex(rsc, sc, pv); 110fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 111fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 112fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) { 113fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 114fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrBindProgramRaster(rsc, sc, pr); 115fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 116fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 117fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) { 118fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 119fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrBindFrameBufferObjectColorTarget(rsc, sc, a, slot); 120fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 121fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 122fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) { 123fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 124fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrBindFrameBufferObjectDepthTarget(rsc, sc, a); 125fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 126fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 127fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) { 128fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 129fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrClearFrameBufferObjectColorTarget(rsc, sc, slot); 130fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 131fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 132fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) { 133fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 134fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrClearFrameBufferObjectDepthTarget(rsc, sc); 135fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 136fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 137fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) { 138fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 139fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrClearFrameBufferObjectTargets(rsc, sc); 140fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 141fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 142fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 143fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 144fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// VP 145fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 146fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 147fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) { 148fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 149fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrVpLoadProjectionMatrix(rsc, sc, m); 150fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 151fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 152fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) { 153fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 154fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrVpLoadModelMatrix(rsc, sc, m); 155fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 156fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 157fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) { 158fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 159fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrVpLoadTextureMatrix(rsc, sc, m); 160fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 161fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 162fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) { 163fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 164fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrPfConstantColor(rsc, sc, pf, r, g, b, a); 165fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 166fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 167fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) { 168fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 169fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrVpGetProjectionMatrix(rsc, sc, m); 170fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 171fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 172fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 173fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 174fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// Drawing 175fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 176fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 177fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, 178fcf7231249822ff4dae852f1de1f799756689f91Jason Sams float x2, float y2, float z2, float u2, float v2, 179fcf7231249822ff4dae852f1de1f799756689f91Jason Sams float x3, float y3, float z3, float u3, float v3, 180fcf7231249822ff4dae852f1de1f799756689f91Jason Sams float x4, float y4, float z4, float u4, float v4) { 181fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 182fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrDrawQuadTexCoords(rsc, sc, 183fcf7231249822ff4dae852f1de1f799756689f91Jason Sams x1, y1, z1, u1, v1, 184fcf7231249822ff4dae852f1de1f799756689f91Jason Sams x2, y2, z2, u2, v2, 185fcf7231249822ff4dae852f1de1f799756689f91Jason Sams x3, y3, z3, u3, v3, 186fcf7231249822ff4dae852f1de1f799756689f91Jason Sams x4, y4, z4, u4, v4); 187fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 188fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 189fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1, 190fcf7231249822ff4dae852f1de1f799756689f91Jason Sams float x2, float y2, float z2, 191fcf7231249822ff4dae852f1de1f799756689f91Jason Sams float x3, float y3, float z3, 192fcf7231249822ff4dae852f1de1f799756689f91Jason Sams float x4, float y4, float z4) { 193fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 194fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrDrawQuad(rsc, sc, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4); 195fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 196fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 197fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) { 198fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 199fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrDrawSpriteScreenspace(rsc, sc, x, y, z, w, h); 200fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 201fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 202fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_DrawRect(float x1, float y1, float x2, float y2, float z) { 203fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 204fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrDrawRect(rsc, sc, x1, y1, x2, y2, z); 205fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 206fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 207fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_DrawMesh(Mesh *m) { 208fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 209fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrDrawMesh(rsc, sc, m); 210fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 211fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 212fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) { 213fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 214fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrDrawMeshPrimitive(rsc, sc, m, primIndex); 215fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 216fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 217fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) { 218fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 219fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrDrawMeshPrimitiveRange(rsc, sc, m, primIndex, start, len); 220fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 221fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 222fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m, 223fcf7231249822ff4dae852f1de1f799756689f91Jason Sams float *minX, float *minY, float *minZ, 224fcf7231249822ff4dae852f1de1f799756689f91Jason Sams float *maxX, float *maxY, float *maxZ) { 225fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 226fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrMeshComputeBoundingBox(rsc, sc, m, minX, minY, minZ, maxX, maxY, maxZ); 227fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 228fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 229fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 230fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 231fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 232fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// 233fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 234fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 235fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 236fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_Color(float r, float g, float b, float a) { 237fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 238fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrColor(rsc, sc, r, g, b, a); 239fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 240fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 241fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_Finish() { 242fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 243fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrFinish(rsc, sc); 244fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 245fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 246fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) { 247fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 248fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrClearColor(rsc, sc, r, g, b, a); 249fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 250fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 251fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_ClearDepth(float v) { 252fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 253fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrClearDepth(rsc, sc, v); 254fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 255fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 256fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic uint32_t SC_GetWidth() { 257fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 258fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrGetWidth(rsc, sc); 259fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 260fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 261fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic uint32_t SC_GetHeight() { 262fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 263fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrGetHeight(rsc, sc); 264fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 265fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 266fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) { 267fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 268fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrDrawTextAlloc(rsc, sc, a, x, y); 269fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 270fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 271fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_DrawText(const char *text, int x, int y) { 272fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 273fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrDrawText(rsc, sc, text, x, y); 274fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 275fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 276fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a, 277fcf7231249822ff4dae852f1de1f799756689f91Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 278fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 279fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrMeasureTextAlloc(rsc, sc, a, left, right, top, bottom); 280fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 281fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 282fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_MeasureText(const char *text, 283fcf7231249822ff4dae852f1de1f799756689f91Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 284fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 285fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrMeasureText(rsc, sc, text, left, right, top, bottom); 286fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 287fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 288fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_BindFont(Font *f) { 289fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 290fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrBindFont(rsc, sc, f); 291fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 292fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 293fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) { 294fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 295fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrFontColor(rsc, sc, r, g, b, a); 296fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 297fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 298fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 299fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 300fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 301fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// 302fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 303fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 304fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_SetObject(ObjectBase **dst, ObjectBase * src) { 305fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 306fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrSetObject(rsc, sc, dst, src); 307fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 308fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 309fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_ClearObject(ObjectBase **dst) { 310fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 311fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrClearObject(rsc, sc, dst); 312fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 313fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 314fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic bool SC_IsObject(const ObjectBase *src) { 315fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 316fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrIsObject(rsc, sc, src); 317fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 318fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 319fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 320fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 321fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 322fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic const Allocation * SC_GetAllocation(const void *ptr) { 323fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 324fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrGetAllocation(rsc, sc, ptr); 325fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 326fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 327cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Samsstatic void SC_ForEach_SAA(Script *target, 328cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *in, 329cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *out) { 330cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams GET_TLS(); 331cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams rsrForEach(rsc, sc, target, in, out, NULL, 0, NULL); 332cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams} 333cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams 334cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Samsstatic void SC_ForEach_SAAU(Script *target, 335cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *in, 336cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *out, 337cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams const void *usr) { 338fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 339fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, NULL); 340fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 341fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 342cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Samsstatic void SC_ForEach_SAAUS(Script *target, 343cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *in, 344cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *out, 345cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams const void *usr, 346cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams const RsScriptCall *call) { 347fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 348fcf7231249822ff4dae852f1de1f799756689f91Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, call); 349fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 350fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 351cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Samsstatic void SC_ForEach_SAAUL(Script *target, 352cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *in, 353cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *out, 354cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams const void *usr, 355cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams uint32_t usrLen) { 356cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams GET_TLS(); 357cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams rsrForEach(rsc, sc, target, in, out, usr, usrLen, NULL); 358cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams} 359cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams 360cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Samsstatic void SC_ForEach_SAAULS(Script *target, 361cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *in, 362cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams Allocation *out, 363cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams const void *usr, 364cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams uint32_t usrLen, 365cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams const RsScriptCall *call) { 366cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams GET_TLS(); 367cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams rsrForEach(rsc, sc, target, in, out, usr, usrLen, call); 368cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams} 369cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams 370fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 371fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 372fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 373fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// Time routines 374fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 375fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 376fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic float SC_GetDt() { 377fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 378fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrGetDt(rsc, sc); 379fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 380fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 381fcf7231249822ff4dae852f1de1f799756689f91Jason Samstime_t SC_Time(time_t *timer) { 382fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 383fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrTime(rsc, sc, timer); 384fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 385fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 386fcf7231249822ff4dae852f1de1f799756689f91Jason Samstm* SC_LocalTime(tm *local, time_t *timer) { 387fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 388fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrLocalTime(rsc, sc, local, timer); 389fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 390fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 391fcf7231249822ff4dae852f1de1f799756689f91Jason Samsint64_t SC_UptimeMillis() { 392fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 393fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrUptimeMillis(rsc, sc); 394fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 395fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 396fcf7231249822ff4dae852f1de1f799756689f91Jason Samsint64_t SC_UptimeNanos() { 397fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 398fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrUptimeNanos(rsc, sc); 399fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 400fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 401fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 402fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// Message routines 403fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 404fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 405fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic uint32_t SC_ToClient2(int cmdID, void *data, int len) { 406fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 407fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrToClient(rsc, sc, cmdID, data, len); 408fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 409fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 410fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic uint32_t SC_ToClient(int cmdID) { 411fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 412fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrToClient(rsc, sc, cmdID, NULL, 0); 413fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 414fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 415fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic uint32_t SC_ToClientBlocking2(int cmdID, void *data, int len) { 416fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 417fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, data, len); 418fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 419fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 420fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) { 421fcf7231249822ff4dae852f1de1f799756689f91Jason Sams GET_TLS(); 422fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, NULL, 0); 423fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 424fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 425fcf7231249822ff4dae852f1de1f799756689f91Jason Samsint SC_divsi3(int a, int b) { 426fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return a / b; 427fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 428fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 429fcf7231249822ff4dae852f1de1f799756689f91Jason Samsint SC_modsi3(int a, int b) { 430fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return a % b; 431fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 432fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 433fcf7231249822ff4dae852f1de1f799756689f91Jason Samsunsigned int SC_udivsi3(unsigned int a, unsigned int b) { 434fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return a / b; 435fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 436fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 437fcf7231249822ff4dae852f1de1f799756689f91Jason Samsunsigned int SC_umodsi3(unsigned int a, unsigned int b) { 438fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return a % b; 439fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 440fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 441fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugF(const char *s, float f) { 442fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %f, 0x%08x", s, f, *((int *) (&f))); 443fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 444fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugFv2(const char *s, float f1, float f2) { 445fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s {%f, %f}", s, f1, f2); 446fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 447fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugFv3(const char *s, float f1, float f2, float f3) { 448fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s {%f, %f, %f}", s, f1, f2, f3); 449fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 450fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) { 451fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4); 452fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 453fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugD(const char *s, double d) { 454fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d))); 455fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 456fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugFM4v4(const char *s, const float *f) { 457fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]); 458fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]); 459fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]); 460fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]); 461fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 462fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugFM3v3(const char *s, const float *f) { 463fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]); 464fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %f, %f, %f", s, f[1], f[4], f[7]); 465fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %f, %f, %f}",s, f[2], f[5], f[8]); 466fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 467fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugFM2v2(const char *s, const float *f) { 468fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s {%f, %f", s, f[0], f[2]); 469fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %f, %f}",s, f[1], f[3]); 470fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 471fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 472fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugI32(const char *s, int32_t i) { 473fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %i 0x%x", s, i, i); 474fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 475fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugU32(const char *s, uint32_t i) { 476fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %u 0x%x", s, i, i); 477fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 478fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugLL64(const char *s, long long ll) { 479fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %lld 0x%llx", s, ll, ll); 480fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 481fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugULL64(const char *s, unsigned long long ll) { 482fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %llu 0x%llx", s, ll, ll); 483fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 484fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 485fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic void SC_debugP(const char *s, const void *p) { 486fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGD("%s %p", s, p); 487fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 488fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 489fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 490fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 491fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// Stub implementation 492fcf7231249822ff4dae852f1de1f799756689f91Jason Sams////////////////////////////////////////////////////////////////////////////// 493fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 494fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// llvm name mangling ref 495fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// <builtin-type> ::= v # void 496fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= b # bool 497fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= c # char 498fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= a # signed char 499fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= h # unsigned char 500fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= s # short 501fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= t # unsigned short 502fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= i # int 503fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= j # unsigned int 504fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= l # long 505fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= m # unsigned long 506fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= x # long long, __int64 507fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= y # unsigned long long, __int64 508fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= f # float 509fcf7231249822ff4dae852f1de1f799756689f91Jason Sams// ::= d # double 510fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 511fcf7231249822ff4dae852f1de1f799756689f91Jason Samsstatic RsdSymbolTable gSyms[] = { 512fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "memset", (void *)&memset, true }, 513fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "memcpy", (void *)&memcpy, true }, 514fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 515fcf7231249822ff4dae852f1de1f799756689f91Jason Sams // Refcounting 516fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true }, 517fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true }, 518fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true }, 519fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 520fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true }, 521fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true }, 522fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true }, 523fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 524fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true }, 525fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true }, 526fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true }, 527fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 528fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true }, 529fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true }, 530fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true }, 531fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 532fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true }, 533fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true }, 534fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true }, 535fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 536fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true }, 537fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true }, 538fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true }, 539fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 540fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true }, 541fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true }, 542fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true }, 543fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 544fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true }, 545fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true }, 546fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true }, 547fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 548fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true }, 549fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true }, 550fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true }, 551fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 552fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true }, 553fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true }, 554fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true }, 555fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 556fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true }, 557fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true }, 558fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true }, 559fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 560fcf7231249822ff4dae852f1de1f799756689f91Jason Sams // Allocation ops 561fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true }, 562fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false }, 563fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false }, 564304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false }, 565fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true }, 566fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 567304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false }, 568304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false }, 569fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 570fcf7231249822ff4dae852f1de1f799756689f91Jason Sams // Messaging 571fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 572fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z14rsSendToClienti", (void *)&SC_ToClient, false }, 573fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false }, 574fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false }, 575fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false }, 576fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 577fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false }, 578fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false }, 579fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false }, 580fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false }, 581fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false }, 582fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false }, 583fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 584fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false }, 585fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false }, 586fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false }, 587fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 588fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false }, 589fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 590fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false }, 591fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 592fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false }, 593fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false }, 594fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 595fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 596fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false }, 597fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false }, 598fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false }, 599fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false }, 600fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 601fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false }, 602fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false }, 603fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false }, 604fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false }, 605fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 606fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false }, 607fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false }, 608fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 609fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false }, 610fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false }, 611fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false }, 612fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false }, 613fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 614fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false }, 615fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false }, 616fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 617fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false }, 618fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false }, 619fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false }, 620fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false }, 621fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false }, 622fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 623cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, false }, 624cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, false }, 625cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK16rs_script_call_t", (void *)&SC_ForEach_SAAUS, false }, 626cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, false }, 627cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK16rs_script_call_t", (void *)&SC_ForEach_SAAULS, false }, 628fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 629fcf7231249822ff4dae852f1de1f799756689f91Jason Sams // time 630fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z6rsTimePi", (void *)&SC_Time, true }, 631fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true }, 632fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true }, 633fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true }, 634fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsGetDtv", (void*)&SC_GetDt, false }, 635fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 636fcf7231249822ff4dae852f1de1f799756689f91Jason Sams // misc 637fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z5colorffff", (void *)&SC_Color, false }, 638fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z9rsgFinishv", (void *)&SC_Finish, false }, 639fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 640fcf7231249822ff4dae852f1de1f799756689f91Jason Sams // Debug 641fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcf", (void *)&SC_debugF, true }, 642fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcff", (void *)&SC_debugFv2, true }, 643fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcfff", (void *)&SC_debugFv3, true }, 644fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcffff", (void *)&SC_debugFv4, true }, 645fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcd", (void *)&SC_debugD, true }, 646fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcPK12rs_matrix4x4", (void *)&SC_debugFM4v4, true }, 647fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcPK12rs_matrix3x3", (void *)&SC_debugFM3v3, true }, 648fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcPK12rs_matrix2x2", (void *)&SC_debugFM2v2, true }, 649fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKci", (void *)&SC_debugI32, true }, 650fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcj", (void *)&SC_debugU32, true }, 651fcf7231249822ff4dae852f1de1f799756689f91Jason Sams // Both "long" and "unsigned long" need to be redirected to their 652fcf7231249822ff4dae852f1de1f799756689f91Jason Sams // 64-bit counterparts, since we have hacked Slang to use 64-bit 653fcf7231249822ff4dae852f1de1f799756689f91Jason Sams // for "long" on Arm (to be similar to Java). 654fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcl", (void *)&SC_debugLL64, true }, 655fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcm", (void *)&SC_debugULL64, true }, 656fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcx", (void *)&SC_debugLL64, true }, 657fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcy", (void *)&SC_debugULL64, true }, 658fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { "_Z7rsDebugPKcPKv", (void *)&SC_debugP, true }, 659fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 660fcf7231249822ff4dae852f1de1f799756689f91Jason Sams { NULL, NULL, false } 661fcf7231249822ff4dae852f1de1f799756689f91Jason Sams}; 662fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 663fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 664fcf7231249822ff4dae852f1de1f799756689f91Jason Samsvoid* rsdLookupRuntimeStub(void* pContext, char const* name) { 665fcf7231249822ff4dae852f1de1f799756689f91Jason Sams ScriptC *s = (ScriptC *)pContext; 666fcf7231249822ff4dae852f1de1f799756689f91Jason Sams if (!strcmp(name, "__isThreadable")) { 667fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return (void*) s->mHal.info.isThreadable; 668fcf7231249822ff4dae852f1de1f799756689f91Jason Sams } else if (!strcmp(name, "__clearThreadable")) { 669fcf7231249822ff4dae852f1de1f799756689f91Jason Sams s->mHal.info.isThreadable = false; 670fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return NULL; 671fcf7231249822ff4dae852f1de1f799756689f91Jason Sams } 672fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 673fcf7231249822ff4dae852f1de1f799756689f91Jason Sams RsdSymbolTable *syms = gSyms; 674fcf7231249822ff4dae852f1de1f799756689f91Jason Sams const RsdSymbolTable *sym = rsdLookupSymbolMath(name); 675fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 676fcf7231249822ff4dae852f1de1f799756689f91Jason Sams if (!sym) { 677fcf7231249822ff4dae852f1de1f799756689f91Jason Sams while (syms->mPtr) { 678fcf7231249822ff4dae852f1de1f799756689f91Jason Sams if (!strcmp(syms->mName, name)) { 679fcf7231249822ff4dae852f1de1f799756689f91Jason Sams sym = syms; 680fcf7231249822ff4dae852f1de1f799756689f91Jason Sams } 681fcf7231249822ff4dae852f1de1f799756689f91Jason Sams syms++; 682fcf7231249822ff4dae852f1de1f799756689f91Jason Sams } 683fcf7231249822ff4dae852f1de1f799756689f91Jason Sams } 684fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 685fcf7231249822ff4dae852f1de1f799756689f91Jason Sams if (sym) { 686fcf7231249822ff4dae852f1de1f799756689f91Jason Sams s->mHal.info.isThreadable &= sym->threadable; 687fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return sym->mPtr; 688fcf7231249822ff4dae852f1de1f799756689f91Jason Sams } 689fcf7231249822ff4dae852f1de1f799756689f91Jason Sams LOGE("ScriptC sym lookup failed for %s", name); 690fcf7231249822ff4dae852f1de1f799756689f91Jason Sams return NULL; 691fcf7231249822ff4dae852f1de1f799756689f91Jason Sams} 692fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 693fcf7231249822ff4dae852f1de1f799756689f91Jason Sams 694