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" 26807fdc4b6f3fb893015ee136565d6151bb2332d3Jason Sams#include "rsdBcc.h" 2787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsdRuntime.h" 299e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams#include "rsdPath.h" 30b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams#include "rsdAllocation.h" 31414a46166126da6864258bd25ff183f9a3c6261dStephen Hines#include "rsdShaderCache.h" 32414a46166126da6864258bd25ff183f9a3c6261dStephen Hines#include "rsdVertexArray.h" 3387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include <time.h> 3587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android; 3787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android::renderscript; 3887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#define GET_TLS() ScriptTLSStruct * tls = \ 4083c451a4ef4388e002482e383d488ca9b7b7600dJason Sams (ScriptTLSStruct *)pthread_getspecific(rsdgThreadTLSKey); \ 4187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams Context * rsc = tls->mContext; \ 4287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams ScriptC * sc = (ScriptC *) tls->mScript 4387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 44a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float2 __attribute__((ext_vector_type(2))); 45a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float3 __attribute__((ext_vector_type(3))); 46a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float4 __attribute__((ext_vector_type(4))); 47a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char2 __attribute__((ext_vector_type(2))); 48a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char3 __attribute__((ext_vector_type(3))); 49a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char4 __attribute__((ext_vector_type(4))); 50a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar2 __attribute__((ext_vector_type(2))); 51a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar3 __attribute__((ext_vector_type(3))); 52a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar4 __attribute__((ext_vector_type(4))); 53a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef short short2 __attribute__((ext_vector_type(2))); 54a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef short short3 __attribute__((ext_vector_type(3))); 55a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef short short4 __attribute__((ext_vector_type(4))); 56a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned short ushort2 __attribute__((ext_vector_type(2))); 57a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned short ushort3 __attribute__((ext_vector_type(3))); 58a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned short ushort4 __attribute__((ext_vector_type(4))); 59a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int2 __attribute__((ext_vector_type(2))); 60a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int3 __attribute__((ext_vector_type(3))); 61a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int4 __attribute__((ext_vector_type(4))); 62a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint2 __attribute__((ext_vector_type(2))); 63a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint3 __attribute__((ext_vector_type(3))); 64a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint4 __attribute__((ext_vector_type(4))); 65a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef long long long2 __attribute__((ext_vector_type(2))); 66a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef long long long3 __attribute__((ext_vector_type(3))); 67a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef long long long4 __attribute__((ext_vector_type(4))); 68a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned long long ulong2 __attribute__((ext_vector_type(2))); 69a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned long long ulong3 __attribute__((ext_vector_type(3))); 70a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned long long ulong4 __attribute__((ext_vector_type(4))); 7187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 7487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Allocation 7587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 7687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll2(Allocation *a, RsAllocationUsageType source) { 7987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 8087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrAllocationSyncAll(rsc, sc, a, source); 8187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 8287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 8387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll(Allocation *a) { 8487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 8587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrAllocationSyncAll(rsc, sc, a, RS_ALLOCATION_USAGE_SCRIPT); 8687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 8787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 8874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukstatic void SC_AllocationCopy1DRange(Allocation *dstAlloc, 8974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstOff, 9074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstMip, 9174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t count, 9274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk Allocation *srcAlloc, 9374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcOff, uint32_t srcMip) { 9474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk GET_TLS(); 95a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk rsrAllocationCopy1DRange(rsc, dstAlloc, dstOff, dstMip, count, 96a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk srcAlloc, srcOff, srcMip); 9774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} 9874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 9974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukstatic void SC_AllocationCopy2DRange(Allocation *dstAlloc, 10074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstXoff, uint32_t dstYoff, 10174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstMip, uint32_t dstFace, 10274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t width, uint32_t height, 10374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk Allocation *srcAlloc, 10474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcXoff, uint32_t srcYoff, 10574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcMip, uint32_t srcFace) { 10674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk GET_TLS(); 107a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk rsrAllocationCopy2DRange(rsc, dstAlloc, 108a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk dstXoff, dstYoff, dstMip, dstFace, 109a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk width, height, 110a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk srcAlloc, 111a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk srcXoff, srcYoff, srcMip, srcFace); 11274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} 11374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 114b322033c13487a174bb9c26466e9684d1ff4de8dJason Samsstatic void SC_AllocationIoSend(Allocation *alloc) { 115b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams GET_TLS(); 116b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams rsdAllocationIoSend(rsc, alloc); 117b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams} 118b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 119b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 120b322033c13487a174bb9c26466e9684d1ff4de8dJason Samsstatic void SC_AllocationIoReceive(Allocation *alloc) { 121b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams GET_TLS(); 122b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams rsdAllocationIoReceive(rsc, alloc); 123b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams} 124b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 125b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams 12674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 12787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 12887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context 12987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 13087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 13187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) { 13287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 13387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindTexture(rsc, sc, pf, slot, a); 13487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 13587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 136a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindVertexConstant(ProgramVertex *pv, uint32_t slot, Allocation *a) { 137a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk GET_TLS(); 138a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk rsrBindConstant(rsc, sc, pv, slot, a); 139a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk} 140a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk 141a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindFragmentConstant(ProgramFragment *pf, uint32_t slot, Allocation *a) { 142a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk GET_TLS(); 143a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk rsrBindConstant(rsc, sc, pf, slot, a); 144a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk} 145a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk 14687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) { 14787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 14887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindSampler(rsc, sc, pf, slot, s); 14987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 15087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 15187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) { 15287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 15387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramStore(rsc, sc, ps); 15487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 15587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 15687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) { 15787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 15887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramFragment(rsc, sc, pf); 15987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 16087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 16187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) { 16287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 16387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramVertex(rsc, sc, pv); 16487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 16587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 16687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) { 16787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 16887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindProgramRaster(rsc, sc, pr); 16987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 17087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 17187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) { 17287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 17387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFrameBufferObjectColorTarget(rsc, sc, a, slot); 17487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 17587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 17687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) { 17787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 17887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFrameBufferObjectDepthTarget(rsc, sc, a); 17987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 18087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 18187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) { 18287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 18387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectColorTarget(rsc, sc, slot); 18487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 18587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 18687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) { 18787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 18887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectDepthTarget(rsc, sc); 18987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 19087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) { 19287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 19387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearFrameBufferObjectTargets(rsc, sc); 19487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 19587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 19787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 19887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP 19987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 20087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 20187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) { 20287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 20387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadProjectionMatrix(rsc, sc, m); 20487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 20587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 20687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) { 20787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 20887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadModelMatrix(rsc, sc, m); 20987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 21087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 21187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) { 21287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 21387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpLoadTextureMatrix(rsc, sc, m); 21487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 21587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 21687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) { 21787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 21887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrPfConstantColor(rsc, sc, pf, r, g, b, a); 21987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 22087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) { 22287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 22387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrVpGetProjectionMatrix(rsc, sc, m); 22487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 22587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 22787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 22887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing 22987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 23087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 23187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, 23287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x2, float y2, float z2, float u2, float v2, 23387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x3, float y3, float z3, float u3, float v3, 23487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x4, float y4, float z4, float u4, float v4) { 23587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 236414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 237414a46166126da6864258bd25ff183f9a3c6261dStephen Hines if (!rsc->setupCheck()) { 238414a46166126da6864258bd25ff183f9a3c6261dStephen Hines return; 239414a46166126da6864258bd25ff183f9a3c6261dStephen Hines } 240414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 241414a46166126da6864258bd25ff183f9a3c6261dStephen Hines RsdHal *dc = (RsdHal *)rsc->mHal.drv; 242414a46166126da6864258bd25ff183f9a3c6261dStephen Hines if (!dc->gl.shaderCache->setup(rsc)) { 243414a46166126da6864258bd25ff183f9a3c6261dStephen Hines return; 244414a46166126da6864258bd25ff183f9a3c6261dStephen Hines } 245414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 246414a46166126da6864258bd25ff183f9a3c6261dStephen Hines //ALOGE("Quad"); 247414a46166126da6864258bd25ff183f9a3c6261dStephen Hines //ALOGE("%4.2f, %4.2f, %4.2f", x1, y1, z1); 248414a46166126da6864258bd25ff183f9a3c6261dStephen Hines //ALOGE("%4.2f, %4.2f, %4.2f", x2, y2, z2); 249414a46166126da6864258bd25ff183f9a3c6261dStephen Hines //ALOGE("%4.2f, %4.2f, %4.2f", x3, y3, z3); 250414a46166126da6864258bd25ff183f9a3c6261dStephen Hines //ALOGE("%4.2f, %4.2f, %4.2f", x4, y4, z4); 251414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 252414a46166126da6864258bd25ff183f9a3c6261dStephen Hines float vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4}; 253414a46166126da6864258bd25ff183f9a3c6261dStephen Hines const float tex[] = {u1,v1, u2,v2, u3,v3, u4,v4}; 254414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 255414a46166126da6864258bd25ff183f9a3c6261dStephen Hines RsdVertexArray::Attrib attribs[2]; 256414a46166126da6864258bd25ff183f9a3c6261dStephen Hines attribs[0].set(GL_FLOAT, 3, 12, false, (uint32_t)vtx, "ATTRIB_position"); 257414a46166126da6864258bd25ff183f9a3c6261dStephen Hines attribs[1].set(GL_FLOAT, 2, 8, false, (uint32_t)tex, "ATTRIB_texture0"); 258414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 259414a46166126da6864258bd25ff183f9a3c6261dStephen Hines RsdVertexArray va(attribs, 2); 260414a46166126da6864258bd25ff183f9a3c6261dStephen Hines va.setup(rsc); 261414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 262414a46166126da6864258bd25ff183f9a3c6261dStephen Hines RSD_CALL_GL(glDrawArrays, GL_TRIANGLE_FAN, 0, 4); 26387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 26487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 26587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1, 26687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x2, float y2, float z2, 26787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x3, float y3, float z3, 26887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float x4, float y4, float z4) { 26987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 270414a46166126da6864258bd25ff183f9a3c6261dStephen Hines SC_DrawQuadTexCoords(x1, y1, z1, 0, 1, 271414a46166126da6864258bd25ff183f9a3c6261dStephen Hines x2, y2, z2, 1, 1, 272414a46166126da6864258bd25ff183f9a3c6261dStephen Hines x3, y3, z3, 1, 0, 273414a46166126da6864258bd25ff183f9a3c6261dStephen Hines x4, y4, z4, 0, 0); 27487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 27587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 27687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) { 27787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 278414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 279414a46166126da6864258bd25ff183f9a3c6261dStephen Hines ObjectBaseRef<const ProgramVertex> tmp(rsc->getProgramVertex()); 280414a46166126da6864258bd25ff183f9a3c6261dStephen Hines rsc->setProgramVertex(rsc->getDefaultProgramVertex()); 281414a46166126da6864258bd25ff183f9a3c6261dStephen Hines //rsc->setupCheck(); 282414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 283414a46166126da6864258bd25ff183f9a3c6261dStephen Hines //GLint crop[4] = {0, h, w, -h}; 284414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 285414a46166126da6864258bd25ff183f9a3c6261dStephen Hines float sh = rsc->getHeight(); 286414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 287414a46166126da6864258bd25ff183f9a3c6261dStephen Hines SC_DrawQuad(x, sh - y, z, 288414a46166126da6864258bd25ff183f9a3c6261dStephen Hines x+w, sh - y, z, 289414a46166126da6864258bd25ff183f9a3c6261dStephen Hines x+w, sh - (y+h), z, 290414a46166126da6864258bd25ff183f9a3c6261dStephen Hines x, sh - (y+h), z); 291414a46166126da6864258bd25ff183f9a3c6261dStephen Hines rsc->setProgramVertex((ProgramVertex *)tmp.get()); 29287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 29387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 29487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawRect(float x1, float y1, float x2, float y2, float z) { 29587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 296414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 297414a46166126da6864258bd25ff183f9a3c6261dStephen Hines SC_DrawQuad(x1, y2, z, x2, y2, z, x2, y1, z, x1, y1, z); 298414a46166126da6864258bd25ff183f9a3c6261dStephen Hines 29987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 30087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3019e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsstatic void SC_DrawPath(Path *p) { 3029e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams GET_TLS(); 3039e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams //rsrDrawPath(rsc, sc, p); 3049e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams rsdPathDraw(rsc, p); 3059e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams} 3069e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 30787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMesh(Mesh *m) { 30887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 30987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMesh(rsc, sc, m); 31087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 31187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 31287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) { 31387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 31487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMeshPrimitive(rsc, sc, m, primIndex); 31587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 31687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 31787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) { 31887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 31987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawMeshPrimitiveRange(rsc, sc, m, primIndex, start, len); 32087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 32187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 32287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m, 32387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float *minX, float *minY, float *minZ, 32487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams float *maxX, float *maxY, float *maxZ) { 32587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 32687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeshComputeBoundingBox(rsc, sc, m, minX, minY, minZ, maxX, maxY, maxZ); 32787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 32887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 32987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 33287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// 33387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 33487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 33687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Color(float r, float g, float b, float a) { 33787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 33887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrColor(rsc, sc, r, g, b, a); 33987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 34087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 34187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Finish() { 34287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 343653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsdGLFinish(rsc); 34487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 34587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 34687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) { 34787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 348653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsrPrepareClear(rsc, sc); 349653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsdGLClearColor(rsc, r, g, b, a); 35087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 35187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearDepth(float v) { 35387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 354653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsrPrepareClear(rsc, sc); 355653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk rsdGLClearDepth(rsc, v); 35687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 35787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 35887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetWidth() { 35987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 36087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetWidth(rsc, sc); 36187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 36287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 36387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetHeight() { 36487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 36587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetHeight(rsc, sc); 36687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 36787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 36887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) { 36987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 37087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawTextAlloc(rsc, sc, a, x, y); 37187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 37287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 37387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawText(const char *text, int x, int y) { 37487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 37587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrDrawText(rsc, sc, text, x, y); 37687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 37787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 37887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a, 37987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 38087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 38187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeasureTextAlloc(rsc, sc, a, left, right, top, bottom); 38287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 38387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 38487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureText(const char *text, 38587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 38687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 38787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrMeasureText(rsc, sc, text, left, right, top, bottom); 38887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 38987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 39087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFont(Font *f) { 39187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 39287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrBindFont(rsc, sc, f); 39387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 39487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 39587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) { 39687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 39787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrFontColor(rsc, sc, r, g, b, a); 39887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 39987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 40087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 40187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 40287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 40387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// 40487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 40587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 40687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_SetObject(ObjectBase **dst, ObjectBase * src) { 40787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 40887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrSetObject(rsc, sc, dst, src); 40987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 41087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 41187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearObject(ObjectBase **dst) { 41287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 41387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrClearObject(rsc, sc, dst); 41487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 41587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 41687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic bool SC_IsObject(const ObjectBase *src) { 41787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 41887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrIsObject(rsc, sc, src); 41987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 42087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 42187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 42287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 42387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 42487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic const Allocation * SC_GetAllocation(const void *ptr) { 42587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 426807fdc4b6f3fb893015ee136565d6151bb2332d3Jason Sams return rsdScriptGetAllocationForPointer(rsc, sc, ptr); 42787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 42887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 429c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAA(Script *target, 430c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 431c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out) { 432c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams GET_TLS(); 433c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams rsrForEach(rsc, sc, target, in, out, NULL, 0, NULL); 434c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams} 435c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 436c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAU(Script *target, 437c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 438c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 439c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr) { 44087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 44187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, NULL); 44287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 44387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 444c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAUS(Script *target, 445c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 446c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 447c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr, 448c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const RsScriptCall *call) { 44987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 45087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams rsrForEach(rsc, sc, target, in, out, usr, 0, call); 45187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 45287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 453c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAUL(Script *target, 454c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 455c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 456c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr, 457c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams uint32_t usrLen) { 458c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams GET_TLS(); 459c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams rsrForEach(rsc, sc, target, in, out, usr, usrLen, NULL); 460c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams} 461c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 462c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAULS(Script *target, 463c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *in, 464c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams Allocation *out, 465c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const void *usr, 466c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams uint32_t usrLen, 467c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams const RsScriptCall *call) { 468c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams GET_TLS(); 469c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams rsrForEach(rsc, sc, target, in, out, usr, usrLen, call); 470c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams} 471c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 47287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 47387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 47487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 47587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines 47687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 47787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 47887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic float SC_GetDt() { 47987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 48087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrGetDt(rsc, sc); 48187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 48287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 48387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t SC_Time(time_t *timer) { 48487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 48587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrTime(rsc, sc, timer); 48687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 48787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 48887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* SC_LocalTime(tm *local, time_t *timer) { 48987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 49087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrLocalTime(rsc, sc, local, timer); 49187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 49287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 49387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeMillis() { 49487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 49587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrUptimeMillis(rsc, sc); 49687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 49787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 49887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeNanos() { 49987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 50087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrUptimeNanos(rsc, sc); 50187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 50287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 50387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 50487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines 50587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 50687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 50787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient2(int cmdID, void *data, int len) { 50887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 50987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClient(rsc, sc, cmdID, data, len); 51087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 51187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 51287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient(int cmdID) { 51387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 51487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClient(rsc, sc, cmdID, NULL, 0); 51587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 51687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 51787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking2(int cmdID, void *data, int len) { 51887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 51987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, data, len); 52087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 52187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 52287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) { 52387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams GET_TLS(); 52487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return rsrToClientBlocking(rsc, sc, cmdID, NULL, 0); 52587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 52687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 52787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint SC_divsi3(int a, int b) { 52887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a / b; 52987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 53087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 53187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint SC_modsi3(int a, int b) { 53287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a % b; 53387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 53487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 53587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsunsigned int SC_udivsi3(unsigned int a, unsigned int b) { 53687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a / b; 53787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 53887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 53987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsunsigned int SC_umodsi3(unsigned int a, unsigned int b) { 54087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return a % b; 54187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 54287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 54387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugF(const char *s, float f) { 5444a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, 0x%08x", s, f, *((int *) (&f))); 54587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 54687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv2(const char *s, float f1, float f2) { 5474a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f}", s, f1, f2); 54887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 54987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv3(const char *s, float f1, float f2, float f3) { 5504a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f}", s, f1, f2, f3); 55187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 55287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) { 5534a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4); 55487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 5556537404d5ad7ec19f0f26533d695d39909782781Stephen Hinesstatic void SC_debugF2(const char *s, float2 f) { 5566537404d5ad7ec19f0f26533d695d39909782781Stephen Hines ALOGD("%s {%f, %f}", s, f.x, f.y); 5576537404d5ad7ec19f0f26533d695d39909782781Stephen Hines} 5586537404d5ad7ec19f0f26533d695d39909782781Stephen Hinesstatic void SC_debugF3(const char *s, float3 f) { 5596537404d5ad7ec19f0f26533d695d39909782781Stephen Hines ALOGD("%s {%f, %f, %f}", s, f.x, f.y, f.z); 5606537404d5ad7ec19f0f26533d695d39909782781Stephen Hines} 5616537404d5ad7ec19f0f26533d695d39909782781Stephen Hinesstatic void SC_debugF4(const char *s, float4 f) { 5626537404d5ad7ec19f0f26533d695d39909782781Stephen Hines ALOGD("%s {%f, %f, %f, %f}", s, f.x, f.y, f.z, f.w); 5636537404d5ad7ec19f0f26533d695d39909782781Stephen Hines} 56487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugD(const char *s, double d) { 5654a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d))); 56687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 56787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM4v4(const char *s, const float *f) { 5684a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]); 5694a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]); 5704a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]); 5714a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]); 57287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 57387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM3v3(const char *s, const float *f) { 5744a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]); 5754a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f", s, f[1], f[4], f[7]); 5764a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f, %f}",s, f[2], f[5], f[8]); 57787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 57887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugFM2v2(const char *s, const float *f) { 5794a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s {%f, %f", s, f[0], f[2]); 5804a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %f, %f}",s, f[1], f[3]); 58187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 582a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI8(const char *s, char c) { 583a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %hhd 0x%hhx", s, c, (unsigned char)c); 584a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 585a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugC2(const char *s, char2 c) { 586a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hhd, %hhd} 0x%hhx 0x%hhx", s, c.x, c.y, (unsigned char)c.x, (unsigned char)c.y); 587a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 588a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugC3(const char *s, char3 c) { 589a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 590a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 591a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugC4(const char *s, char4 c) { 592a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 593a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 594a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugU8(const char *s, unsigned char c) { 595a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %hhu 0x%hhx", s, c, c); 596a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 597a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUC2(const char *s, uchar2 c) { 598a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hhu, %hhu} 0x%hhx 0x%hhx", s, c.x, c.y, c.x, c.y); 599a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 600a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUC3(const char *s, uchar3 c) { 601a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 602a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 603a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUC4(const char *s, uchar4 c) { 604a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 605a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 606a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI16(const char *s, short c) { 607a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %hd 0x%hx", s, c, c); 608a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 609a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugS2(const char *s, short2 c) { 610a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hd, %hd} 0x%hx 0x%hx", s, c.x, c.y, c.x, c.y); 611a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 612a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugS3(const char *s, short3 c) { 613a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 614a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 615a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugS4(const char *s, short4 c) { 616a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 617a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 618a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugU16(const char *s, unsigned short c) { 619a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %hu 0x%hx", s, c, c); 620a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 621a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUS2(const char *s, ushort2 c) { 622a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%hu, %hu} 0x%hx 0x%hx", s, c.x, c.y, c.x, c.y); 623a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 624a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUS3(const char *s, ushort3 c) { 625a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 626a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 627a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUS4(const char *s, ushort4 c) { 628a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 629a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 63087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugI32(const char *s, int32_t i) { 631a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s %d 0x%x", s, i, i); 632a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 633a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI2(const char *s, int2 i) { 634a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%d, %d} 0x%x 0x%x", s, i.x, i.y, i.x, i.y); 635a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 636a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI3(const char *s, int3 i) { 637a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 638a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 639a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugI4(const char *s, int4 i) { 640a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 64187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 64287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugU32(const char *s, uint32_t i) { 6434a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %u 0x%x", s, i, i); 64487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 645a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUI2(const char *s, uint2 i) { 646a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%u, %u} 0x%x 0x%x", s, i.x, i.y, i.x, i.y); 647a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 648a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUI3(const char *s, uint3 i) { 649a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 650a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 651a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUI4(const char *s, uint4 i) { 652a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 653a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 65487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugLL64(const char *s, long long ll) { 6554a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %lld 0x%llx", s, ll, ll); 65687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 657a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugL2(const char *s, long2 ll) { 658a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%lld, %lld} 0x%llx 0x%llx", s, ll.x, ll.y, ll.x, ll.y); 659a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 660a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugL3(const char *s, long3 ll) { 661a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 662a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 663a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugL4(const char *s, long4 ll) { 664a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 665a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 66687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugULL64(const char *s, unsigned long long ll) { 6674a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %llu 0x%llx", s, ll, ll); 66887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 669a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUL2(const char *s, ulong2 ll) { 670a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma ALOGD("%s {%llu, %llu} 0x%llx 0x%llx", s, ll.x, ll.y, ll.x, ll.y); 671a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 672a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUL3(const char *s, ulong3 ll) { 673a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 674a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 675a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmastatic void SC_debugUL4(const char *s, ulong4 ll) { 676a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev 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); 677a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma} 67887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_debugP(const char *s, const void *p) { 6794a48244edc93b50bb9af35f7ec03825c8f7471c9Steve Block ALOGD("%s %p", s, p); 68087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 68187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 68287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 68387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 68487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Stub implementation 68587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams////////////////////////////////////////////////////////////////////////////// 68687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 68787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// llvm name mangling ref 68887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// <builtin-type> ::= v # void 68987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= b # bool 69087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= c # char 69187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= a # signed char 69287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= h # unsigned char 69387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= s # short 69487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= t # unsigned short 69587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= i # int 69687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= j # unsigned int 69787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= l # long 69887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= m # unsigned long 69987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= x # long long, __int64 70087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= y # unsigned long long, __int64 70187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= f # float 70287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// ::= d # double 70387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 70487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic RsdSymbolTable gSyms[] = { 70587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "memset", (void *)&memset, true }, 70687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "memcpy", (void *)&memcpy, true }, 70787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 70887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Refcounting 70987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true }, 71087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true }, 71187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true }, 71287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 71387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true }, 71487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true }, 71587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true }, 71687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 71787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true }, 71887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true }, 71987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true }, 72087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 72187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true }, 72287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true }, 72387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true }, 72487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 72587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true }, 72687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true }, 72787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true }, 72887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 7299e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z11rsSetObjectP7rs_pathS_", (void *)&SC_SetObject, true }, 7309e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z13rsClearObjectP7rs_path", (void *)&SC_ClearObject, true }, 7319e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z10rsIsObject7rs_path", (void *)&SC_IsObject, true }, 7329e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 73387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true }, 73487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true }, 73587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true }, 73687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 73787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true }, 73887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true }, 73987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true }, 74087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 74187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true }, 74287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true }, 74387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true }, 74487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 74587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true }, 74687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true }, 74787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true }, 74887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 74987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true }, 75087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true }, 75187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true }, 75287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 75387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true }, 75487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true }, 75587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true }, 75687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 75787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Allocation ops 75887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true }, 75987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false }, 76087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false }, 76174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false }, 76287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true }, 763b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams { "_Z18rsAllocationIoSend13rs_allocation", (void *)&SC_AllocationIoSend, false }, 764b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams { "_Z21rsAllocationIoReceive13rs_allocation", (void *)&SC_AllocationIoReceive, false }, 76574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false }, 76674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false }, 76787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 76887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Messaging 76987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 77087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsSendToClienti", (void *)&SC_ToClient, false }, 77187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false }, 77287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false }, 77387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false }, 77487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 77587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false }, 77687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false }, 77787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false }, 77887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false }, 77987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false }, 78087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false }, 781a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk { "_Z15rsgBindConstant19rs_program_fragmentj13rs_allocation", (void *)&SC_BindFragmentConstant, false }, 782a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk { "_Z15rsgBindConstant17rs_program_vertexj13rs_allocation", (void *)&SC_BindVertexConstant, false }, 78387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 78487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false }, 78587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false }, 78687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false }, 78787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 78887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false }, 78987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 79087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false }, 79187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 79287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false }, 79387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false }, 79487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 79587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 79687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false }, 79787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false }, 79887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false }, 79987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false }, 80087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 80187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false }, 80287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false }, 80387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false }, 80487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false }, 80587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 8069e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams { "_Z11rsgDrawPath7rs_path", (void *)&SC_DrawPath, false }, 8079e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 80887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false }, 80987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false }, 81087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 81187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false }, 81287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false }, 81387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false }, 81487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false }, 81587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 81687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false }, 81787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false }, 81887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 81987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false }, 82087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false }, 82187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false }, 82287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false }, 82387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false }, 82487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 825aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true }, 826aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true }, 827f598811a60088236222bb1879503842094ca378bStephen Hines { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK14rs_script_call", (void *)&SC_ForEach_SAAUS, true }, 828aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true }, 829f598811a60088236222bb1879503842094ca378bStephen Hines { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK14rs_script_call", (void *)&SC_ForEach_SAAULS, true }, 83087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 83187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // time 83287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z6rsTimePi", (void *)&SC_Time, true }, 83387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true }, 83487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true }, 83587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true }, 83687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsGetDtv", (void*)&SC_GetDt, false }, 83787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 83887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // misc 83987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z5colorffff", (void *)&SC_Color, false }, 84087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z9rsgFinishv", (void *)&SC_Finish, false }, 84187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 84287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Debug 84387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcf", (void *)&SC_debugF, true }, 84487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcff", (void *)&SC_debugFv2, true }, 84587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcfff", (void *)&SC_debugFv3, true }, 84687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcffff", (void *)&SC_debugFv4, true }, 8476537404d5ad7ec19f0f26533d695d39909782781Stephen Hines { "_Z7rsDebugPKcDv2_f", (void *)&SC_debugF2, true }, 8486537404d5ad7ec19f0f26533d695d39909782781Stephen Hines { "_Z7rsDebugPKcDv3_f", (void *)&SC_debugF3, true }, 8496537404d5ad7ec19f0f26533d695d39909782781Stephen Hines { "_Z7rsDebugPKcDv4_f", (void *)&SC_debugF4, true }, 85087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcd", (void *)&SC_debugD, true }, 85187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix4x4", (void *)&SC_debugFM4v4, true }, 85287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix3x3", (void *)&SC_debugFM3v3, true }, 85387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPK12rs_matrix2x2", (void *)&SC_debugFM2v2, true }, 854a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcc", (void *)&SC_debugI8, true }, 855a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_c", (void *)&SC_debugC2, true }, 856a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_c", (void *)&SC_debugC3, true }, 857a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_c", (void *)&SC_debugC4, true }, 858a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKch", (void *)&SC_debugU8, true }, 859a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_h", (void *)&SC_debugUC2, true }, 860a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_h", (void *)&SC_debugUC3, true }, 861a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_h", (void *)&SC_debugUC4, true }, 862a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcs", (void *)&SC_debugI16, true }, 863a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_s", (void *)&SC_debugS2, true }, 864a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_s", (void *)&SC_debugS3, true }, 865a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_s", (void *)&SC_debugS4, true }, 866a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKct", (void *)&SC_debugU16, true }, 867a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_t", (void *)&SC_debugUS2, true }, 868a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_t", (void *)&SC_debugUS3, true }, 869a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_t", (void *)&SC_debugUS4, true }, 87087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKci", (void *)&SC_debugI32, true }, 871a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_i", (void *)&SC_debugI2, true }, 872a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_i", (void *)&SC_debugI3, true }, 873a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_i", (void *)&SC_debugI4, true }, 87487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcj", (void *)&SC_debugU32, true }, 875a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_j", (void *)&SC_debugUI2, true }, 876a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_j", (void *)&SC_debugUI3, true }, 877a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_j", (void *)&SC_debugUI4, true }, 87887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // Both "long" and "unsigned long" need to be redirected to their 87987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // 64-bit counterparts, since we have hacked Slang to use 64-bit 88087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams // for "long" on Arm (to be similar to Java). 88187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcl", (void *)&SC_debugLL64, true }, 882a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_l", (void *)&SC_debugL2, true }, 883a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_l", (void *)&SC_debugL3, true }, 884a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_l", (void *)&SC_debugL4, true }, 88587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcm", (void *)&SC_debugULL64, true }, 886a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_m", (void *)&SC_debugUL2, true }, 887a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_m", (void *)&SC_debugUL3, true }, 888a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_m", (void *)&SC_debugUL4, true }, 88987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcx", (void *)&SC_debugLL64, true }, 890a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_x", (void *)&SC_debugL2, true }, 891a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_x", (void *)&SC_debugL3, true }, 892a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_x", (void *)&SC_debugL4, true }, 89387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcy", (void *)&SC_debugULL64, true }, 894a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv2_y", (void *)&SC_debugUL2, true }, 895a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv3_y", (void *)&SC_debugUL3, true }, 896a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharma { "_Z7rsDebugPKcDv4_y", (void *)&SC_debugUL4, true }, 89787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { "_Z7rsDebugPKcPKv", (void *)&SC_debugP, true }, 89887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 89987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams { NULL, NULL, false } 90087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}; 90187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 90287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 90387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid* rsdLookupRuntimeStub(void* pContext, char const* name) { 90487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams ScriptC *s = (ScriptC *)pContext; 90587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams RsdSymbolTable *syms = gSyms; 90687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams const RsdSymbolTable *sym = rsdLookupSymbolMath(name); 90787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 90887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!sym) { 90987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams while (syms->mPtr) { 91087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (!strcmp(syms->mName, name)) { 91187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams sym = syms; 91287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 91387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams syms++; 91487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 91587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 91687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 91787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams if (sym) { 91887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams s->mHal.info.isThreadable &= sym->threadable; 91987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return sym->mPtr; 92087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 921af12ac6a08651464f8d823add667c706f993b587Steve Block ALOGE("ScriptC sym lookup failed for %s", name); 92287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams return NULL; 92387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 92487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 92587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 926