rsdRuntimeStubs.cpp revision 87fe59a2f4d4c74539bfa0bff5f9a7e320e99415
187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams/* 287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * Copyright (C) 2009 The Android Open Source Project 387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * 487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * you may not use this file except in compliance with the License. 687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * You may obtain a copy of the License at 787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * 887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * 1087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * Unless required by applicable law or agreed to in writing, software 1187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * See the License for the specific language governing permissions and 1487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * limitations under the License. 1587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams */ 1687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 1787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsContext.h" 1887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsScriptC.h" 1987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsMatrix4x4.h" 2087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsMatrix3x3.h" 2187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsMatrix2x2.h" 2287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsRuntime.h" 2387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "utils/Timers.h" 2587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsdCore.h" 2687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsdRuntime.h" 2887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include <time.h> 3087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android; 3287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android::renderscript; 3387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#define GET_TLS() ScriptTLSStruct * tls = \ 3587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams (ScriptTLSStruct *)pthread_getspecific(Context::gThreadTLSKey); \ 3687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams Context * rsc = tls->mContext; \ 3787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams ScriptC * sc = (ScriptC *) tls->mScript 3887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 4287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Allocation 4387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 4487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_allocGetDimX(Allocation *a) { 4687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGE("SC_allocGetDimX %p", a); 4787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a->mHal.state.dimensionX; 4887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 4987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 5087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_allocGetDimY(Allocation *a) { 5187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a->mHal.state.dimensionY; 5287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 5387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 5487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_allocGetDimZ(Allocation *a) { 5587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a->mHal.state.dimensionZ; 5687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 5787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 5887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_allocGetDimLOD(Allocation *a) { 5987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a->mHal.state.hasMipmaps; 6087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 6187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 6287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_allocGetDimFaces(Allocation *a) { 6387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a->mHal.state.hasFaces; 6487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 6587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 6687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic const void * SC_getElementAtX(Allocation *a, uint32_t x) { 6787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const uint8_t *p = (const uint8_t *)a->getPtr(); 6887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return &p[a->mHal.state.elementSizeBytes * x]; 6987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 7087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic const void * SC_getElementAtXY(Allocation *a, uint32_t x, uint32_t y) { 7287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const uint8_t *p = (const uint8_t *)a->getPtr(); 7387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return &p[a->mHal.state.elementSizeBytes * (x + y * a->mHal.state.dimensionX)]; 7487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 7587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic const void * SC_getElementAtXYZ(Allocation *a, uint32_t x, uint32_t y, uint32_t z) { 7787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const uint8_t *p = (const uint8_t *)a->getPtr(); 7887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return &p[a->mHal.state.elementSizeBytes * (x + y * a->mHal.state.dimensionX + 7987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams z * a->mHal.state.dimensionX * a->mHal.state.dimensionY)]; 8087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 8187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 8287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll2(Allocation *a, RsAllocationUsageType source) { 8387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 8487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrAllocationSyncAll(rsc, sc, a, source); 8587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 8687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 8787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll(Allocation *a) { 8887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 8987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrAllocationSyncAll(rsc, sc, a, RS_ALLOCATION_USAGE_SCRIPT); 9087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 9187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 9287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsconst Allocation * SC_getAllocation(const void *ptr) { 9387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 9487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetAllocation(rsc, sc, ptr); 9587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 9687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 9787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 9887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 9987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context 10087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 10187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 10287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) { 10387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 10487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindTexture(rsc, sc, pf, slot, a); 10587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 10687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 10787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) { 10887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 10987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindSampler(rsc, sc, pf, slot, s); 11087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 11187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 11287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) { 11387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 11487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramStore(rsc, sc, ps); 11587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 11687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 11787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) { 11887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 11987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramFragment(rsc, sc, pf); 12087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 12187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 12287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) { 12387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 12487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramVertex(rsc, sc, pv); 12587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 12687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 12787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) { 12887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 12987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramRaster(rsc, sc, pr); 13087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 13187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 13287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) { 13387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 13487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFrameBufferObjectColorTarget(rsc, sc, a, slot); 13587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 13687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 13787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) { 13887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 13987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFrameBufferObjectDepthTarget(rsc, sc, a); 14087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 14187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 14287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) { 14387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 14487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectColorTarget(rsc, sc, slot); 14587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 14687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 14787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) { 14887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 14987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectDepthTarget(rsc, sc); 15087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 15187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 15287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) { 15387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 15487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectTargets(rsc, sc); 15587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 15687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 15787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 15887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 15987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP 16087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 16187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 16287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) { 16387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 16487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadProjectionMatrix(rsc, sc, m); 16587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 16687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 16787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) { 16887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 16987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadModelMatrix(rsc, sc, m); 17087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 17187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 17287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) { 17387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 17487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadTextureMatrix(rsc, sc, m); 17587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 17687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 17787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) { 17887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 17987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrPfConstantColor(rsc, sc, pf, r, g, b, a); 18087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 18187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 18287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) { 18387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 18487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpGetProjectionMatrix(rsc, sc, m); 18587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 18687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 18787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 18887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 18987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing 19087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 19187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, 19387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x2, float y2, float z2, float u2, float v2, 19487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x3, float y3, float z3, float u3, float v3, 19587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x4, float y4, float z4, float u4, float v4) { 19687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 19787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawQuadTexCoords(rsc, sc, 19887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x1, y1, z1, u1, v1, 19987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x2, y2, z2, u2, v2, 20087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x3, y3, z3, u3, v3, 20187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x4, y4, z4, u4, v4); 20287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 20387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 20487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1, 20587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x2, float y2, float z2, 20687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x3, float y3, float z3, 20787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x4, float y4, float z4) { 20887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 20987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawQuad(rsc, sc, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4); 21087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 21187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 21287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) { 21387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 21487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawSpriteScreenspace(rsc, sc, x, y, z, w, h); 21587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 21687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 21787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawRect(float x1, float y1, float x2, float y2, float z) { 21887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 21987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawRect(rsc, sc, x1, y1, x2, y2, z); 22087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 22187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMesh(Mesh *m) { 22387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 22487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMesh(rsc, sc, m); 22587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 22687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) { 22887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 22987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMeshPrimitive(rsc, sc, m, primIndex); 23087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 23187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 23287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) { 23387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 23487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMeshPrimitiveRange(rsc, sc, m, primIndex, start, len); 23587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 23687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 23787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m, 23887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float *minX, float *minY, float *minZ, 23987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float *maxX, float *maxY, float *maxZ) { 24087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 24187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeshComputeBoundingBox(rsc, sc, m, minX, minY, minZ, maxX, maxY, maxZ); 24287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 24387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 24487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 24587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 24687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 24787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// 24887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 24987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 25087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 25187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Color(float r, float g, float b, float a) { 25287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 25387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrColor(rsc, sc, r, g, b, a); 25487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 25587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 25687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Finish() { 25787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 25887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrFinish(rsc, sc); 25987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 26087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 26187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) { 26287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 26387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearColor(rsc, sc, r, g, b, a); 26487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 26587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 26687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearDepth(float v) { 26787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 26887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearDepth(rsc, sc, v); 26987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 27087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 27187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetWidth() { 27287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 27387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetWidth(rsc, sc); 27487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 27587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 27687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetHeight() { 27787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 27887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetHeight(rsc, sc); 27987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 28087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 28187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) { 28287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 28387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawTextAlloc(rsc, sc, a, x, y); 28487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 28587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 28687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawText(const char *text, int x, int y) { 28787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 28887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawText(rsc, sc, text, x, y); 28987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 29087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 29187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a, 29287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 29387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 29487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeasureTextAlloc(rsc, sc, a, left, right, top, bottom); 29587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 29687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 29787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureText(const char *text, 29887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 29987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 30087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeasureText(rsc, sc, text, left, right, top, bottom); 30187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 30287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 30387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFont(Font *f) { 30487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 30587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFont(rsc, sc, f); 30687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 30787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 30887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) { 30987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 31087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrFontColor(rsc, sc, r, g, b, a); 31187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 31287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 31387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 31487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 31587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 31687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// 31787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 31887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 31987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_SetObject(ObjectBase **dst, ObjectBase * src) { 32087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 32187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrSetObject(rsc, sc, dst, src); 32287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 32387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 32487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearObject(ObjectBase **dst) { 32587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 32687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearObject(rsc, sc, dst); 32787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 32887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 32987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic bool SC_IsObject(const ObjectBase *src) { 33087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 33187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrIsObject(rsc, sc, src); 33287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 33387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic const Allocation * SC_GetAllocation(const void *ptr) { 33887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 33987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetAllocation(rsc, sc, ptr); 34087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 34187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 34287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ForEach(Script *target, 34387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams Allocation *in, 34487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams Allocation *out, 34587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const void *usr, 34687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const RsScriptCall *call) { 34787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 34887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, NULL); 34987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 35087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ForEach2(Script *target, 35287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams Allocation *in, 35387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams Allocation *out, 35487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const void *usr, 35587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const RsScriptCall *call) { 35687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 35787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, call); 35887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 35987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 36087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 36187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 36287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 36387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines 36487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 36587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 36687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic float SC_GetDt() { 36787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 36887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetDt(rsc, sc); 36987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 37087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 37187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t SC_Time(time_t *timer) { 37287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 37387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrTime(rsc, sc, timer); 37487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 37587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 37687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* SC_LocalTime(tm *local, time_t *timer) { 37787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 37887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrLocalTime(rsc, sc, local, timer); 37987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 38087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 38187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeMillis() { 38287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 38387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrUptimeMillis(rsc, sc); 38487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 38587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 38687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeNanos() { 38787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 38887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrUptimeNanos(rsc, sc); 38987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 39087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 39187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 39287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines 39387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 39487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 39587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient2(int cmdID, void *data, int len) { 39687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 39787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClient(rsc, sc, cmdID, data, len); 39887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 39987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 40087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient(int cmdID) { 40187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 40287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClient(rsc, sc, cmdID, NULL, 0); 40387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 40487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 40587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking2(int cmdID, void *data, int len) { 40687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 40787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, data, len); 40887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 40987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 41087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) { 41187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 41287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, NULL, 0); 41387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 41487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 41587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint SC_divsi3(int a, int b) { 41687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a / b; 41787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 41887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 41987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint SC_modsi3(int a, int b) { 42087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a % b; 42187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 42287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 42387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsunsigned int SC_udivsi3(unsigned int a, unsigned int b) { 42487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a / b; 42587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 42687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 42787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsunsigned int SC_umodsi3(unsigned int a, unsigned int b) { 42887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a % b; 42987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 43087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 43187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugF(const char *s, float f) { 43287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %f, 0x%08x", s, f, *((int *) (&f))); 43387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 43487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv2(const char *s, float f1, float f2) { 43587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s {%f, %f}", s, f1, f2); 43687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 43787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv3(const char *s, float f1, float f2, float f3) { 43887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s {%f, %f, %f}", s, f1, f2, f3); 43987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 44087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) { 44187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4); 44287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 44387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugD(const char *s, double d) { 44487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d))); 44587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 44687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM4v4(const char *s, const float *f) { 44787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]); 44887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]); 44987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]); 45087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]); 45187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 45287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM3v3(const char *s, const float *f) { 45387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]); 45487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %f, %f, %f", s, f[1], f[4], f[7]); 45587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %f, %f, %f}",s, f[2], f[5], f[8]); 45687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 45787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM2v2(const char *s, const float *f) { 45887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s {%f, %f", s, f[0], f[2]); 45987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %f, %f}",s, f[1], f[3]); 46087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 46187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 46287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugI32(const char *s, int32_t i) { 46387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %i 0x%x", s, i, i); 46487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 46587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugU32(const char *s, uint32_t i) { 46687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %u 0x%x", s, i, i); 46787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 46887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugLL64(const char *s, long long ll) { 46987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %lld 0x%llx", s, ll, ll); 47087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 47187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugULL64(const char *s, unsigned long long ll) { 47287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %llu 0x%llx", s, ll, ll); 47387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 47487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 47587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugP(const char *s, const void *p) { 47687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGD("%s %p", s, p); 47787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 47887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 47987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 48087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 48187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Stub implementation 48287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 48387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 48487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// llvm name mangling ref 48587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// <builtin-type> ::= v # void 48687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= b # bool 48787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= c # char 48887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= a # signed char 48987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= h # unsigned char 49087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= s # short 49187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= t # unsigned short 49287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= i # int 49387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= j # unsigned int 49487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= l # long 49587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= m # unsigned long 49687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= x # long long, __int64 49787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= y # unsigned long long, __int64 49887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= f # float 49987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= d # double 50087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 50187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic RsdSymbolTable gSyms[] = { 50287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "__divsi3", (void *)&SC_divsi3, true }, 50387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "__modsi3", (void *)&SC_modsi3, true }, 50487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "__udivsi3", (void *)&SC_udivsi3, true }, 50587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "__umodsi3", (void *)&SC_umodsi3, true }, 50687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "memset", (void *)&memset, true }, 50787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "memcpy", (void *)&memcpy, true }, 50887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 50987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Refcounting 51087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true }, 51187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true }, 51287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true }, 51387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 51487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true }, 51587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true }, 51687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true }, 51787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 51887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true }, 51987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true }, 52087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true }, 52187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 52287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true }, 52387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true }, 52487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true }, 52587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 52687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true }, 52787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true }, 52887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true }, 52987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 53087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true }, 53187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true }, 53287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true }, 53387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 53487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true }, 53587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true }, 53687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true }, 53787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 53887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true }, 53987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true }, 54087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true }, 54187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 54287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true }, 54387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true }, 54487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true }, 54587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 54687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true }, 54787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true }, 54887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true }, 54987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 55087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true }, 55187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true }, 55287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true }, 55387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 55487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Allocation ops 55587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsAllocationGetDimX13rs_allocation", (void *)&SC_allocGetDimX, true }, 55687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsAllocationGetDimY13rs_allocation", (void *)&SC_allocGetDimY, true }, 55787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsAllocationGetDimZ13rs_allocation", (void *)&SC_allocGetDimZ, true }, 55887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z21rsAllocationGetDimLOD13rs_allocation", (void *)&SC_allocGetDimLOD, true }, 55987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z23rsAllocationGetDimFaces13rs_allocation", (void *)&SC_allocGetDimFaces, true }, 56087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 56187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsGetElementAt13rs_allocationj", (void *)&SC_getElementAtX, true }, 56287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsGetElementAt13rs_allocationjj", (void *)&SC_getElementAtXY, true }, 56387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsGetElementAt13rs_allocationjjj", (void *)&SC_getElementAtXYZ, true }, 56487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 56587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z15rsGetAllocationPKv", (void *)&SC_getAllocation, true }, 56687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 56787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true }, 56887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false }, 56987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false }, 57087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true }, 57187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 57287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 57387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Messaging 57487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 57587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsSendToClienti", (void *)&SC_ToClient, false }, 57687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false }, 57787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false }, 57887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false }, 57987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 58087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false }, 58187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false }, 58287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false }, 58387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false }, 58487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false }, 58587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false }, 58687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 58787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false }, 58887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false }, 58987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false }, 59087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 59187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false }, 59287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 59387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false }, 59487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 59587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false }, 59687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false }, 59787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 59887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 59987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false }, 60087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false }, 60187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false }, 60287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false }, 60387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 60487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false }, 60587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false }, 60687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false }, 60787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false }, 60887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 60987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false }, 61087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false }, 61187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 61287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false }, 61387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false }, 61487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false }, 61587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false }, 61687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 61787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false }, 61887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false }, 61987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 62087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false }, 62187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false }, 62287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false }, 62387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false }, 62487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false }, 62587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 62687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach, false }, 62787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach2, false }, 62887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 62987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // time 63087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z6rsTimePi", (void *)&SC_Time, true }, 63187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true }, 63287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true }, 63387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true }, 63487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsGetDtv", (void*)&SC_GetDt, false }, 63587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 63687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // misc 63787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z5colorffff", (void *)&SC_Color, false }, 63887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z9rsgFinishv", (void *)&SC_Finish, false }, 63987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 64087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Debug 64187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcf", (void *)&SC_debugF, true }, 64287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcff", (void *)&SC_debugFv2, true }, 64387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcfff", (void *)&SC_debugFv3, true }, 64487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcffff", (void *)&SC_debugFv4, true }, 64587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcd", (void *)&SC_debugD, true }, 64687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix4x4", (void *)&SC_debugFM4v4, true }, 64787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix3x3", (void *)&SC_debugFM3v3, true }, 64887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix2x2", (void *)&SC_debugFM2v2, true }, 64987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKci", (void *)&SC_debugI32, true }, 65087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcj", (void *)&SC_debugU32, true }, 65187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Both "long" and "unsigned long" need to be redirected to their 65287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // 64-bit counterparts, since we have hacked Slang to use 64-bit 65387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // for "long" on Arm (to be similar to Java). 65487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcl", (void *)&SC_debugLL64, true }, 65587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcm", (void *)&SC_debugULL64, true }, 65687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcx", (void *)&SC_debugLL64, true }, 65787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcy", (void *)&SC_debugULL64, true }, 65887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPKv", (void *)&SC_debugP, true }, 65987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 66087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { NULL, NULL, false } 66187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}; 66287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 66387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 66487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid* rsdLookupRuntimeStub(void* pContext, char const* name) { 66587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams ScriptC *s = (ScriptC *)pContext; 66687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!strcmp(name, "__isThreadable")) { 66787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return (void*) s->mHal.info.isThreadable; 66887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } else if (!strcmp(name, "__clearThreadable")) { 66987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams s->mHal.info.isThreadable = false; 67087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return NULL; 67187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 67287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 67387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams RsdSymbolTable *syms = gSyms; 67487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const RsdSymbolTable *sym = rsdLookupSymbolMath(name); 67587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 67687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!sym) { 67787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams while (syms->mPtr) { 67887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!strcmp(syms->mName, name)) { 67987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams sym = syms; 68087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 68187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams syms++; 68287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 68387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 68487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 68587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (sym) { 68687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams s->mHal.info.isThreadable &= sym->threadable; 68787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return sym->mPtr; 68887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 68987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams LOGE("ScriptC sym lookup failed for %s", name); 69087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return NULL; 69187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 69287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 69387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 694