rsdRuntimeStubs.cpp revision a1dd74c5ce4db0991020a4836be24fc35af4f301
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 41a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float2 __attribute__((ext_vector_type(2))); 42a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float3 __attribute__((ext_vector_type(3))); 43a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float4 __attribute__((ext_vector_type(4))); 44a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char2 __attribute__((ext_vector_type(2))); 45a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char3 __attribute__((ext_vector_type(3))); 46a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char4 __attribute__((ext_vector_type(4))); 47a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar2 __attribute__((ext_vector_type(2))); 48a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar3 __attribute__((ext_vector_type(3))); 49a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar4 __attribute__((ext_vector_type(4))); 50a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef short short2 __attribute__((ext_vector_type(2))); 51a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef short short3 __attribute__((ext_vector_type(3))); 52a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef short short4 __attribute__((ext_vector_type(4))); 53a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned short ushort2 __attribute__((ext_vector_type(2))); 54a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned short ushort3 __attribute__((ext_vector_type(3))); 55a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned short ushort4 __attribute__((ext_vector_type(4))); 56a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int2 __attribute__((ext_vector_type(2))); 57a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int3 __attribute__((ext_vector_type(3))); 58a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int4 __attribute__((ext_vector_type(4))); 59a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint2 __attribute__((ext_vector_type(2))); 60a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint3 __attribute__((ext_vector_type(3))); 61a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint4 __attribute__((ext_vector_type(4))); 62a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef long long long2 __attribute__((ext_vector_type(2))); 63a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef long long long3 __attribute__((ext_vector_type(3))); 64a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef long long long4 __attribute__((ext_vector_type(4))); 65a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned long long ulong2 __attribute__((ext_vector_type(2))); 66a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned long long ulong3 __attribute__((ext_vector_type(3))); 67a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned long long ulong4 __attribute__((ext_vector_type(4))); 6887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 6987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 7187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Allocation 7287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 7387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll2(Allocation *a, RsAllocationUsageType source) { 7687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 7787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrAllocationSyncAll(rsc, sc, a, source); 7887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 7987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 8087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll(Allocation *a) { 8187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 8287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrAllocationSyncAll(rsc, sc, a, RS_ALLOCATION_USAGE_SCRIPT); 8387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 8487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 8574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukstatic void SC_AllocationCopy1DRange(Allocation *dstAlloc, 8674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstOff, 8774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstMip, 8874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t count, 8974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk Allocation *srcAlloc, 9074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcOff, uint32_t srcMip) { 9174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk GET_TLS(); 92a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk rsrAllocationCopy1DRange(rsc, dstAlloc, dstOff, dstMip, count, 93a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk srcAlloc, srcOff, srcMip); 9474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} 9574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 9674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukstatic void SC_AllocationCopy2DRange(Allocation *dstAlloc, 9774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstXoff, uint32_t dstYoff, 9874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstMip, uint32_t dstFace, 9974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t width, uint32_t height, 10074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk Allocation *srcAlloc, 10174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcXoff, uint32_t srcYoff, 10274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcMip, uint32_t srcFace) { 10374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk GET_TLS(); 104a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk rsrAllocationCopy2DRange(rsc, dstAlloc, 105a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk dstXoff, dstYoff, dstMip, dstFace, 106a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk width, height, 107a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk srcAlloc, 108a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk srcXoff, srcYoff, srcMip, srcFace); 10974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} 11074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 111b322033c13487a174bb9c26466e9684d1ff4de8dJason Samsstatic void SC_AllocationIoSend(Allocation *alloc) { 112b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams GET_TLS(); 113b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams rsdAllocationIoSend(rsc, alloc); 114b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams} 115b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 116b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 117b322033c13487a174bb9c26466e9684d1ff4de8dJason Samsstatic void SC_AllocationIoReceive(Allocation *alloc) { 118b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams GET_TLS(); 119b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams rsdAllocationIoReceive(rsc, alloc); 120b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams} 121b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 122b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 12374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 12487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 12587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context 12687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 12787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 12887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) { 12987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 13087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindTexture(rsc, sc, pf, slot, a); 13187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 13287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 133a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindVertexConstant(ProgramVertex *pv, uint32_t slot, Allocation *a) { 134a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk GET_TLS(); 135a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk rsrBindConstant(rsc, sc, pv, slot, a); 136a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk} 137a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk 138a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindFragmentConstant(ProgramFragment *pf, uint32_t slot, Allocation *a) { 139a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk GET_TLS(); 140a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk rsrBindConstant(rsc, sc, pf, slot, a); 141a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk} 142a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk 14387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) { 14487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 14587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindSampler(rsc, sc, pf, slot, s); 14687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 14787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 14887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) { 14987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 15087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramStore(rsc, sc, ps); 15187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 15287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 15387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) { 15487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 15587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramFragment(rsc, sc, pf); 15687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 15787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 15887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) { 15987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 16087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramVertex(rsc, sc, pv); 16187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 16287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 16387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) { 16487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 16587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramRaster(rsc, sc, pr); 16687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 16787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 16887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) { 16987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 17087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFrameBufferObjectColorTarget(rsc, sc, a, slot); 17187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 17287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 17387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) { 17487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 17587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFrameBufferObjectDepthTarget(rsc, sc, a); 17687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 17787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 17887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) { 17987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 18087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectColorTarget(rsc, sc, slot); 18187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 18287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 18387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) { 18487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 18587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectDepthTarget(rsc, sc); 18687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 18787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 18887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) { 18987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 19087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectTargets(rsc, sc); 19187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 19287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 19587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP 19687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 19787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) { 19987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 20087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadProjectionMatrix(rsc, sc, m); 20187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 20287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 20387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) { 20487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 20587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadModelMatrix(rsc, sc, m); 20687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 20787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 20887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) { 20987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 21087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadTextureMatrix(rsc, sc, m); 21187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 21287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 21387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) { 21487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 21587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrPfConstantColor(rsc, sc, pf, r, g, b, a); 21687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 21787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 21887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) { 21987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 22087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpGetProjectionMatrix(rsc, sc, m); 22187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 22287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 22587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing 22687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 22787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, 22987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x2, float y2, float z2, float u2, float v2, 23087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x3, float y3, float z3, float u3, float v3, 23187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x4, float y4, float z4, float u4, float v4) { 23287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 23387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawQuadTexCoords(rsc, sc, 23487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x1, y1, z1, u1, v1, 23587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x2, y2, z2, u2, v2, 23687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x3, y3, z3, u3, v3, 23787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams x4, y4, z4, u4, v4); 23887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 23987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 24087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1, 24187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x2, float y2, float z2, 24287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x3, float y3, float z3, 24387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x4, float y4, float z4) { 24487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 24587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawQuad(rsc, sc, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4); 24687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 24787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 24887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) { 24987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 25087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawSpriteScreenspace(rsc, sc, x, y, z, w, h); 25187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 25287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 25387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawRect(float x1, float y1, float x2, float y2, float z) { 25487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 25587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawRect(rsc, sc, x1, y1, x2, y2, z); 25687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 25787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2589e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsstatic void SC_DrawPath(Path *p) { 2599e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams GET_TLS(); 2609e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams //rsrDrawPath(rsc, sc, p); 2619e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams rsdPathDraw(rsc, p); 2629e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 2639e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 26487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMesh(Mesh *m) { 26587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 26687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMesh(rsc, sc, m); 26787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 26887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 26987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) { 27087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 27187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMeshPrimitive(rsc, sc, m, primIndex); 27287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 27387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 27487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) { 27587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 27687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMeshPrimitiveRange(rsc, sc, m, primIndex, start, len); 27787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 27887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 27987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m, 28087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float *minX, float *minY, float *minZ, 28187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float *maxX, float *maxY, float *maxZ) { 28287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 28387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeshComputeBoundingBox(rsc, sc, m, minX, minY, minZ, maxX, maxY, maxZ); 28487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 28587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 28687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 28787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 28887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 28987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// 29087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 29187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 29287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 29387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Color(float r, float g, float b, float a) { 29487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 29587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrColor(rsc, sc, r, g, b, a); 29687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 29787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 29887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Finish() { 29987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 300653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsdGLFinish(rsc); 30187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 30287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 30387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) { 30487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 305653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsrPrepareClear(rsc, sc); 306653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsdGLClearColor(rsc, r, g, b, a); 30787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 30887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 30987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearDepth(float v) { 31087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 311653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsrPrepareClear(rsc, sc); 312653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsdGLClearDepth(rsc, v); 31387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 31487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 31587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetWidth() { 31687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 31787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetWidth(rsc, sc); 31887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 31987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 32087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetHeight() { 32187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 32287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetHeight(rsc, sc); 32387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 32487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 32587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) { 32687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 32787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawTextAlloc(rsc, sc, a, x, y); 32887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 32987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawText(const char *text, int x, int y) { 33187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 33287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawText(rsc, sc, text, x, y); 33387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 33487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a, 33687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 33787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 33887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeasureTextAlloc(rsc, sc, a, left, right, top, bottom); 33987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 34087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 34187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureText(const char *text, 34287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 34387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 34487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeasureText(rsc, sc, text, left, right, top, bottom); 34587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 34687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 34787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFont(Font *f) { 34887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 34987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFont(rsc, sc, f); 35087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 35187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) { 35387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 35487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrFontColor(rsc, sc, r, g, b, a); 35587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 35687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 36087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// 36187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 36287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 36387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_SetObject(ObjectBase **dst, ObjectBase * src) { 36487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 36587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrSetObject(rsc, sc, dst, src); 36687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 36787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 36887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearObject(ObjectBase **dst) { 36987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 37087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearObject(rsc, sc, dst); 37187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 37287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 37387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic bool SC_IsObject(const ObjectBase *src) { 37487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 37587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrIsObject(rsc, sc, src); 37687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 37787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 37887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 37987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 38087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 38187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic const Allocation * SC_GetAllocation(const void *ptr) { 38287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 38387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetAllocation(rsc, sc, ptr); 38487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 38587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 386c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAA(Script *target, 387c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 388c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out) { 389c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams GET_TLS(); 390c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams rsrForEach(rsc, sc, target, in, out, NULL, 0, NULL); 391c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams} 392c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 393c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAU(Script *target, 394c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 395c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 396c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr) { 39787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 39887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, NULL); 39987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 40087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 401c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAUS(Script *target, 402c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 403c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 404c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr, 405c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const RsScriptCall *call) { 40687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 40787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, call); 40887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 40987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 410c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAUL(Script *target, 411c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 412c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 413c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr, 414c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams uint32_t usrLen) { 415c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams GET_TLS(); 416c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams rsrForEach(rsc, sc, target, in, out, usr, usrLen, NULL); 417c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams} 418c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 419c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAULS(Script *target, 420c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 421c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 422c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr, 423c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams uint32_t usrLen, 424c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const RsScriptCall *call) { 425c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams GET_TLS(); 426c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams rsrForEach(rsc, sc, target, in, out, usr, usrLen, call); 427c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams} 428c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 42987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 43087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 43187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 43287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines 43387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 43487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 43587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic float SC_GetDt() { 43687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 43787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetDt(rsc, sc); 43887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 43987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 44087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t SC_Time(time_t *timer) { 44187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 44287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrTime(rsc, sc, timer); 44387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 44487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 44587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* SC_LocalTime(tm *local, time_t *timer) { 44687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 44787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrLocalTime(rsc, sc, local, timer); 44887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 44987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 45087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeMillis() { 45187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 45287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrUptimeMillis(rsc, sc); 45387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 45487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 45587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeNanos() { 45687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 45787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrUptimeNanos(rsc, sc); 45887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 45987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 46087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 46187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines 46287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 46387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 46487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient2(int cmdID, void *data, int len) { 46587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 46687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClient(rsc, sc, cmdID, data, len); 46787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 46887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 46987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient(int cmdID) { 47087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 47187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClient(rsc, sc, cmdID, NULL, 0); 47287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 47387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 47487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking2(int cmdID, void *data, int len) { 47587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 47687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, data, len); 47787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 47887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 47987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) { 48087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 48187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, NULL, 0); 48287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 48387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 48487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint SC_divsi3(int a, int b) { 48587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a / b; 48687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 48787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 48887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint SC_modsi3(int a, int b) { 48987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a % b; 49087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 49187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 49287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsunsigned int SC_udivsi3(unsigned int a, unsigned int b) { 49387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a / b; 49487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 49587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 49687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsunsigned int SC_umodsi3(unsigned int a, unsigned int b) { 49787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a % b; 49887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 49987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 50087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugF(const char *s, float f) { 5014a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, 0x%08x", s, f, *((int *) (&f))); 50287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 50387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv2(const char *s, float f1, float f2) { 5044a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f}", s, f1, f2); 50587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 50687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv3(const char *s, float f1, float f2, float f3) { 5074a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f}", s, f1, f2, f3); 50887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 50987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) { 5104a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4); 51187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 5126537404d5ad7ec19f0f26533d695d39909782781Stephen Hinesstatic void SC_debugF2(const char *s, float2 f) { 5136537404d5ad7ec19f0f26533d695d39909782781Stephen Hines ALOGD("%s {%f, %f}", s, f.x, f.y); 5146537404d5ad7ec19f0f26533d695d39909782781Stephen Hines} 5156537404d5ad7ec19f0f26533d695d39909782781Stephen Hinesstatic void SC_debugF3(const char *s, float3 f) { 5166537404d5ad7ec19f0f26533d695d39909782781Stephen Hines ALOGD("%s {%f, %f, %f}", s, f.x, f.y, f.z); 5176537404d5ad7ec19f0f26533d695d39909782781Stephen Hines} 5186537404d5ad7ec19f0f26533d695d39909782781Stephen Hinesstatic void SC_debugF4(const char *s, float4 f) { 5196537404d5ad7ec19f0f26533d695d39909782781Stephen Hines ALOGD("%s {%f, %f, %f, %f}", s, f.x, f.y, f.z, f.w); 5206537404d5ad7ec19f0f26533d695d39909782781Stephen Hines} 52187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugD(const char *s, double d) { 5224a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d))); 52387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 52487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM4v4(const char *s, const float *f) { 5254a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]); 5264a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]); 5274a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]); 5284a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]); 52987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 53087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM3v3(const char *s, const float *f) { 5314a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]); 5324a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f", s, f[1], f[4], f[7]); 5334a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f}",s, f[2], f[5], f[8]); 53487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 53587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM2v2(const char *s, const float *f) { 5364a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f", s, f[0], f[2]); 5374a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f}",s, f[1], f[3]); 53887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 539a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI8(const char *s, char c) { 540a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %hhd 0x%hhx", s, c, (unsigned char)c); 541a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 542a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugC2(const char *s, char2 c) { 543a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hhd, %hhd} 0x%hhx 0x%hhx", s, c.x, c.y, (unsigned char)c.x, (unsigned char)c.y); 544a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 545a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugC3(const char *s, char3 c) { 546a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hhd, %hhd, %hhd} 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, (unsigned char)c.x, (unsigned char)c.y, (unsigned char)c.z); 547a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 548a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugC4(const char *s, char4 c) { 549a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hhd, %hhd, %hhd, %hhd} 0x%hhx 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, c.w, (unsigned char)c.x, (unsigned char)c.y, (unsigned char)c.z, (unsigned char)c.w); 550a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 551a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugU8(const char *s, unsigned char c) { 552a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %hhu 0x%hhx", s, c, c); 553a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 554a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUC2(const char *s, uchar2 c) { 555a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hhu, %hhu} 0x%hhx 0x%hhx", s, c.x, c.y, c.x, c.y); 556a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 557a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUC3(const char *s, uchar3 c) { 558a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hhu, %hhu, %hhu} 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, c.x, c.y, c.z); 559a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 560a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUC4(const char *s, uchar4 c) { 561a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hhu, %hhu, %hhu, %hhu} 0x%hhx 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, c.w, c.x, c.y, c.z, c.w); 562a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 563a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI16(const char *s, short c) { 564a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %hd 0x%hx", s, c, c); 565a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 566a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugS2(const char *s, short2 c) { 567a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hd, %hd} 0x%hx 0x%hx", s, c.x, c.y, c.x, c.y); 568a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 569a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugS3(const char *s, short3 c) { 570a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hd, %hd, %hd} 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.x, c.y, c.z); 571a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 572a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugS4(const char *s, short4 c) { 573a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hd, %hd, %hd, %hd} 0x%hx 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.w, c.x, c.y, c.z, c.w); 574a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 575a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugU16(const char *s, unsigned short c) { 576a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %hu 0x%hx", s, c, c); 577a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 578a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUS2(const char *s, ushort2 c) { 579a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hu, %hu} 0x%hx 0x%hx", s, c.x, c.y, c.x, c.y); 580a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 581a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUS3(const char *s, ushort3 c) { 582a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hu, %hu, %hu} 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.x, c.y, c.z); 583a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 584a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUS4(const char *s, ushort4 c) { 585a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hu, %hu, %hu, %hu} 0x%hx 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.w, c.x, c.y, c.z, c.w); 586a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 58787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugI32(const char *s, int32_t i) { 588a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %d 0x%x", s, i, i); 589a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 590a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI2(const char *s, int2 i) { 591a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%d, %d} 0x%x 0x%x", s, i.x, i.y, i.x, i.y); 592a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 593a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI3(const char *s, int3 i) { 594a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%d, %d, %d} 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.x, i.y, i.z); 595a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 596a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI4(const char *s, int4 i) { 597a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%d, %d, %d, %d} 0x%x 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.w, i.x, i.y, i.z, i.w); 59887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 59987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugU32(const char *s, uint32_t i) { 6004a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %u 0x%x", s, i, i); 60187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 602a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUI2(const char *s, uint2 i) { 603a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%u, %u} 0x%x 0x%x", s, i.x, i.y, i.x, i.y); 604a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 605a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUI3(const char *s, uint3 i) { 606a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%u, %u, %u} 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.x, i.y, i.z); 607a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 608a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUI4(const char *s, uint4 i) { 609a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%u, %u, %u, %u} 0x%x 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.w, i.x, i.y, i.z, i.w); 610a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 61187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugLL64(const char *s, long long ll) { 6124a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %lld 0x%llx", s, ll, ll); 61387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 614a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugL2(const char *s, long2 ll) { 615a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%lld, %lld} 0x%llx 0x%llx", s, ll.x, ll.y, ll.x, ll.y); 616a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 617a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugL3(const char *s, long3 ll) { 618a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%lld, %lld, %lld} 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.x, ll.y, ll.z); 619a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 620a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugL4(const char *s, long4 ll) { 621a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%lld, %lld, %lld, %lld} 0x%llx 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.w, ll.x, ll.y, ll.z, ll.w); 622a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 62387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugULL64(const char *s, unsigned long long ll) { 6244a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %llu 0x%llx", s, ll, ll); 62587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 626a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUL2(const char *s, ulong2 ll) { 627a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%llu, %llu} 0x%llx 0x%llx", s, ll.x, ll.y, ll.x, ll.y); 628a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 629a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUL3(const char *s, ulong3 ll) { 630a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%llu, %llu, %llu} 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.x, ll.y, ll.z); 631a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 632a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUL4(const char *s, ulong4 ll) { 633a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%llu, %llu, %llu, %llu} 0x%llx 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.w, ll.x, ll.y, ll.z, ll.w); 634a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 63587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugP(const char *s, const void *p) { 6364a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %p", s, p); 63787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 63887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 63987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 64087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 64187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Stub implementation 64287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 64387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 64487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// llvm name mangling ref 64587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// <builtin-type> ::= v # void 64687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= b # bool 64787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= c # char 64887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= a # signed char 64987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= h # unsigned char 65087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= s # short 65187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= t # unsigned short 65287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= i # int 65387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= j # unsigned int 65487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= l # long 65587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= m # unsigned long 65687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= x # long long, __int64 65787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= y # unsigned long long, __int64 65887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= f # float 65987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= d # double 66087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 66187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic RsdSymbolTable gSyms[] = { 66287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "memset", (void *)&memset, true }, 66387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "memcpy", (void *)&memcpy, true }, 66487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 66587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Refcounting 66687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true }, 66787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true }, 66887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true }, 66987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 67087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true }, 67187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true }, 67287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true }, 67387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 67487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true }, 67587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true }, 67687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true }, 67787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 67887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true }, 67987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true }, 68087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true }, 68187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 68287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true }, 68387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true }, 68487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true }, 68587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 6869e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z11rsSetObjectP7rs_pathS_", (void *)&SC_SetObject, true }, 6879e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z13rsClearObjectP7rs_path", (void *)&SC_ClearObject, true }, 6889e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z10rsIsObject7rs_path", (void *)&SC_IsObject, true }, 6899e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 69087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true }, 69187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true }, 69287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true }, 69387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 69487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true }, 69587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true }, 69687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true }, 69787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 69887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true }, 69987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true }, 70087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true }, 70187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 70287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true }, 70387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true }, 70487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true }, 70587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 70687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true }, 70787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true }, 70887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true }, 70987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 71087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true }, 71187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true }, 71287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true }, 71387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 71487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Allocation ops 71587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true }, 71687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false }, 71787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false }, 71874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false }, 71987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true }, 720b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams { "_Z18rsAllocationIoSend13rs_allocation", (void *)&SC_AllocationIoSend, false }, 721b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams { "_Z21rsAllocationIoReceive13rs_allocation", (void *)&SC_AllocationIoReceive, false }, 72274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false }, 72374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false }, 72487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 72587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Messaging 72687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 72787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsSendToClienti", (void *)&SC_ToClient, false }, 72887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false }, 72987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false }, 73087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false }, 73187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 73287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false }, 73387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false }, 73487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false }, 73587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false }, 73687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false }, 73787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false }, 738a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk { "_Z15rsgBindConstant19rs_program_fragmentj13rs_allocation", (void *)&SC_BindFragmentConstant, false }, 739a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk { "_Z15rsgBindConstant17rs_program_vertexj13rs_allocation", (void *)&SC_BindVertexConstant, false }, 74087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 74187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false }, 74287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false }, 74387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false }, 74487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 74587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false }, 74687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 74787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false }, 74887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 74987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false }, 75087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false }, 75187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 75287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 75387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false }, 75487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false }, 75587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false }, 75687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false }, 75787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 75887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false }, 75987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false }, 76087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false }, 76187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false }, 76287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7639e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z11rsgDrawPath7rs_path", (void *)&SC_DrawPath, false }, 7649e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 76587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false }, 76687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false }, 76787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 76887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false }, 76987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false }, 77087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false }, 77187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false }, 77287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 77387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false }, 77487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false }, 77587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 77687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false }, 77787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false }, 77887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false }, 77987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false }, 78087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false }, 78187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 782aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true }, 783aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true }, 784aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK16rs_script_call_t", (void *)&SC_ForEach_SAAUS, true }, 785aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true }, 786aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK16rs_script_call_t", (void *)&SC_ForEach_SAAULS, true }, 78787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 78887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // time 78987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z6rsTimePi", (void *)&SC_Time, true }, 79087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true }, 79187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true }, 79287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true }, 79387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsGetDtv", (void*)&SC_GetDt, false }, 79487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 79587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // misc 79687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z5colorffff", (void *)&SC_Color, false }, 79787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z9rsgFinishv", (void *)&SC_Finish, false }, 79887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 79987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Debug 80087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcf", (void *)&SC_debugF, true }, 80187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcff", (void *)&SC_debugFv2, true }, 80287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcfff", (void *)&SC_debugFv3, true }, 80387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcffff", (void *)&SC_debugFv4, true }, 8046537404d5ad7ec19f0f26533d695d39909782781Stephen Hines { "_Z7rsDebugPKcDv2_f", (void *)&SC_debugF2, true }, 8056537404d5ad7ec19f0f26533d695d39909782781Stephen Hines { "_Z7rsDebugPKcDv3_f", (void *)&SC_debugF3, true }, 8066537404d5ad7ec19f0f26533d695d39909782781Stephen Hines { "_Z7rsDebugPKcDv4_f", (void *)&SC_debugF4, true }, 80787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcd", (void *)&SC_debugD, true }, 80887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix4x4", (void *)&SC_debugFM4v4, true }, 80987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix3x3", (void *)&SC_debugFM3v3, true }, 81087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix2x2", (void *)&SC_debugFM2v2, true }, 811a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcc", (void *)&SC_debugI8, true }, 812a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_c", (void *)&SC_debugC2, true }, 813a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_c", (void *)&SC_debugC3, true }, 814a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_c", (void *)&SC_debugC4, true }, 815a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKch", (void *)&SC_debugU8, true }, 816a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_h", (void *)&SC_debugUC2, true }, 817a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_h", (void *)&SC_debugUC3, true }, 818a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_h", (void *)&SC_debugUC4, true }, 819a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcs", (void *)&SC_debugI16, true }, 820a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_s", (void *)&SC_debugS2, true }, 821a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_s", (void *)&SC_debugS3, true }, 822a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_s", (void *)&SC_debugS4, true }, 823a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKct", (void *)&SC_debugU16, true }, 824a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_t", (void *)&SC_debugUS2, true }, 825a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_t", (void *)&SC_debugUS3, true }, 826a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_t", (void *)&SC_debugUS4, true }, 82787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKci", (void *)&SC_debugI32, true }, 828a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_i", (void *)&SC_debugI2, true }, 829a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_i", (void *)&SC_debugI3, true }, 830a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_i", (void *)&SC_debugI4, true }, 83187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcj", (void *)&SC_debugU32, true }, 832a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_j", (void *)&SC_debugUI2, true }, 833a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_j", (void *)&SC_debugUI3, true }, 834a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_j", (void *)&SC_debugUI4, true }, 83587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Both "long" and "unsigned long" need to be redirected to their 83687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // 64-bit counterparts, since we have hacked Slang to use 64-bit 83787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // for "long" on Arm (to be similar to Java). 83887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcl", (void *)&SC_debugLL64, true }, 839a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_l", (void *)&SC_debugL2, true }, 840a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_l", (void *)&SC_debugL3, true }, 841a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_l", (void *)&SC_debugL4, true }, 84287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcm", (void *)&SC_debugULL64, true }, 843a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_m", (void *)&SC_debugUL2, true }, 844a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_m", (void *)&SC_debugUL3, true }, 845a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_m", (void *)&SC_debugUL4, true }, 84687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcx", (void *)&SC_debugLL64, true }, 847a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_x", (void *)&SC_debugL2, true }, 848a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_x", (void *)&SC_debugL3, true }, 849a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_x", (void *)&SC_debugL4, true }, 85087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcy", (void *)&SC_debugULL64, true }, 851a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_y", (void *)&SC_debugUL2, true }, 852a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_y", (void *)&SC_debugUL3, true }, 853a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_y", (void *)&SC_debugUL4, true }, 85487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPKv", (void *)&SC_debugP, true }, 85587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 85687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { NULL, NULL, false } 85787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}; 85887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 85987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 86087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid* rsdLookupRuntimeStub(void* pContext, char const* name) { 86187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams ScriptC *s = (ScriptC *)pContext; 862070cb235d9f094048c0260aa72d5acf61ed840a3Stephen Hines if (!strcmp(name, "__isThreadable")) { 863070cb235d9f094048c0260aa72d5acf61ed840a3Stephen Hines return (void*) s->mHal.info.isThreadable; 864070cb235d9f094048c0260aa72d5acf61ed840a3Stephen Hines } else if (!strcmp(name, "__clearThreadable")) { 865070cb235d9f094048c0260aa72d5acf61ed840a3Stephen Hines s->mHal.info.isThreadable = false; 866070cb235d9f094048c0260aa72d5acf61ed840a3Stephen Hines return NULL; 867070cb235d9f094048c0260aa72d5acf61ed840a3Stephen Hines } 868070cb235d9f094048c0260aa72d5acf61ed840a3Stephen Hines 86987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams RsdSymbolTable *syms = gSyms; 87087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const RsdSymbolTable *sym = rsdLookupSymbolMath(name); 87187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 87287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!sym) { 87387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams while (syms->mPtr) { 87487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!strcmp(syms->mName, name)) { 87587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams sym = syms; 87687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 87787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams syms++; 87887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 87987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 88087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 88187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (sym) { 88287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams s->mHal.info.isThreadable &= sym->threadable; 88387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return sym->mPtr; 88487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 885af12ac6a08651464f8d823add667c706f993b587Steve Block ALOGE("ScriptC sym lookup failed for %s", name); 88687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return NULL; 88787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 88887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 88987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 890