rsdRuntimeStubs.cpp revision 5261a5ea546ff358edd5aac7602fc4132434f481
187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams/*
2709a0978ae141198018ca9769f8d96292a8928e6Jason Sams * Copyright (C) 2011-2012 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
289e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams#include "rsdPath.h"
29b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams#include "rsdAllocation.h"
30414a46166126da6864258bd25ff183f9a3c6261dStephen Hines#include "rsdShaderCache.h"
31414a46166126da6864258bd25ff183f9a3c6261dStephen Hines#include "rsdVertexArray.h"
3287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include <time.h>
3487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android;
3687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android::renderscript;
3787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float2 __attribute__((ext_vector_type(2)));
39a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float3 __attribute__((ext_vector_type(3)));
40a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float4 __attribute__((ext_vector_type(4)));
415261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef double double2 __attribute__((ext_vector_type(2)));
425261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef double double3 __attribute__((ext_vector_type(3)));
435261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef double double4 __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
695261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint8_t uchar;
705261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint16_t ushort;
715261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint32_t uint;
725261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint64_t ulong;
7387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
7487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
7587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Allocation
7687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
7787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
7887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
7987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll2(Allocation *a, RsAllocationUsageType source) {
80709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
81709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrAllocationSyncAll(rsc, a, source);
8287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
8387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
8487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_AllocationSyncAll(Allocation *a) {
85709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
86709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrAllocationSyncAll(rsc, a, RS_ALLOCATION_USAGE_SCRIPT);
8787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
8887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
8974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukstatic void SC_AllocationCopy1DRange(Allocation *dstAlloc,
9074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstOff,
9174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip,
9274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t count,
9374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     Allocation *srcAlloc,
9474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcOff, uint32_t srcMip) {
95709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
96a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk    rsrAllocationCopy1DRange(rsc, dstAlloc, dstOff, dstMip, count,
97a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             srcAlloc, srcOff, srcMip);
9874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
9974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
10074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukstatic void SC_AllocationCopy2DRange(Allocation *dstAlloc,
10174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstXoff, uint32_t dstYoff,
10274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip, uint32_t dstFace,
10374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t width, uint32_t height,
10474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     Allocation *srcAlloc,
10574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcXoff, uint32_t srcYoff,
10674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcMip, uint32_t srcFace) {
107709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
108a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk    rsrAllocationCopy2DRange(rsc, dstAlloc,
109a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             dstXoff, dstYoff, dstMip, dstFace,
110a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             width, height,
111a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             srcAlloc,
112a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             srcXoff, srcYoff, srcMip, srcFace);
11374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
11474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
115b322033c13487a174bb9c26466e9684d1ff4de8dJason Samsstatic void SC_AllocationIoSend(Allocation *alloc) {
116709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
117b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    rsdAllocationIoSend(rsc, alloc);
118b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
119b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
120b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
121b322033c13487a174bb9c26466e9684d1ff4de8dJason Samsstatic void SC_AllocationIoReceive(Allocation *alloc) {
122709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
123b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    rsdAllocationIoReceive(rsc, alloc);
124b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
125b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
126b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
12774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
12887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
12987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context
13087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
13187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
13287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) {
133709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
134709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindTexture(rsc, pf, slot, a);
13587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
13687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
137a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindVertexConstant(ProgramVertex *pv, uint32_t slot, Allocation *a) {
138709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
139709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pv, slot, a);
140a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
141a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
142a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindFragmentConstant(ProgramFragment *pf, uint32_t slot, Allocation *a) {
143709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
144709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pf, slot, a);
145a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
146a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
14787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) {
148709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
149709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindSampler(rsc, pf, slot, s);
15087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
15187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
15287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) {
153709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
154709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramStore(rsc, ps);
15587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
15687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
15787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) {
158709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
159709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramFragment(rsc, pf);
16087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
16187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
16287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) {
163709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
164709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramVertex(rsc, pv);
16587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
16687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
16787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) {
168709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
169709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramRaster(rsc, pr);
17087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
17187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
17287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) {
173709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
174709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectColorTarget(rsc, a, slot);
17587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
17687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
17787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) {
178709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
179709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectDepthTarget(rsc, a);
18087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
18187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
18287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) {
183709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
184709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectColorTarget(rsc, slot);
18587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
18687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
18787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) {
188709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
189709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectDepthTarget(rsc);
19087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
19187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
19287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) {
193709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
194709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectTargets(rsc);
19587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
19687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
19787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
19887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
19987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP
20087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
20187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
20287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) {
203709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
204709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadProjectionMatrix(rsc, m);
20587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
20687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
20787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) {
208709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
209709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadModelMatrix(rsc, m);
21087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
21187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
21287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) {
213709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
214709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadTextureMatrix(rsc, m);
21587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
21687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
21787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) {
218709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
219709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPfConstantColor(rsc, pf, r, g, b, a);
22087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
22187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
22287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) {
223709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
224709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpGetProjectionMatrix(rsc, m);
22587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
22687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
22787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
22887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
22987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing
23087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
23187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
23287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
23387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x2, float y2, float z2, float u2, float v2,
23487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x3, float y3, float z3, float u3, float v3,
23587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x4, float y4, float z4, float u4, float v4) {
236709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
237414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
238414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!rsc->setupCheck()) {
239414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
240414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
241414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
242414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdHal *dc = (RsdHal *)rsc->mHal.drv;
243414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!dc->gl.shaderCache->setup(rsc)) {
244414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
245414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
246414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
247414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("Quad");
248414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x1, y1, z1);
249414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x2, y2, z2);
250414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x3, y3, z3);
251414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x4, y4, z4);
252414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
253414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    float vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4};
254414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    const float tex[] = {u1,v1, u2,v2, u3,v3, u4,v4};
255414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
256414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray::Attrib attribs[2];
257414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    attribs[0].set(GL_FLOAT, 3, 12, false, (uint32_t)vtx, "ATTRIB_position");
258414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    attribs[1].set(GL_FLOAT, 2, 8, false, (uint32_t)tex, "ATTRIB_texture0");
259414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
260414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray va(attribs, 2);
261414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    va.setup(rsc);
262414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
263414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RSD_CALL_GL(glDrawArrays, GL_TRIANGLE_FAN, 0, 4);
26487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
26587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
26687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1,
26787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x2, float y2, float z2,
26887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x3, float y3, float z3,
26987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x4, float y4, float z4) {
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) {
277709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
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) {
295414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuad(x1, y2, z, x2, y2, z, x2, y1, z, x1, y1, z);
29687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
29787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2989e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsstatic void SC_DrawPath(Path *p) {
299709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
3009e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    rsdPathDraw(rsc, p);
3019e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams}
3029e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
30387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMesh(Mesh *m) {
304709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
305709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMesh(rsc, m);
30687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
30787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
30887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) {
309709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
310709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitive(rsc, m, primIndex);
31187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
31287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
31387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) {
314709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
315709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitiveRange(rsc, m, primIndex, start, len);
31687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
31787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
31887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m,
31987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *minX, float *minY, float *minZ,
32087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *maxX, float *maxY, float *maxZ) {
321709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
322709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeshComputeBoundingBox(rsc, m, minX, minY, minZ, maxX, maxY, maxZ);
32387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
32487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
32587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
32687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
32787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
32887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
32987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
33087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
33187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
33287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Color(float r, float g, float b, float a) {
333709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
334709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrColor(rsc, r, g, b, a);
33587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
33687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
33787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Finish() {
338709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
339653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLFinish(rsc);
34087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
34187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
34287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) {
343709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
344709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
345653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearColor(rsc, r, g, b, a);
34687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
34787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
34887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearDepth(float v) {
349709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
350709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
351653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearDepth(rsc, v);
35287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
35387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
35487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetWidth() {
355709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
356709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetWidth(rsc);
35787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
35887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
35987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetHeight() {
360709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
361709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetHeight(rsc);
36287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
36387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) {
365709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
366709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawTextAlloc(rsc, a, x, y);
36787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
36887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawText(const char *text, int x, int y) {
370709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
371709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawText(rsc, text, x, y);
37287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
37387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
37487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a,
37587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                         int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
376709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
377709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureTextAlloc(rsc, a, left, right, top, bottom);
37887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
37987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureText(const char *text,
38187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                    int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
382709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
383709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureText(rsc, text, left, right, top, bottom);
38487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
38587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFont(Font *f) {
387709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
388709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFont(rsc, f);
38987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
39087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) {
392709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
393709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrFontColor(rsc, r, g, b, a);
39487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
39587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
39987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
40087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
40187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
40287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_SetObject(ObjectBase **dst, ObjectBase * src) {
403709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
404709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrSetObject(rsc, dst, src);
40587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
40687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
40787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearObject(ObjectBase **dst) {
408709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
409709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearObject(rsc, dst);
41087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
41187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic bool SC_IsObject(const ObjectBase *src) {
413709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
414709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrIsObject(rsc, src);
41587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
41687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
42087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic const Allocation * SC_GetAllocation(const void *ptr) {
421709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
422709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
423807fdc4b6f3fb893015ee136565d6151bb2332d3Jason Sams    return rsdScriptGetAllocationForPointer(rsc, sc, ptr);
42487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
42587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
426c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAA(Script *target,
427c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                            Allocation *in,
428c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                            Allocation *out) {
429709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
430709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrForEach(rsc, target, in, out, NULL, 0, NULL);
431c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams}
432c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
433c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAU(Script *target,
434c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                            Allocation *in,
435c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                            Allocation *out,
436c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                            const void *usr) {
437709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
438709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrForEach(rsc, target, in, out, usr, 0, NULL);
43987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
44087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
441c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAUS(Script *target,
442c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             Allocation *in,
443c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             Allocation *out,
444c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             const void *usr,
445c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             const RsScriptCall *call) {
446709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
447709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrForEach(rsc, target, in, out, usr, 0, call);
44887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
44987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
450c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAUL(Script *target,
451c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             Allocation *in,
452c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             Allocation *out,
453c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             const void *usr,
454c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             uint32_t usrLen) {
455709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
456709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrForEach(rsc, target, in, out, usr, usrLen, NULL);
457c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams}
458c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
459c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samsstatic void SC_ForEach_SAAULS(Script *target,
460c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              Allocation *in,
461c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              Allocation *out,
462c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              const void *usr,
463c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              uint32_t usrLen,
464c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              const RsScriptCall *call) {
465709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
466709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrForEach(rsc, target, in, out, usr, usrLen, call);
467c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams}
468c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
46987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
47287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines
47387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
47487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic float SC_GetDt() {
476709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
477709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
47887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    return rsrGetDt(rsc, sc);
47987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
48087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
48187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t SC_Time(time_t *timer) {
482709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
483709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrTime(rsc, timer);
48487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
48587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
48687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* SC_LocalTime(tm *local, time_t *timer) {
487709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
488709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrLocalTime(rsc, local, timer);
48987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
49087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
49187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeMillis() {
492709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
493709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeMillis(rsc);
49487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
49587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
49687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeNanos() {
497709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
498709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeNanos(rsc);
49987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
50087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
50187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
50287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines
50387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
50487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
50587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient2(int cmdID, void *data, int len) {
506709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
507709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClient(rsc, cmdID, data, len);
50887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
50987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
51087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient(int cmdID) {
511709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
512709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClient(rsc, cmdID, NULL, 0);
51387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
51487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
51587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking2(int cmdID, void *data, int len) {
516709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
517709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClientBlocking(rsc, cmdID, data, len);
51887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
51987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) {
521709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
522709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClientBlocking(rsc, cmdID, NULL, 0);
52387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
52487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5265261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt1D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x) {
5275261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5285261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
5295261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
5305261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5315261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
5325261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
5335261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
5345261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
5355261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
5365261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
5375261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5385261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (vecSize != e->getVectorSize()) {
5395261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
5405261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
5415261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
5425261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
5435261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5445261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (dt != e->getType()) {
5455261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
5465261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
5475261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
5485261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
5495261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5505261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
5515261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
5525261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x)];
5535261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
5545261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5555261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt2D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y) {
5565261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5575261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
5585261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
5595261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5605261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
5615261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
5625261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
5635261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
5645261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
5655261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
5665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5675261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
5685261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
5695261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
5705261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
5715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
5725261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5735261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (vecSize != e->getVectorSize()) {
5745261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
5755261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
5765261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
5775261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
5785261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5795261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (dt != e->getType()) {
5805261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
5815261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
5825261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
5835261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
5845261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5855261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
5865261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
5875261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
5885261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
5895261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
5905261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5915261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt3D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y, uint32_t z) {
5925261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5935261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
5945261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
5955261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
5965261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
5975261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
5985261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
5995261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
6005261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
6015261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
6025261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
6035261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
6045261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
6055261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
6065261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
6075261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
6085261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
6095261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (z >= t->getLODDimZ(0)) {
6105261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Z %i of %i", z, t->getLODDimZ(0));
6115261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
6125261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
6135261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
6145261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
6155261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (vecSize != e->getVectorSize()) {
6165261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
6175261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
6185261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
6195261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
6205261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
6215261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (dt != e->getType()) {
6225261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
6235261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf);
6245261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
6255261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
6265261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
6275261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
6285261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
6295261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
6305261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
6315261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
6325261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
6335261a5ea546ff358edd5aac7602fc4132434f481Jason Sams#define ELEMENT_AT(T, DT, VS)                                               \
6345261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    static void SC_SetElementAt1_##T(Allocation *a, T val, uint32_t x) {           \
6355261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        void *r = ElementAt1D(a, DT, VS, x);                            \
6365261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        if (r != NULL) ((T *)r)[0] = val;                               \
6375261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
6385261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
6395261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    static void SC_SetElementAt2_##T(Allocation * a, T val, uint32_t x, uint32_t y) { \
6405261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        void *r = ElementAt2D(a, DT, VS, x, y);            \
6415261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        if (r != NULL) ((T *)r)[0] = val;                               \
6425261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
6435261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
6445261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    static void SC_SetElementAt3_##T(Allocation * a, T val, uint32_t x, uint32_t y, uint32_t z) { \
6455261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        void *r = ElementAt3D(a, DT, VS, x, y, z);         \
6465261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        if (r != NULL) ((T *)r)[0] = val;                               \
6475261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
6485261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
6495261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    static T SC_GetElementAt1_##T(Allocation * a, uint32_t x) {                  \
6505261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        void *r = ElementAt1D(a, DT, VS, x);               \
6515261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        if (r != NULL) return ((T *)r)[0];                              \
6525261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        ALOGE("Error from %s", __PRETTY_FUNCTION__);                    \
6535261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return 0;                                                       \
6545261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
6555261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    static T SC_GetElementAt2_##T(Allocation * a, uint32_t x, uint32_t y) {      \
6565261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        void *r = ElementAt2D(a, DT, VS, x, y);            \
6575261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        if (r != NULL) return ((T *)r)[0];                              \
6585261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        ALOGE("Error from %s", __PRETTY_FUNCTION__);                    \
6595261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return 0;                                                       \
6605261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
6615261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    static T SC_GetElementAt3_##T(Allocation * a, uint32_t x, uint32_t y, uint32_t z) { \
6625261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        void *r = ElementAt3D(a, DT, VS, x, y, z);         \
6635261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        if (r != NULL) return ((T *)r)[0];                              \
6645261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        ALOGE("Error from %s", __PRETTY_FUNCTION__);                    \
6655261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return 0;                                                       \
6665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
6675261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
6685261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char, RS_TYPE_SIGNED_8, 1)
6695261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char2, RS_TYPE_SIGNED_8, 2)
6705261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char3, RS_TYPE_SIGNED_8, 3)
6715261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char4, RS_TYPE_SIGNED_8, 4)
6725261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar, RS_TYPE_UNSIGNED_8, 1)
6735261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar2, RS_TYPE_UNSIGNED_8, 2)
6745261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar3, RS_TYPE_UNSIGNED_8, 3)
6755261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar4, RS_TYPE_UNSIGNED_8, 4)
6765261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short, RS_TYPE_SIGNED_16, 1)
6775261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short2, RS_TYPE_SIGNED_16, 2)
6785261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short3, RS_TYPE_SIGNED_16, 3)
6795261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short4, RS_TYPE_SIGNED_16, 4)
6805261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort, RS_TYPE_UNSIGNED_16, 1)
6815261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort2, RS_TYPE_UNSIGNED_16, 2)
6825261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort3, RS_TYPE_UNSIGNED_16, 3)
6835261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort4, RS_TYPE_UNSIGNED_16, 4)
6845261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int, RS_TYPE_SIGNED_32, 1)
6855261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int2, RS_TYPE_SIGNED_32, 2)
6865261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int3, RS_TYPE_SIGNED_32, 3)
6875261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int4, RS_TYPE_SIGNED_32, 4)
6885261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint, RS_TYPE_UNSIGNED_32, 1)
6895261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint2, RS_TYPE_UNSIGNED_32, 2)
6905261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint3, RS_TYPE_UNSIGNED_32, 3)
6915261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint4, RS_TYPE_UNSIGNED_32, 4)
6925261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long, RS_TYPE_SIGNED_64, 1)
6935261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long2, RS_TYPE_SIGNED_64, 2)
6945261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long3, RS_TYPE_SIGNED_64, 3)
6955261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long4, RS_TYPE_SIGNED_64, 4)
6965261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong, RS_TYPE_UNSIGNED_64, 1)
6975261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong2, RS_TYPE_UNSIGNED_64, 2)
6985261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong3, RS_TYPE_UNSIGNED_64, 3)
6995261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong4, RS_TYPE_UNSIGNED_64, 4)
7005261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float, RS_TYPE_FLOAT_32, 1)
7015261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float2, RS_TYPE_FLOAT_32, 2)
7025261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float3, RS_TYPE_FLOAT_32, 3)
7035261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float4, RS_TYPE_FLOAT_32, 4)
7045261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double, RS_TYPE_FLOAT_64, 1)
7055261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double2, RS_TYPE_FLOAT_64, 2)
7065261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double3, RS_TYPE_FLOAT_64, 3)
7075261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double4, RS_TYPE_FLOAT_64, 4)
7085261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7095261a5ea546ff358edd5aac7602fc4132434f481Jason Sams#undef ELEMENT_AT
71087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
71187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
71287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Stub implementation
71387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
71487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
71587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// llvm name mangling ref
71687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//  <builtin-type> ::= v  # void
71787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= b  # bool
71887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= c  # char
71987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= a  # signed char
72087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= h  # unsigned char
72187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= s  # short
72287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= t  # unsigned short
72387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= i  # int
72487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= j  # unsigned int
72587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= l  # long
72687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= m  # unsigned long
72787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= x  # long long, __int64
72887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= y  # unsigned long long, __int64
72987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= f  # float
73087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= d  # double
73187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
732709a0978ae141198018ca9769f8d96292a8928e6Jason Samsstatic RsdCpuReference::CpuSymbol gSyms[] = {
7335261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    // Debug runtime
7345261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationcj", (void *)&SC_GetElementAt1_uchar, true },
7355261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationj", (void *)&SC_GetElementAt1_uchar2, true },
7365261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationj", (void *)&SC_GetElementAt1_uchar3, true },
7375261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationj", (void *)&SC_GetElementAt1_uchar4, true },
7385261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationjj", (void *)&SC_GetElementAt2_uchar, true },
7395261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationjj", (void *)&SC_GetElementAt2_uchar2, true },
7405261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationjj", (void *)&SC_GetElementAt2_uchar3, true },
7415261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationjj", (void *)&SC_GetElementAt2_uchar4, true },
7425261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationjjj", (void *)&SC_GetElementAt3_uchar, true },
7435261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationjjj", (void *)&SC_GetElementAt3_uchar2, true },
7445261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationjjj", (void *)&SC_GetElementAt3_uchar3, true },
7455261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationjjj", (void *)&SC_GetElementAt3_uchar4, true },
7465261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7475261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_char13rs_allocationj", (void *)&SC_GetElementAt1_char, true },
7485261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_char213rs_allocationj", (void *)&SC_GetElementAt1_char2, true },
7495261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_char313rs_allocationj", (void *)&SC_GetElementAt1_char3, true },
7505261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_char413rs_allocationj", (void *)&SC_GetElementAt1_char4, true },
7515261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_char13rs_allocationjj", (void *)&SC_GetElementAt2_char, true },
7525261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_char213rs_allocationjj", (void *)&SC_GetElementAt2_char2, true },
7535261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_char313rs_allocationjj", (void *)&SC_GetElementAt2_char3, true },
7545261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_char413rs_allocationjj", (void *)&SC_GetElementAt2_char4, true },
7555261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_char13rs_allocationjjj", (void *)&SC_GetElementAt3_char, true },
7565261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_char213rs_allocationjjj", (void *)&SC_GetElementAt3_char2, true },
7575261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_char313rs_allocationjjj", (void *)&SC_GetElementAt3_char3, true },
7585261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_char413rs_allocationjjj", (void *)&SC_GetElementAt3_char4, true },
7595261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7605261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationcj", (void *)&SC_GetElementAt1_ushort, true },
7615261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationj", (void *)&SC_GetElementAt1_ushort2, true },
7625261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationj", (void *)&SC_GetElementAt1_ushort3, true },
7635261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationj", (void *)&SC_GetElementAt1_ushort4, true },
7645261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationjj", (void *)&SC_GetElementAt2_ushort, true },
7655261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationjj", (void *)&SC_GetElementAt2_ushort2, true },
7665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationjj", (void *)&SC_GetElementAt2_ushort3, true },
7675261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationjj", (void *)&SC_GetElementAt2_ushort4, true },
7685261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationjjj", (void *)&SC_GetElementAt3_ushort, true },
7695261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationjjj", (void *)&SC_GetElementAt3_ushort2, true },
7705261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationjjj", (void *)&SC_GetElementAt3_ushort3, true },
7715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationjjj", (void *)&SC_GetElementAt3_ushort4, true },
7725261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7735261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_short13rs_allocationj", (void *)&SC_GetElementAt1_short, true },
7745261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_short213rs_allocationj", (void *)&SC_GetElementAt1_short2, true },
7755261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_short313rs_allocationj", (void *)&SC_GetElementAt1_short3, true },
7765261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_short413rs_allocationj", (void *)&SC_GetElementAt1_short4, true },
7775261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_short13rs_allocationjj", (void *)&SC_GetElementAt2_short, true },
7785261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_short213rs_allocationjj", (void *)&SC_GetElementAt2_short2, true },
7795261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_short313rs_allocationjj", (void *)&SC_GetElementAt2_short3, true },
7805261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_short413rs_allocationjj", (void *)&SC_GetElementAt2_short4, true },
7815261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_short13rs_allocationjjj", (void *)&SC_GetElementAt3_short, true },
7825261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_short213rs_allocationjjj", (void *)&SC_GetElementAt3_short2, true },
7835261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_short313rs_allocationjjj", (void *)&SC_GetElementAt3_short3, true },
7845261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_short413rs_allocationjjj", (void *)&SC_GetElementAt3_short4, true },
7855261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7865261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_uint13rs_allocationcj", (void *)&SC_GetElementAt1_uint, true },
7875261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uint213rs_allocationj", (void *)&SC_GetElementAt1_uint2, true },
7885261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uint313rs_allocationj", (void *)&SC_GetElementAt1_uint3, true },
7895261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uint413rs_allocationj", (void *)&SC_GetElementAt1_uint4, true },
7905261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_uint13rs_allocationjj", (void *)&SC_GetElementAt2_uint, true },
7915261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uint213rs_allocationjj", (void *)&SC_GetElementAt2_uint2, true },
7925261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uint313rs_allocationjj", (void *)&SC_GetElementAt2_uint3, true },
7935261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uint413rs_allocationjj", (void *)&SC_GetElementAt2_uint4, true },
7945261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_uint13rs_allocationjjj", (void *)&SC_GetElementAt3_uint, true },
7955261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uint213rs_allocationjjj", (void *)&SC_GetElementAt3_uint2, true },
7965261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uint313rs_allocationjjj", (void *)&SC_GetElementAt3_uint3, true },
7975261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_uint413rs_allocationjjj", (void *)&SC_GetElementAt3_uint4, true },
7985261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7995261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z18rsGetElementAt_int13rs_allocationj", (void *)&SC_GetElementAt1_int, true },
8005261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_int213rs_allocationj", (void *)&SC_GetElementAt1_int2, true },
8015261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_int313rs_allocationj", (void *)&SC_GetElementAt1_int3, true },
8025261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_int413rs_allocationj", (void *)&SC_GetElementAt1_int4, true },
8035261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z18rsGetElementAt_int13rs_allocationjj", (void *)&SC_GetElementAt2_int, true },
8045261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_int213rs_allocationjj", (void *)&SC_GetElementAt2_int2, true },
8055261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_int313rs_allocationjj", (void *)&SC_GetElementAt2_int3, true },
8065261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_int413rs_allocationjj", (void *)&SC_GetElementAt2_int4, true },
8075261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z18rsGetElementAt_int13rs_allocationjjj", (void *)&SC_GetElementAt3_int, true },
8085261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_int213rs_allocationjjj", (void *)&SC_GetElementAt3_int2, true },
8095261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_int313rs_allocationjjj", (void *)&SC_GetElementAt3_int3, true },
8105261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_int413rs_allocationjjj", (void *)&SC_GetElementAt3_int4, true },
8115261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8125261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationcj", (void *)&SC_GetElementAt1_ulong, true },
8135261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationj", (void *)&SC_GetElementAt1_ulong2, true },
8145261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationj", (void *)&SC_GetElementAt1_ulong3, true },
8155261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationj", (void *)&SC_GetElementAt1_ulong4, true },
8165261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationjj", (void *)&SC_GetElementAt2_ulong, true },
8175261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationjj", (void *)&SC_GetElementAt2_ulong2, true },
8185261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationjj", (void *)&SC_GetElementAt2_ulong3, true },
8195261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationjj", (void *)&SC_GetElementAt2_ulong4, true },
8205261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationjjj", (void *)&SC_GetElementAt3_ulong, true },
8215261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationjjj", (void *)&SC_GetElementAt3_ulong2, true },
8225261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationjjj", (void *)&SC_GetElementAt3_ulong3, true },
8235261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationjjj", (void *)&SC_GetElementAt3_ulong4, true },
8245261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8255261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_long13rs_allocationj", (void *)&SC_GetElementAt1_long, true },
8265261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_long213rs_allocationj", (void *)&SC_GetElementAt1_long2, true },
8275261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_long313rs_allocationj", (void *)&SC_GetElementAt1_long3, true },
8285261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_long413rs_allocationj", (void *)&SC_GetElementAt1_long4, true },
8295261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_long13rs_allocationjj", (void *)&SC_GetElementAt2_long, true },
8305261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_long213rs_allocationjj", (void *)&SC_GetElementAt2_long2, true },
8315261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_long313rs_allocationjj", (void *)&SC_GetElementAt2_long3, true },
8325261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_long413rs_allocationjj", (void *)&SC_GetElementAt2_long4, true },
8335261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsGetElementAt_long13rs_allocationjjj", (void *)&SC_GetElementAt3_long, true },
8345261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_long213rs_allocationjjj", (void *)&SC_GetElementAt3_long2, true },
8355261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_long313rs_allocationjjj", (void *)&SC_GetElementAt3_long3, true },
8365261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_long413rs_allocationjjj", (void *)&SC_GetElementAt3_long4, true },
8375261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8385261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_float13rs_allocationcj", (void *)&SC_GetElementAt1_float, true },
8395261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_float213rs_allocationj", (void *)&SC_GetElementAt1_float2, true },
8405261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_float313rs_allocationj", (void *)&SC_GetElementAt1_float3, true },
8415261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_float413rs_allocationj", (void *)&SC_GetElementAt1_float4, true },
8425261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_float13rs_allocationjj", (void *)&SC_GetElementAt2_float, true },
8435261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_float213rs_allocationjj", (void *)&SC_GetElementAt2_float2, true },
8445261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_float313rs_allocationjj", (void *)&SC_GetElementAt2_float3, true },
8455261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_float413rs_allocationjj", (void *)&SC_GetElementAt2_float4, true },
8465261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsGetElementAt_float13rs_allocationjjj", (void *)&SC_GetElementAt3_float, true },
8475261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_float213rs_allocationjjj", (void *)&SC_GetElementAt3_float2, true },
8485261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_float313rs_allocationjjj", (void *)&SC_GetElementAt3_float3, true },
8495261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_float413rs_allocationjjj", (void *)&SC_GetElementAt3_float4, true },
8505261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8515261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_double13rs_allocationcj", (void *)&SC_GetElementAt1_double, true },
8525261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_double213rs_allocationj", (void *)&SC_GetElementAt1_double2, true },
8535261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_double313rs_allocationj", (void *)&SC_GetElementAt1_double3, true },
8545261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_double413rs_allocationj", (void *)&SC_GetElementAt1_double4, true },
8555261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_double13rs_allocationjj", (void *)&SC_GetElementAt2_double, true },
8565261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_double213rs_allocationjj", (void *)&SC_GetElementAt2_double2, true },
8575261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_double313rs_allocationjj", (void *)&SC_GetElementAt2_double3, true },
8585261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_double413rs_allocationjj", (void *)&SC_GetElementAt2_double4, true },
8595261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsGetElementAt_double13rs_allocationjjj", (void *)&SC_GetElementAt3_double, true },
8605261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_double213rs_allocationjjj", (void *)&SC_GetElementAt3_double2, true },
8615261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_double313rs_allocationjjj", (void *)&SC_GetElementAt3_double3, true },
8625261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsGetElementAt_double413rs_allocationjjj", (void *)&SC_GetElementAt3_double4, true },
8635261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8645261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8655261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationhj", (void *)&SC_SetElementAt1_uchar, true },
8675261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationDv2_hj", (void *)&SC_SetElementAt1_uchar2, true },
8685261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationDv3_hj", (void *)&SC_SetElementAt1_uchar3, true },
8695261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationDv4_hj", (void *)&SC_SetElementAt1_uchar4, true },
8705261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationhjj", (void *)&SC_SetElementAt2_uchar, true },
8715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationDv2_hjj", (void *)&SC_SetElementAt2_uchar2, true },
8725261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationDv3_hjj", (void *)&SC_SetElementAt2_uchar3, true },
8735261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationDv4_hjj", (void *)&SC_SetElementAt2_uchar4, true },
8745261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationhjjj", (void *)&SC_SetElementAt3_uchar, true },
8755261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationDv2_hjjj", (void *)&SC_SetElementAt3_uchar2, true },
8765261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationDv3_hjjj", (void *)&SC_SetElementAt3_uchar3, true },
8775261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationDv4_hjjj", (void *)&SC_SetElementAt3_uchar4, true },
8785261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8795261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_char13rs_allocationcj", (void *)&SC_SetElementAt1_char, true },
8805261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_char213rs_allocationDv2_cj", (void *)&SC_SetElementAt1_char2, true },
8815261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_char313rs_allocationDv3_cj", (void *)&SC_SetElementAt1_char3, true },
8825261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_char413rs_allocationDv4_cj", (void *)&SC_SetElementAt1_char4, true },
8835261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_char13rs_allocationcjj", (void *)&SC_SetElementAt2_char, true },
8845261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_char213rs_allocationDv2_cjj", (void *)&SC_SetElementAt2_char2, true },
8855261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_char313rs_allocationDv3_cjj", (void *)&SC_SetElementAt2_char3, true },
8865261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_char413rs_allocationDv4_cjj", (void *)&SC_SetElementAt2_char4, true },
8875261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_char13rs_allocationcjjj", (void *)&SC_SetElementAt3_char, true },
8885261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_char213rs_allocationDv2_cjjj", (void *)&SC_SetElementAt3_char2, true },
8895261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_char313rs_allocationDv3_cjjj", (void *)&SC_SetElementAt3_char3, true },
8905261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_char413rs_allocationDv4_cjjj", (void *)&SC_SetElementAt3_char4, true },
8915261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8925261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationht", (void *)&SC_SetElementAt1_ushort, true },
8935261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationDv2_tj", (void *)&SC_SetElementAt1_ushort2, true },
8945261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationDv3_tj", (void *)&SC_SetElementAt1_ushort3, true },
8955261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationDv4_tj", (void *)&SC_SetElementAt1_ushort4, true },
8965261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationtjj", (void *)&SC_SetElementAt2_ushort, true },
8975261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationDv2_tjj", (void *)&SC_SetElementAt2_ushort2, true },
8985261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationDv3_tjj", (void *)&SC_SetElementAt2_ushort3, true },
8995261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationDv4_tjj", (void *)&SC_SetElementAt2_ushort4, true },
9005261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationtjjj", (void *)&SC_SetElementAt3_ushort, true },
9015261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationDv2_tjjj", (void *)&SC_SetElementAt3_ushort2, true },
9025261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationDv3_tjjj", (void *)&SC_SetElementAt3_ushort3, true },
9035261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationDv4_tjjj", (void *)&SC_SetElementAt3_ushort4, true },
9045261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9055261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_short13rs_allocationsj", (void *)&SC_SetElementAt1_short, true },
9065261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_short213rs_allocationDv2_sj", (void *)&SC_SetElementAt1_short2, true },
9075261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_short313rs_allocationDv3_sj", (void *)&SC_SetElementAt1_short3, true },
9085261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_short413rs_allocationDv4_sj", (void *)&SC_SetElementAt1_short4, true },
9095261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_short13rs_allocationsjj", (void *)&SC_SetElementAt2_short, true },
9105261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_short213rs_allocationDv2_sjj", (void *)&SC_SetElementAt2_short2, true },
9115261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_short313rs_allocationDv3_sjj", (void *)&SC_SetElementAt2_short3, true },
9125261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_short413rs_allocationDv4_sjj", (void *)&SC_SetElementAt2_short4, true },
9135261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_short13rs_allocationsjjj", (void *)&SC_SetElementAt3_short, true },
9145261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_short213rs_allocationDv2_sjjj", (void *)&SC_SetElementAt3_short2, true },
9155261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_short313rs_allocationDv3_sjjj", (void *)&SC_SetElementAt3_short3, true },
9165261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_short413rs_allocationDv4_sjjj", (void *)&SC_SetElementAt3_short4, true },
9175261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9185261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_uint13rs_allocationjj", (void *)&SC_SetElementAt1_uint, true },
9195261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uint213rs_allocationDv2_jj", (void *)&SC_SetElementAt1_uint2, true },
9205261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uint313rs_allocationDv3_jj", (void *)&SC_SetElementAt1_uint3, true },
9215261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uint413rs_allocationDv4_jj", (void *)&SC_SetElementAt1_uint4, true },
9225261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_uint13rs_allocationjjj", (void *)&SC_SetElementAt2_uint, true },
9235261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uint213rs_allocationDv2_jjj", (void *)&SC_SetElementAt2_uint2, true },
9245261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uint313rs_allocationDv3_jjj", (void *)&SC_SetElementAt2_uint3, true },
9255261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uint413rs_allocationDv4_jjj", (void *)&SC_SetElementAt2_uint4, true },
9265261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_uint13rs_allocationjjjj", (void *)&SC_SetElementAt3_uint, true },
9275261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uint213rs_allocationDv2_jjjj", (void *)&SC_SetElementAt3_uint2, true },
9285261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uint313rs_allocationDv3_jjjj", (void *)&SC_SetElementAt3_uint3, true },
9295261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_uint413rs_allocationDv4_jjjj", (void *)&SC_SetElementAt3_uint4, true },
9305261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9315261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int13rs_allocationij", (void *)&SC_SetElementAt1_int, true },
9325261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int213rs_allocationDv2_ij", (void *)&SC_SetElementAt1_int2, true },
9335261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int313rs_allocationDv3_ij", (void *)&SC_SetElementAt1_int3, true },
9345261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int413rs_allocationDv4_ij", (void *)&SC_SetElementAt1_int4, true },
9355261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z18rsSetElementAt_int13rs_allocationijj", (void *)&SC_SetElementAt2_int, true },
9365261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int213rs_allocationDv2_ijj", (void *)&SC_SetElementAt2_int2, true },
9375261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int313rs_allocationDv3_ijj", (void *)&SC_SetElementAt2_int3, true },
9385261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int413rs_allocationDv4_ijj", (void *)&SC_SetElementAt2_int4, true },
9395261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z18rsSetElementAt_int13rs_allocationijjj", (void *)&SC_SetElementAt3_int, true },
9405261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int213rs_allocationDv2_ijjj", (void *)&SC_SetElementAt3_int2, true },
9415261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int313rs_allocationDv3_ijjj", (void *)&SC_SetElementAt3_int3, true },
9425261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_int413rs_allocationDv4_ijjj", (void *)&SC_SetElementAt3_int4, true },
9435261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9445261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationmt", (void *)&SC_SetElementAt1_ulong, true },
9455261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationDv2_mj", (void *)&SC_SetElementAt1_ulong2, true },
9465261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationDv3_mj", (void *)&SC_SetElementAt1_ulong3, true },
9475261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationDv4_mj", (void *)&SC_SetElementAt1_ulong4, true },
9485261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationmjj", (void *)&SC_SetElementAt2_ulong, true },
9495261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationDv2_mjj", (void *)&SC_SetElementAt2_ulong2, true },
9505261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationDv3_mjj", (void *)&SC_SetElementAt2_ulong3, true },
9515261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationDv4_mjj", (void *)&SC_SetElementAt2_ulong4, true },
9525261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationmjjj", (void *)&SC_SetElementAt3_ulong, true },
9535261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationDv2_mjjj", (void *)&SC_SetElementAt3_ulong2, true },
9545261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationDv3_mjjj", (void *)&SC_SetElementAt3_ulong3, true },
9555261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationDv4_mjjj", (void *)&SC_SetElementAt3_ulong4, true },
9565261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9575261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_long13rs_allocationlj", (void *)&SC_SetElementAt1_long, true },
9585261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_long213rs_allocationDv2_lj", (void *)&SC_SetElementAt1_long2, true },
9595261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_long313rs_allocationDv3_lj", (void *)&SC_SetElementAt1_long3, true },
9605261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_long413rs_allocationDv4_lj", (void *)&SC_SetElementAt1_long4, true },
9615261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_long13rs_allocationljj", (void *)&SC_SetElementAt2_long, true },
9625261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_long213rs_allocationDv2_ljj", (void *)&SC_SetElementAt2_long2, true },
9635261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_long313rs_allocationDv3_ljj", (void *)&SC_SetElementAt2_long3, true },
9645261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_long413rs_allocationDv4_ljj", (void *)&SC_SetElementAt2_long4, true },
9655261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z19rsSetElementAt_long13rs_allocationljjj", (void *)&SC_SetElementAt3_long, true },
9665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_long213rs_allocationDv2_ljjj", (void *)&SC_SetElementAt3_long2, true },
9675261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_long313rs_allocationDv3_ljjj", (void *)&SC_SetElementAt3_long3, true },
9685261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_long413rs_allocationDv4_ljjj", (void *)&SC_SetElementAt3_long4, true },
9695261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9705261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_float13rs_allocationft", (void *)&SC_SetElementAt1_float, true },
9715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_float213rs_allocationDv2_fj", (void *)&SC_SetElementAt1_float2, true },
9725261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_float313rs_allocationDv3_fj", (void *)&SC_SetElementAt1_float3, true },
9735261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_float413rs_allocationDv4_fj", (void *)&SC_SetElementAt1_float4, true },
9745261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_float13rs_allocationfjj", (void *)&SC_SetElementAt2_float, true },
9755261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_float213rs_allocationDv2_fjj", (void *)&SC_SetElementAt2_float2, true },
9765261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_float313rs_allocationDv3_fjj", (void *)&SC_SetElementAt2_float3, true },
9775261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_float413rs_allocationDv4_fjj", (void *)&SC_SetElementAt2_float4, true },
9785261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z20rsSetElementAt_float13rs_allocationfjjj", (void *)&SC_SetElementAt3_float, true },
9795261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_float213rs_allocationDv2_fjjj", (void *)&SC_SetElementAt3_float2, true },
9805261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_float313rs_allocationDv3_fjjj", (void *)&SC_SetElementAt3_float3, true },
9815261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_float413rs_allocationDv4_fjjj", (void *)&SC_SetElementAt3_float4, true },
9825261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9835261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_double13rs_allocationdt", (void *)&SC_SetElementAt1_double, true },
9845261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_double213rs_allocationDv2_dj", (void *)&SC_SetElementAt1_double2, true },
9855261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_double313rs_allocationDv3_dj", (void *)&SC_SetElementAt1_double3, true },
9865261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_double413rs_allocationDv4_dj", (void *)&SC_SetElementAt1_double4, true },
9875261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_double13rs_allocationdjj", (void *)&SC_SetElementAt2_double, true },
9885261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_double213rs_allocationDv2_djj", (void *)&SC_SetElementAt2_double2, true },
9895261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_double313rs_allocationDv3_djj", (void *)&SC_SetElementAt2_double3, true },
9905261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_double413rs_allocationDv4_djj", (void *)&SC_SetElementAt2_double4, true },
9915261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z21rsSetElementAt_double13rs_allocationdjjj", (void *)&SC_SetElementAt3_double, true },
9925261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_double213rs_allocationDv2_djjj", (void *)&SC_SetElementAt3_double2, true },
9935261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_double313rs_allocationDv3_djjj", (void *)&SC_SetElementAt3_double3, true },
9945261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    { "_Z22rsSetElementAt_double413rs_allocationDv4_djjj", (void *)&SC_SetElementAt3_double4, true },
9955261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9965261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
99787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Refcounting
99887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true },
99987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true },
100087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true },
100187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
100287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true },
100387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true },
100487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true },
100587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
100687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true },
100787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true },
100887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true },
100987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
101087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true },
101187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true },
101287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true },
101387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
101487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true },
101587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true },
101687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true },
101787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
10189e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z11rsSetObjectP7rs_pathS_", (void *)&SC_SetObject, true },
10199e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z13rsClearObjectP7rs_path", (void *)&SC_ClearObject, true },
10209e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z10rsIsObject7rs_path", (void *)&SC_IsObject, true },
10219e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
102287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true },
102387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true },
102487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true },
102587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
102687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true },
102787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true },
102887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true },
102987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
103087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true },
103187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true },
103287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true },
103387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
103487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true },
103587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true },
103687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true },
103787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
103887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true },
103987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true },
104087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true },
104187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
104287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true },
104387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true },
104487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true },
104587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
104687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Allocation ops
104787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true },
104887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false },
104987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false },
105074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false },
105187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true },
1052b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z18rsAllocationIoSend13rs_allocation", (void *)&SC_AllocationIoSend, false },
1053b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z21rsAllocationIoReceive13rs_allocation", (void *)&SC_AllocationIoReceive, false },
105474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false },
105574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false },
105687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
105787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Messaging
105887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
105987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClienti", (void *)&SC_ToClient, false },
106087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false },
106187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false },
106287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false },
106387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
106487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false },
106587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false },
106687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false },
106787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false },
106887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false },
106987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false },
1070a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant19rs_program_fragmentj13rs_allocation", (void *)&SC_BindFragmentConstant, false },
1071a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant17rs_program_vertexj13rs_allocation", (void *)&SC_BindVertexConstant, false },
107287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
107387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false },
107487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false },
107587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false },
107687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
107787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false },
107887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
107987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false },
108087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
108187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false },
108287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false },
108387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
108487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
108587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false },
108687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false },
108787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false },
108887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false },
108987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
109087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false },
109187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false },
109287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false },
109387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false },
109487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
10959e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z11rsgDrawPath7rs_path", (void *)&SC_DrawPath, false },
10969e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
109787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false },
109887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false },
109987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
110087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false },
110187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false },
110287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false },
110387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false },
110487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
110587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false },
110687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false },
110787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
110887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false },
110987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false },
111087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false },
111187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false },
111287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false },
111387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1114aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true },
1115aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true },
1116f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK14rs_script_call", (void *)&SC_ForEach_SAAUS, true },
1117aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true },
1118f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK14rs_script_call", (void *)&SC_ForEach_SAAULS, true },
111987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
112087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // time
112187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z6rsTimePi", (void *)&SC_Time, true },
112287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true },
112387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true },
112487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true },
112587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z7rsGetDtv", (void*)&SC_GetDt, false },
112687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
112787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // misc
112887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z5colorffff", (void *)&SC_Color, false },
112987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z9rsgFinishv", (void *)&SC_Finish, false },
113087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
113187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { NULL, NULL, false }
113287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams};
113387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
113487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1135709a0978ae141198018ca9769f8d96292a8928e6Jason Samsextern const RsdCpuReference::CpuSymbol * rsdLookupRuntimeStub(Context * pContext, char const* name) {
113687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    ScriptC *s = (ScriptC *)pContext;
1137709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const RsdCpuReference::CpuSymbol *syms = gSyms;
1138709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const RsdCpuReference::CpuSymbol *sym = NULL;
113987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
114087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    if (!sym) {
1141709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        while (syms->fnPtr) {
1142709a0978ae141198018ca9769f8d96292a8928e6Jason Sams            if (!strcmp(syms->name, name)) {
1143709a0978ae141198018ca9769f8d96292a8928e6Jason Sams                return syms;
114487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            }
114587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            syms++;
114687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams        }
114787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    }
114887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
114987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    return NULL;
115087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
115187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
115287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1153