rsdRuntimeStubs.cpp revision b322033c13487a174bb9c26466e9684d1ff4de8d
187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams/* 2a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk * Copyright (C) 2011 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" 289e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams#include "rsdPath.h" 29b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams#include "rsdAllocation.h" 3087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include <time.h> 3287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android; 3487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android::renderscript; 3587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#define GET_TLS() ScriptTLSStruct * tls = \ 3783c451a4ef4388e002482e383d488ca9b7b7600dJason Sams (ScriptTLSStruct *)pthread_getspecific(rsdgThreadTLSKey); \ 3887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams Context * rsc = tls->mContext; \ 3987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams ScriptC * sc = (ScriptC *) tls->mScript 4087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 4487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Allocation 4587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 4687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll2(Allocation *a, RsAllocationUsageType source) { 4987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 5087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrAllocationSyncAll(rsc, sc, a, source); 5187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 5287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 5387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll(Allocation *a) { 5487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 5587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrAllocationSyncAll(rsc, sc, a, RS_ALLOCATION_USAGE_SCRIPT); 5687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 5787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 5874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukstatic void SC_AllocationCopy1DRange(Allocation *dstAlloc, 5974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstOff, 6074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstMip, 6174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t count, 6274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk Allocation *srcAlloc, 6374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcOff, uint32_t srcMip) { 6474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk GET_TLS(); 65a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk rsrAllocationCopy1DRange(rsc, dstAlloc, dstOff, dstMip, count, 66a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk srcAlloc, srcOff, srcMip); 6774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} 6874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 6974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukstatic void SC_AllocationCopy2DRange(Allocation *dstAlloc, 7074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstXoff, uint32_t dstYoff, 7174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstMip, uint32_t dstFace, 7274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t width, uint32_t height, 7374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk Allocation *srcAlloc, 7474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcXoff, uint32_t srcYoff, 7574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcMip, uint32_t srcFace) { 7674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk GET_TLS(); 77a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk rsrAllocationCopy2DRange(rsc, dstAlloc, 78a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk dstXoff, dstYoff, dstMip, dstFace, 79a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk width, height, 80a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk srcAlloc, 81a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk srcXoff, srcYoff, srcMip, srcFace); 8274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} 8374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 84b322033c13487a174bb9c26466e9684d1ff4de8dJason Samsstatic void SC_AllocationIoSend(Allocation *alloc) { 85b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams GET_TLS(); 86b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams rsdAllocationIoSend(rsc, alloc); 87b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams} 88b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 89b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 90b322033c13487a174bb9c26466e9684d1ff4de8dJason Samsstatic void SC_AllocationIoReceive(Allocation *alloc) { 91b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams GET_TLS(); 92b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams rsdAllocationIoReceive(rsc, alloc); 93b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams} 94b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 95b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 9674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 9787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 9887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context 9987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 10087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 10187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) { 10287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 10387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindTexture(rsc, sc, pf, slot, a); 10487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 10587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 106a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindVertexConstant(ProgramVertex *pv, uint32_t slot, Allocation *a) { 107a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk GET_TLS(); 108a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk rsrBindConstant(rsc, sc, pv, slot, a); 109a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk} 110a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk 111a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindFragmentConstant(ProgramFragment *pf, uint32_t slot, Allocation *a) { 112a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk GET_TLS(); 113a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk rsrBindConstant(rsc, sc, pf, slot, a); 114a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk} 115a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk 11687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) { 11787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 11887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindSampler(rsc, sc, pf, slot, s); 11987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 12087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 12187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) { 12287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 12387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramStore(rsc, sc, ps); 12487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 12587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 12687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) { 12787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 12887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramFragment(rsc, sc, pf); 12987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 13087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 13187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) { 13287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 13387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramVertex(rsc, sc, pv); 13487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 13587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 13687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) { 13787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 13887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramRaster(rsc, sc, pr); 13987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 14087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 14187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) { 14287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 14387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFrameBufferObjectColorTarget(rsc, sc, a, slot); 14487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 14587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 14687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) { 14787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 14887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFrameBufferObjectDepthTarget(rsc, sc, a); 14987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 15087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 15187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) { 15287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 15387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectColorTarget(rsc, sc, slot); 15487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 15587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 15687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) { 15787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 15887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectDepthTarget(rsc, sc); 15987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 16087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 16187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) { 16287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 16387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectTargets(rsc, sc); 16487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 16587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 16687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 16787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 16887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP 16987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 17087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 17187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) { 17287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 17387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadProjectionMatrix(rsc, sc, m); 17487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 17587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 17687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) { 17787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 17887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadModelMatrix(rsc, sc, m); 17987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 18087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 18187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) { 18287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 18387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadTextureMatrix(rsc, sc, m); 18487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 18587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 18687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) { 18787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 18887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrPfConstantColor(rsc, sc, pf, r, g, b, a); 18987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 19087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) { 19287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 19387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpGetProjectionMatrix(rsc, sc, m); 19487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 19587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 19887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing 19987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 20087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 20187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, 20287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x2, float y2, float z2, float u2, float v2, 20387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x3, float y3, float z3, float u3, float v3, 20487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x4, float y4, float z4, float u4, float v4) { 20587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 20687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawQuadTexCoords(rsc, sc, 20787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x1, y1, z1, u1, v1, 20887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x2, y2, z2, u2, v2, 20987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x3, y3, z3, u3, v3, 21087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x4, y4, z4, u4, v4); 21187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 21287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 21387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1, 21487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x2, float y2, float z2, 21587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x3, float y3, float z3, 21687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x4, float y4, float z4) { 21787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 21887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawQuad(rsc, sc, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4); 21987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 22087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) { 22287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 22387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawSpriteScreenspace(rsc, sc, x, y, z, w, h); 22487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 22587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawRect(float x1, float y1, float x2, float y2, float z) { 22787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 22887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawRect(rsc, sc, x1, y1, x2, y2, z); 22987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 23087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2319e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsstatic void SC_DrawPath(Path *p) { 2329e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams GET_TLS(); 2339e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams //rsrDrawPath(rsc, sc, p); 2349e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams rsdPathDraw(rsc, p); 2359e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 2369e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 23787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMesh(Mesh *m) { 23887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 23987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMesh(rsc, sc, m); 24087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 24187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 24287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) { 24387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 24487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMeshPrimitive(rsc, sc, m, primIndex); 24587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 24687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 24787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) { 24887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 24987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMeshPrimitiveRange(rsc, sc, m, primIndex, start, len); 25087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 25187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 25287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m, 25387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float *minX, float *minY, float *minZ, 25487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float *maxX, float *maxY, float *maxZ) { 25587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 25687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeshComputeBoundingBox(rsc, sc, m, minX, minY, minZ, maxX, maxY, maxZ); 25787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 25887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 25987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 26087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 26187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 26287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// 26387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 26487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 26587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 26687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Color(float r, float g, float b, float a) { 26787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 26887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrColor(rsc, sc, r, g, b, a); 26987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 27087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 27187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Finish() { 27287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 273653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsdGLFinish(rsc); 27487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 27587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 27687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) { 27787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 278653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsrPrepareClear(rsc, sc); 279653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsdGLClearColor(rsc, r, g, b, a); 28087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 28187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 28287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearDepth(float v) { 28387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 284653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsrPrepareClear(rsc, sc); 285653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsdGLClearDepth(rsc, v); 28687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 28787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 28887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetWidth() { 28987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 29087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetWidth(rsc, sc); 29187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 29287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 29387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetHeight() { 29487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 29587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetHeight(rsc, sc); 29687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 29787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 29887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) { 29987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 30087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawTextAlloc(rsc, sc, a, x, y); 30187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 30287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 30387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawText(const char *text, int x, int y) { 30487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 30587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawText(rsc, sc, text, x, y); 30687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 30787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 30887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a, 30987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 31087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 31187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeasureTextAlloc(rsc, sc, a, left, right, top, bottom); 31287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 31387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 31487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureText(const char *text, 31587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 31687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 31787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeasureText(rsc, sc, text, left, right, top, bottom); 31887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 31987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 32087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFont(Font *f) { 32187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 32287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFont(rsc, sc, f); 32387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 32487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 32587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) { 32687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 32787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrFontColor(rsc, sc, r, g, b, a); 32887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 32987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 33387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// 33487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 33587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_SetObject(ObjectBase **dst, ObjectBase * src) { 33787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 33887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrSetObject(rsc, sc, dst, src); 33987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 34087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 34187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearObject(ObjectBase **dst) { 34287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 34387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearObject(rsc, sc, dst); 34487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 34587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 34687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic bool SC_IsObject(const ObjectBase *src) { 34787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 34887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrIsObject(rsc, sc, src); 34987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 35087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic const Allocation * SC_GetAllocation(const void *ptr) { 35587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 35687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetAllocation(rsc, sc, ptr); 35787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 35887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 359c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAA(Script *target, 360c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 361c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out) { 362c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams GET_TLS(); 363c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams rsrForEach(rsc, sc, target, in, out, NULL, 0, NULL); 364c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams} 365c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 366c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAU(Script *target, 367c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 368c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 369c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr) { 37087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 37187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, NULL); 37287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 37387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 374c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAUS(Script *target, 375c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 376c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 377c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr, 378c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const RsScriptCall *call) { 37987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 38087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, call); 38187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 38287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 383c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAUL(Script *target, 384c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 385c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 386c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr, 387c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams uint32_t usrLen) { 388c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams GET_TLS(); 389c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams rsrForEach(rsc, sc, target, in, out, usr, usrLen, NULL); 390c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams} 391c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 392c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAULS(Script *target, 393c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 394c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 395c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr, 396c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams uint32_t usrLen, 397c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const RsScriptCall *call) { 398c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams GET_TLS(); 399c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams rsrForEach(rsc, sc, target, in, out, usr, usrLen, call); 400c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams} 401c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 40287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 40387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 40487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 40587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines 40687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 40787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 40887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic float SC_GetDt() { 40987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 41087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetDt(rsc, sc); 41187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 41287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 41387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t SC_Time(time_t *timer) { 41487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 41587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrTime(rsc, sc, timer); 41687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 41787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 41887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* SC_LocalTime(tm *local, time_t *timer) { 41987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 42087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrLocalTime(rsc, sc, local, timer); 42187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 42287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 42387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeMillis() { 42487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 42587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrUptimeMillis(rsc, sc); 42687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 42787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 42887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeNanos() { 42987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 43087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrUptimeNanos(rsc, sc); 43187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 43287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 43387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 43487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines 43587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 43687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 43787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient2(int cmdID, void *data, int len) { 43887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 43987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClient(rsc, sc, cmdID, data, len); 44087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 44187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 44287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient(int cmdID) { 44387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 44487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClient(rsc, sc, cmdID, NULL, 0); 44587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 44687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 44787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking2(int cmdID, void *data, int len) { 44887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 44987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, data, len); 45087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 45187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 45287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) { 45387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 45487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, NULL, 0); 45587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 45687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 45787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint SC_divsi3(int a, int b) { 45887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a / b; 45987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 46087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 46187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint SC_modsi3(int a, int b) { 46287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a % b; 46387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 46487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 46587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsunsigned int SC_udivsi3(unsigned int a, unsigned int b) { 46687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a / b; 46787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 46887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 46987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsunsigned int SC_umodsi3(unsigned int a, unsigned int b) { 47087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a % b; 47187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 47287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 47387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugF(const char *s, float f) { 4744a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, 0x%08x", s, f, *((int *) (&f))); 47587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 47687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv2(const char *s, float f1, float f2) { 4774a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f}", s, f1, f2); 47887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 47987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv3(const char *s, float f1, float f2, float f3) { 4804a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f}", s, f1, f2, f3); 48187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 48287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) { 4834a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4); 48487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 48587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugD(const char *s, double d) { 4864a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d))); 48787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 48887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM4v4(const char *s, const float *f) { 4894a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]); 4904a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]); 4914a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]); 4924a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]); 49387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 49487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM3v3(const char *s, const float *f) { 4954a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]); 4964a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f", s, f[1], f[4], f[7]); 4974a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f}",s, f[2], f[5], f[8]); 49887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 49987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM2v2(const char *s, const float *f) { 5004a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f", s, f[0], f[2]); 5014a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f}",s, f[1], f[3]); 50287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 50387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 50487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugI32(const char *s, int32_t i) { 5054a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %i 0x%x", s, i, i); 50687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 50787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugU32(const char *s, uint32_t i) { 5084a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %u 0x%x", s, i, i); 50987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 51087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugLL64(const char *s, long long ll) { 5114a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %lld 0x%llx", s, ll, ll); 51287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 51387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugULL64(const char *s, unsigned long long ll) { 5144a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %llu 0x%llx", s, ll, ll); 51587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 51687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 51787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugP(const char *s, const void *p) { 5184a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %p", s, p); 51987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 52087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 52187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 52287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 52387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Stub implementation 52487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 52587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 52687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// llvm name mangling ref 52787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// <builtin-type> ::= v # void 52887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= b # bool 52987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= c # char 53087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= a # signed char 53187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= h # unsigned char 53287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= s # short 53387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= t # unsigned short 53487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= i # int 53587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= j # unsigned int 53687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= l # long 53787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= m # unsigned long 53887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= x # long long, __int64 53987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= y # unsigned long long, __int64 54087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= f # float 54187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= d # double 54287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 54387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic RsdSymbolTable gSyms[] = { 54487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "memset", (void *)&memset, true }, 54587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "memcpy", (void *)&memcpy, true }, 54687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 54787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Refcounting 54887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true }, 54987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true }, 55087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true }, 55187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 55287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true }, 55387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true }, 55487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true }, 55587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 55687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true }, 55787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true }, 55887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true }, 55987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 56087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true }, 56187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true }, 56287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true }, 56387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 56487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true }, 56587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true }, 56687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true }, 56787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 5689e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z11rsSetObjectP7rs_pathS_", (void *)&SC_SetObject, true }, 5699e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z13rsClearObjectP7rs_path", (void *)&SC_ClearObject, true }, 5709e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z10rsIsObject7rs_path", (void *)&SC_IsObject, true }, 5719e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 57287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true }, 57387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true }, 57487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true }, 57587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 57687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true }, 57787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true }, 57887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true }, 57987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 58087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true }, 58187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true }, 58287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true }, 58387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 58487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true }, 58587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true }, 58687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true }, 58787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 58887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true }, 58987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true }, 59087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true }, 59187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 59287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true }, 59387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true }, 59487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true }, 59587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 59687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Allocation ops 59787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true }, 59887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false }, 59987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false }, 60074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false }, 60187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true }, 602b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams { "_Z18rsAllocationIoSend13rs_allocation", (void *)&SC_AllocationIoSend, false }, 603b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams { "_Z21rsAllocationIoReceive13rs_allocation", (void *)&SC_AllocationIoReceive, false }, 60474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false }, 60574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false }, 60687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 60787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Messaging 60887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 60987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsSendToClienti", (void *)&SC_ToClient, false }, 61087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false }, 61187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false }, 61287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false }, 61387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 61487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false }, 61587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false }, 61687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false }, 61787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false }, 61887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false }, 61987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false }, 620a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk { "_Z15rsgBindConstant19rs_program_fragmentj13rs_allocation", (void *)&SC_BindFragmentConstant, false }, 621a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk { "_Z15rsgBindConstant17rs_program_vertexj13rs_allocation", (void *)&SC_BindVertexConstant, false }, 62287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 62387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false }, 62487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false }, 62587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false }, 62687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 62787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false }, 62887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 62987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false }, 63087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 63187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false }, 63287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false }, 63387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 63487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 63587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false }, 63687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false }, 63787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false }, 63887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false }, 63987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 64087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false }, 64187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false }, 64287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false }, 64387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false }, 64487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 6459e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z11rsgDrawPath7rs_path", (void *)&SC_DrawPath, false }, 6469e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 64787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false }, 64887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false }, 64987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 65087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false }, 65187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false }, 65287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false }, 65387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false }, 65487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 65587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false }, 65687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false }, 65787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 65887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false }, 65987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false }, 66087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false }, 66187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false }, 66287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false }, 66387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 664c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, false }, 665c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, false }, 666c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK16rs_script_call_t", (void *)&SC_ForEach_SAAUS, false }, 667c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, false }, 668c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK16rs_script_call_t", (void *)&SC_ForEach_SAAULS, false }, 66987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 67087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // time 67187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z6rsTimePi", (void *)&SC_Time, true }, 67287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true }, 67387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true }, 67487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true }, 67587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsGetDtv", (void*)&SC_GetDt, false }, 67687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 67787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // misc 67887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z5colorffff", (void *)&SC_Color, false }, 67987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z9rsgFinishv", (void *)&SC_Finish, false }, 68087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 68187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Debug 68287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcf", (void *)&SC_debugF, true }, 68387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcff", (void *)&SC_debugFv2, true }, 68487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcfff", (void *)&SC_debugFv3, true }, 68587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcffff", (void *)&SC_debugFv4, true }, 68687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcd", (void *)&SC_debugD, true }, 68787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix4x4", (void *)&SC_debugFM4v4, true }, 68887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix3x3", (void *)&SC_debugFM3v3, true }, 68987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix2x2", (void *)&SC_debugFM2v2, true }, 69087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKci", (void *)&SC_debugI32, true }, 69187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcj", (void *)&SC_debugU32, true }, 69287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Both "long" and "unsigned long" need to be redirected to their 69387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // 64-bit counterparts, since we have hacked Slang to use 64-bit 69487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // for "long" on Arm (to be similar to Java). 69587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcl", (void *)&SC_debugLL64, true }, 69687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcm", (void *)&SC_debugULL64, true }, 69787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcx", (void *)&SC_debugLL64, true }, 69887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcy", (void *)&SC_debugULL64, true }, 69987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPKv", (void *)&SC_debugP, true }, 70087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 70187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { NULL, NULL, false } 70287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}; 70387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 70487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 70587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid* rsdLookupRuntimeStub(void* pContext, char const* name) { 70687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams ScriptC *s = (ScriptC *)pContext; 70787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!strcmp(name, "__isThreadable")) { 70887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return (void*) s->mHal.info.isThreadable; 70987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } else if (!strcmp(name, "__clearThreadable")) { 71087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams s->mHal.info.isThreadable = false; 71187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return NULL; 71287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 71387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 71487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams RsdSymbolTable *syms = gSyms; 71587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const RsdSymbolTable *sym = rsdLookupSymbolMath(name); 71687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 71787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!sym) { 71887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams while (syms->mPtr) { 71987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!strcmp(syms->mName, name)) { 72087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams sym = syms; 72187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 72287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams syms++; 72387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 72487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 72587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 72687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (sym) { 72787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams s->mHal.info.isThreadable &= sym->threadable; 72887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return sym->mPtr; 72987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 730af12ac6a08651464f8d823add667c706f993b587Steve Block ALOGE("ScriptC sym lookup failed for %s", name); 73187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return NULL; 73287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 73387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 73487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 735