rsdRuntimeStubs.cpp revision d8b8f8a16415496acc9844a89599ce7f377bd04d
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 "rsdCore.h"
25807fdc4b6f3fb893015ee136565d6151bb2332d3Jason Sams#include "rsdBcc.h"
2687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
279e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams#include "rsdPath.h"
28b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams#include "rsdAllocation.h"
29414a46166126da6864258bd25ff183f9a3c6261dStephen Hines#include "rsdShaderCache.h"
30414a46166126da6864258bd25ff183f9a3c6261dStephen Hines#include "rsdVertexArray.h"
3187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include <time.h>
3387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android;
3587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android::renderscript;
3687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
37a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float2 __attribute__((ext_vector_type(2)));
38a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float3 __attribute__((ext_vector_type(3)));
39a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float4 __attribute__((ext_vector_type(4)));
405261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef double double2 __attribute__((ext_vector_type(2)));
415261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef double double3 __attribute__((ext_vector_type(3)));
425261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef double double4 __attribute__((ext_vector_type(4)));
43a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char2 __attribute__((ext_vector_type(2)));
44a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char3 __attribute__((ext_vector_type(3)));
45a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char4 __attribute__((ext_vector_type(4)));
46a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar2 __attribute__((ext_vector_type(2)));
47a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar3 __attribute__((ext_vector_type(3)));
48a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar4 __attribute__((ext_vector_type(4)));
49d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int16_t short2 __attribute__((ext_vector_type(2)));
50d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int16_t short3 __attribute__((ext_vector_type(3)));
51d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int16_t short4 __attribute__((ext_vector_type(4)));
52d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint16_t ushort2 __attribute__((ext_vector_type(2)));
53d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint16_t ushort3 __attribute__((ext_vector_type(3)));
54d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint16_t ushort4 __attribute__((ext_vector_type(4)));
55a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int2 __attribute__((ext_vector_type(2)));
56a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int3 __attribute__((ext_vector_type(3)));
57a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int4 __attribute__((ext_vector_type(4)));
58a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint2 __attribute__((ext_vector_type(2)));
59a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint3 __attribute__((ext_vector_type(3)));
60a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint4 __attribute__((ext_vector_type(4)));
61d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int64_t long2 __attribute__((ext_vector_type(2)));
62d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int64_t long3 __attribute__((ext_vector_type(3)));
63d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int64_t long4 __attribute__((ext_vector_type(4)));
64d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint64_t ulong2 __attribute__((ext_vector_type(2)));
65d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint64_t ulong3 __attribute__((ext_vector_type(3)));
66d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint64_t ulong4 __attribute__((ext_vector_type(4)));
6787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
685261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint8_t uchar;
695261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint16_t ushort;
705261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint32_t uint;
710b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_SERVER
725261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint64_t ulong;
730b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
7487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
75d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#ifdef RS_COMPATIBILITY_LIB
76d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#define OPAQUETYPE(t) \
77d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    typedef struct { const int* const p; } __attribute__((packed, aligned(4))) t;
78d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
79d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_element)
80d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_type)
81d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_allocation)
82d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_sampler)
83d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_script)
84d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_script_call)
85d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#undef OPAQUETYPE
86d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
877a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinestypedef enum {
887a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines    // Empty to avoid conflicting definitions with RsAllocationCubemapFace
897a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines} rs_allocation_cubemap_face;
907a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
91d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murraytypedef struct {
92d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_sec;     ///< seconds
93d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_min;     ///< minutes
94d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_hour;    ///< hours
95d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_mday;    ///< day of the month
96d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_mon;     ///< month
97d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_year;    ///< year
98d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_wday;    ///< day of the week
99d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_yday;    ///< day of the year
100d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_isdst;   ///< daylight savings time
101d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray} rs_tm;
102d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#endif
103d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
10487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
10587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Allocation
10687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
10787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
10887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1091aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationSyncAll2(android::renderscript::rs_allocation a, RsAllocationUsageType source) {
110709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
1111aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationSyncAll(rsc, (Allocation*)a.p, source);
11287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
11387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1141aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationSyncAll(android::renderscript::rs_allocation a) {
115709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
1161aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationSyncAll(rsc, (Allocation*)a.p, RS_ALLOCATION_USAGE_SCRIPT);
11787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
11887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1191aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#ifndef RS_COMPATIBILITY_LIB
1201aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1211aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationCopy1DRange(android::renderscript::rs_allocation dstAlloc,
12274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstOff,
12374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip,
12474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t count,
1251aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     android::renderscript::rs_allocation srcAlloc,
12674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcOff, uint32_t srcMip) {
127709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
1281aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationCopy1DRange(rsc, (Allocation*)dstAlloc.p, dstOff, dstMip, count,
1291aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             (Allocation*)srcAlloc.p, srcOff, srcMip);
13074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
13174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
1321aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationCopy2DRange(android::renderscript::rs_allocation dstAlloc,
13374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstXoff, uint32_t dstYoff,
13474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip, uint32_t dstFace,
13574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t width, uint32_t height,
1361aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     android::renderscript::rs_allocation srcAlloc,
13774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcXoff, uint32_t srcYoff,
13874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcMip, uint32_t srcFace) {
139709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
1401aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationCopy2DRange(rsc, (Allocation*)dstAlloc.p,
141a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             dstXoff, dstYoff, dstMip, dstFace,
142a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             width, height,
1431aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             (Allocation*)srcAlloc.p,
144a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             srcXoff, srcYoff, srcMip, srcFace);
14574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
14674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
1471aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationIoSend(android::renderscript::rs_allocation alloc) {
1481aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1491aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationIoSend(rsc, (Allocation*)alloc.p);
1501aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
1511aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1521aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1531aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationIoReceive(android::renderscript::rs_allocation alloc) {
1541aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1551aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationIoReceive(rsc, (Allocation*)alloc.p);
1561aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
1571aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1581aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#else
1591aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1601aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationCopy1DRange(::rs_allocation dstAlloc,
1611aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstOff,
1621aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstMip,
1631aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t count,
1641aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     ::rs_allocation srcAlloc,
1651aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcOff, uint32_t srcMip) {
1661aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1671aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationCopy1DRange(rsc, (Allocation*)dstAlloc.p, dstOff, dstMip, count,
1681aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             (Allocation*)srcAlloc.p, srcOff, srcMip);
1691aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
1701aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1711aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationCopy2DRange(::rs_allocation dstAlloc,
1721aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstXoff, uint32_t dstYoff,
1731aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstMip, uint32_t dstFace,
1741aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t width, uint32_t height,
1751aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     ::rs_allocation srcAlloc,
1761aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcXoff, uint32_t srcYoff,
1771aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcMip, uint32_t srcFace) {
1781aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1791aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationCopy2DRange(rsc, (Allocation*)dstAlloc.p,
1801aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             dstXoff, dstYoff, dstMip, dstFace,
1811aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             width, height,
1821aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             (Allocation*)srcAlloc.p,
1831aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             srcXoff, srcYoff, srcMip, srcFace);
1841aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
1851aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1861aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationIoSend(Allocation* alloc) {
187709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
188ddceab9a001f07a3395226c5e06e3b420720af0fJason Sams    rsrAllocationIoSend(rsc, alloc);
189b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
190b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
191b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
1921aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationIoReceive(Allocation* alloc) {
193709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
194ddceab9a001f07a3395226c5e06e3b420720af0fJason Sams    rsrAllocationIoReceive(rsc, alloc);
195b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
196b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
1971aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif
1981aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1997a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines#ifndef RS_COMPATIBILITY_LIB
20074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
20187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
20287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context
20387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
20487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
20587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) {
206709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
207709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindTexture(rsc, pf, slot, a);
20887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
20987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
210a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindVertexConstant(ProgramVertex *pv, uint32_t slot, Allocation *a) {
211709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
212709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pv, slot, a);
213a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
214a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
215a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindFragmentConstant(ProgramFragment *pf, uint32_t slot, Allocation *a) {
216709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
217709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pf, slot, a);
218a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
219a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
22087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) {
221709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
222709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindSampler(rsc, pf, slot, s);
22387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
22487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
22587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) {
226709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
227709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramStore(rsc, ps);
22887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
22987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
23087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) {
231709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
232709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramFragment(rsc, pf);
23387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
23487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
23587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) {
236709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
237709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramVertex(rsc, pv);
23887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
23987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
24087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) {
241709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
242709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramRaster(rsc, pr);
24387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
24487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
24587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) {
246709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
247709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectColorTarget(rsc, a, slot);
24887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
24987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
25087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) {
251709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
252709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectDepthTarget(rsc, a);
25387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
25487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
25587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) {
256709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
257709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectColorTarget(rsc, slot);
25887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
25987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
26087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) {
261709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
262709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectDepthTarget(rsc);
26387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
26487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
26587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) {
266709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
267709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectTargets(rsc);
26887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
26987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
27087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
27187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
27287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP
27387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
27487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
27587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) {
276709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
277709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadProjectionMatrix(rsc, m);
27887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
27987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
28087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) {
281709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
282709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadModelMatrix(rsc, m);
28387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
28487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
28587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) {
286709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
287709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadTextureMatrix(rsc, m);
28887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
28987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
29087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) {
291709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
292709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPfConstantColor(rsc, pf, r, g, b, a);
29387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
29487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
29587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) {
296709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
297709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpGetProjectionMatrix(rsc, m);
29887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
29987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
30087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
30187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
30287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing
30387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
30487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
30587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
30687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x2, float y2, float z2, float u2, float v2,
30787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x3, float y3, float z3, float u3, float v3,
30887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x4, float y4, float z4, float u4, float v4) {
309709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
310414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
311414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!rsc->setupCheck()) {
312414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
313414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
314414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
315414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdHal *dc = (RsdHal *)rsc->mHal.drv;
316414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!dc->gl.shaderCache->setup(rsc)) {
317414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
318414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
319414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
320414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("Quad");
321414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x1, y1, z1);
322414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x2, y2, z2);
323414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x3, y3, z3);
324414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x4, y4, z4);
325414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
326414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    float vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4};
327414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    const float tex[] = {u1,v1, u2,v2, u3,v3, u4,v4};
328414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
329414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray::Attrib attribs[2];
330e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray    attribs[0].set(GL_FLOAT, 3, 12, false, (size_t)vtx, "ATTRIB_position");
331e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray    attribs[1].set(GL_FLOAT, 2, 8, false, (size_t)tex, "ATTRIB_texture0");
332414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
333414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray va(attribs, 2);
334414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    va.setup(rsc);
335414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
336414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RSD_CALL_GL(glDrawArrays, GL_TRIANGLE_FAN, 0, 4);
33787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
33887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
33987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1,
34087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x2, float y2, float z2,
34187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x3, float y3, float z3,
34287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x4, float y4, float z4) {
343414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuadTexCoords(x1, y1, z1, 0, 1,
344414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x2, y2, z2, 1, 1,
345414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x3, y3, z3, 1, 0,
346414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x4, y4, z4, 0, 0);
34787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
34887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
34987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) {
350709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
351414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
352414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    ObjectBaseRef<const ProgramVertex> tmp(rsc->getProgramVertex());
353414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    rsc->setProgramVertex(rsc->getDefaultProgramVertex());
354414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //rsc->setupCheck();
355414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
356414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //GLint crop[4] = {0, h, w, -h};
357414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
358414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    float sh = rsc->getHeight();
359414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
360414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuad(x,   sh - y,     z,
361414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x+w, sh - y,     z,
362414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x+w, sh - (y+h), z,
363414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x,   sh - (y+h), z);
364414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    rsc->setProgramVertex((ProgramVertex *)tmp.get());
36587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
36687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawRect(float x1, float y1, float x2, float y2, float z) {
368414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuad(x1, y2, z, x2, y2, z, x2, y1, z, x1, y1, z);
36987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
37087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3719e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsstatic void SC_DrawPath(Path *p) {
372709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
3739e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    rsdPathDraw(rsc, p);
3749e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams}
3759e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
37687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMesh(Mesh *m) {
377709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
378709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMesh(rsc, m);
37987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
38087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) {
382709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
383709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitive(rsc, m, primIndex);
38487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
38587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) {
387709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
388709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitiveRange(rsc, m, primIndex, start, len);
38987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
39087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m,
39287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *minX, float *minY, float *minZ,
39387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *maxX, float *maxY, float *maxZ) {
394709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
395709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeshComputeBoundingBox(rsc, m, minX, minY, minZ, maxX, maxY, maxZ);
39687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
39787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
40087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
40187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
40287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
40387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
40487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
40587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Color(float r, float g, float b, float a) {
406709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
407709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrColor(rsc, r, g, b, a);
40887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
40987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Finish() {
411709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
412653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLFinish(rsc);
41387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
41487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) {
416709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
417709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
418653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearColor(rsc, r, g, b, a);
41987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
42087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
42187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearDepth(float v) {
422709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
423709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
424653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearDepth(rsc, v);
42587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
42687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
42787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetWidth() {
428709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
429709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetWidth(rsc);
43087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
43187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
43287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetHeight() {
433709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
434709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetHeight(rsc);
43587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
43687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
43787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) {
438709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
439709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawTextAlloc(rsc, a, x, y);
44087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
44187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
44287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawText(const char *text, int x, int y) {
443709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
444709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawText(rsc, text, x, y);
44587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
44687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
44787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a,
44887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                         int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
449709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
450709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureTextAlloc(rsc, a, left, right, top, bottom);
45187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
45287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
45387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureText(const char *text,
45487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                    int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
455709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
456709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureText(rsc, text, left, right, top, bottom);
45787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
45887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
45987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFont(Font *f) {
460709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
461709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFont(rsc, f);
46287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
46387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
46487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) {
465709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
466709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrFontColor(rsc, r, g, b, a);
46787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
468110f181b7966212a36ef18016f9b81c7322d0a2fJason Sams#endif
46987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
47287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
47387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
47487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
4751aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ClearObject(rs_object_base *dst) {
4761aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
4771aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrClearObject(rsc, dst);
4781aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
4791aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#ifndef RS_COMPATIBILITY_LIB
4801aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetObject(rs_object_base *dst, rs_object_base  src) {
481a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    //    ALOGE("SC_SetObject: dst = %p, src = %p", dst, src.p);
482a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    //    ALOGE("SC_SetObject: dst[0] = %p", dst[0]);
483a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
4841aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrSetObject(rsc, dst, (ObjectBase*)src.p);
48587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
48687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
487444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifdef __LP64__
488444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chenstatic void SC_SetObject_ByRef(rs_object_base *dst, rs_object_base *src) {
489444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    //    ALOGE("SC_SetObject2: dst = %p, src = %p", dst, src->p);
490444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
491444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    rsrSetObject(rsc, dst, (ObjectBase*)src->p);
492444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
493444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
494444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
4951aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic bool SC_IsObject(rs_object_base o) {
496709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
4971aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return rsrIsObject(rsc, o);
4981aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
499444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
500444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifdef __LP64__
501444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chenstatic bool SC_IsObject_ByRef(rs_object_base *o) {
502444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
503444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    return rsrIsObject(rsc, *o);
504444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
505444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
506444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
5071aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#else
5081aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetObject(rs_object_base *dst, ObjectBase*  src) {
5091aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    //    ALOGE("SC_SetObject: dst = %p, src = %p", dst, src.p);
5101aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    //    ALOGE("SC_SetObject: dst[0] = %p", dst[0]);
5111aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
5121aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrSetObject(rsc, dst, src);
51387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
51487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5151aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic bool SC_IsObject(ObjectBase* o) {
516709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
517f29edf80510d483b8663e9d8b859959e37361aeeJason Sams    return rsrIsObject(rsc, o);
51887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
5191aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif
52087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic const Allocation * SC_GetAllocation(const void *ptr) {
524709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
525709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
526807fdc4b6f3fb893015ee136565d6151bb2332d3Jason Sams    return rsdScriptGetAllocationForPointer(rsc, sc, ptr);
52787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
52887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5291aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#ifndef RS_COMPATIBILITY_LIB
530444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
5311aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAA(android::renderscript::rs_script target,
5321aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                            android::renderscript::rs_allocation in,
5331aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                            android::renderscript::rs_allocation out) {
534709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5351aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p, NULL, 0, NULL);
536c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams}
537444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
538444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chenstatic void SC_ForEach_SAA(android::renderscript::rs_script *target,
539444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                            android::renderscript::rs_allocation *in,
540444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                            android::renderscript::rs_allocation *out) {
541444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
542444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    rsrForEach(rsc, (Script*)target->p, (Allocation*)in->p, (Allocation*)out->p, NULL, 0, NULL);
543444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
544444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
545c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
546444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
5471aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAU(android::renderscript::rs_script target,
5481aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                            android::renderscript::rs_allocation in,
5491aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                            android::renderscript::rs_allocation out,
550c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                            const void *usr) {
551709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5521aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p, usr, 0, NULL);
55387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
554444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
555444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chenstatic void SC_ForEach_SAAU(android::renderscript::rs_script *target,
556444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                            android::renderscript::rs_allocation *in,
557444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                            android::renderscript::rs_allocation *out,
558444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                            const void *usr) {
559444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
560444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    rsrForEach(rsc, (Script*)target->p, (Allocation*)in->p, (Allocation*)out->p, usr, 0, NULL);
561444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
562444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
56387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
564444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
5651aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAUS(android::renderscript::rs_script target,
5661aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             android::renderscript::rs_allocation in,
5671aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             android::renderscript::rs_allocation out,
568c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             const void *usr,
569c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             const RsScriptCall *call) {
570709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5711aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p, usr, 0, call);
57287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
573444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
574444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chenstatic void SC_ForEach_SAAUS(android::renderscript::rs_script *target,
575444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             android::renderscript::rs_allocation *in,
576444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             android::renderscript::rs_allocation *out,
577444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             const void *usr,
578444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             const RsScriptCall *call) {
579444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
580444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    rsrForEach(rsc, (Script*)target->p, (Allocation*)in->p, (Allocation*)out->p, usr, 0, call);
581444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
582444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
58387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
584444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
5851aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAUL(android::renderscript::rs_script target,
5861aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             android::renderscript::rs_allocation in,
5871aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             android::renderscript::rs_allocation out,
588c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             const void *usr,
589c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             uint32_t usrLen) {
590709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5911aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p, usr, usrLen, NULL);
592c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams}
593444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
594444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chenstatic void SC_ForEach_SAAUL(android::renderscript::rs_script *target,
595444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             android::renderscript::rs_allocation *in,
596444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             android::renderscript::rs_allocation *out,
597444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             const void *usr,
598444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             uint32_t usrLen) {
599444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
600444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    rsrForEach(rsc, (Script*)target->p, (Allocation*)in->p, (Allocation*)out->p, usr, usrLen, NULL);
601444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
602444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
603c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
604444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
6051aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAULS(android::renderscript::rs_script target,
6061aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              android::renderscript::rs_allocation in,
6071aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              android::renderscript::rs_allocation out,
608c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              const void *usr,
609c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              uint32_t usrLen,
610c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              const RsScriptCall *call) {
611709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
6121aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p, usr, usrLen, call);
613c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams}
614444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
615444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chenstatic void SC_ForEach_SAAULS(android::renderscript::rs_script *target,
616444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                              android::renderscript::rs_allocation *in,
617444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                              android::renderscript::rs_allocation *out,
618444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                              const void *usr,
619444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                              uint32_t usrLen,
620444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                              const RsScriptCall *call) {
621444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
622444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    rsrForEach(rsc, (Script*)target->p, (Allocation*)in->p, (Allocation*)out->p, usr, usrLen, call);
623444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
624444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
6251aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif
62687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
62787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
62887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
62987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines
63087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
63187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
63287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic float SC_GetDt() {
633709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
634709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
63587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    return rsrGetDt(rsc, sc);
63687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
63787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
638d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#ifndef RS_COMPATIBILITY_LIB
63987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t SC_Time(time_t *timer) {
640709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
641709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrTime(rsc, timer);
64287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
643d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#else
644d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murraystatic int SC_Time(int *timer) {
645d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
646d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return rsrTime(rsc, (long*)timer);
647d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
648d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#endif
64987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
65087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* SC_LocalTime(tm *local, time_t *timer) {
651709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
652709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrLocalTime(rsc, local, timer);
65387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
65487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
65587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeMillis() {
656709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
657709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeMillis(rsc);
65887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
65987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
66087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeNanos() {
661709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
662709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeNanos(rsc);
66387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
66487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
66587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
66687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines
66787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
66887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
669276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesstatic uint32_t SC_ToClient2(int cmdID, const void *data, uint32_t len) {
670709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
671709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClient(rsc, cmdID, data, len);
67287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
67387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
67487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient(int cmdID) {
675709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
67670537f52bdc6e8702db03cc91fe511371fb31267Stephen Hines    return rsrToClient(rsc, cmdID, (const void *)NULL, 0);
67787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
67887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
679276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesstatic uint32_t SC_ToClientBlocking2(int cmdID, const void *data, uint32_t len) {
680709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
681709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClientBlocking(rsc, cmdID, data, len);
68287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
68387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
68487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) {
685709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
68670537f52bdc6e8702db03cc91fe511371fb31267Stephen Hines    return rsrToClientBlocking(rsc, cmdID, (const void *)NULL, 0);
68787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
68887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
68987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
6905261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt1D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x) {
6915261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
6925261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
6935261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
6945261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
6955261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
6965261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
6975261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
698cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
6995261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
7005261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7015261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
702d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
703d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
704d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
705cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
706d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            return NULL;
707d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
708d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
709d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
710d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
711cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
712d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            return NULL;
713d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7145261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7155261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7165261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
7175261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
7185261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x)];
7195261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
7205261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7215261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt2D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y) {
7225261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
7235261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
7245261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
7255261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7265261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
7275261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
7285261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
729cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
7305261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
7315261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7325261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7335261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
7345261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
735cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
7365261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
7375261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7385261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
739d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
740d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
741d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
742cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
743d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            return NULL;
744d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
745d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
746d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
747d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
748cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
749d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            return NULL;
750d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7515261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7525261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7535261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
7545261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
7555261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
7565261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
7575261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
7585261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7595261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt3D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y, uint32_t z) {
7605261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
7615261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
7625261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
7635261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7645261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
7655261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
7665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
767cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
7685261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
7695261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7705261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
7725261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
773cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
7745261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
7755261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7765261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7775261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (z >= t->getLODDimZ(0)) {
7785261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Z %i of %i", z, t->getLODDimZ(0));
779cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
7805261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        return NULL;
7815261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7825261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
783d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
784d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
785d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
786cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
787d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            return NULL;
788d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
789d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
790d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
791d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
792cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
793d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            return NULL;
794d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7955261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7965261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7975261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
7985261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
7995261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
8005261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
8015261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
8025261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8031aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic const void * SC_GetElementAt1D(android::renderscript::rs_allocation a, uint32_t x) {
8041aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return ElementAt1D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x);
805d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
8061aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic const void * SC_GetElementAt2D(android::renderscript::rs_allocation a, uint32_t x, uint32_t y) {
8071aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return ElementAt2D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x, y);
808d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
8091aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic const void * SC_GetElementAt3D(android::renderscript::rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
8101aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return ElementAt3D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x, y, z);
811d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
812d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
8131aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetElementAt1D(android::renderscript::rs_allocation a, const void *ptr, uint32_t x) {
8141aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    const Type *t = ((Allocation*)a.p)->getType();
815d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
8161aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    void *tmp = ElementAt1D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x);
817d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (tmp != NULL) {
818d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
819d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
820d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
8211aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetElementAt2D(android::renderscript::rs_allocation a, const void *ptr, uint32_t x, uint32_t y) {
8221aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    const Type *t = ((Allocation*)a.p)->getType();
823d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
8241aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    void *tmp = ElementAt2D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x, y);
825d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (tmp != NULL) {
826d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
827d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
828d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
8291aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetElementAt3D(android::renderscript::rs_allocation a, const void *ptr, uint32_t x, uint32_t y, uint32_t z) {
8301aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    const Type *t = ((Allocation*)a.p)->getType();
831d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
8321aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    void *tmp = ElementAt3D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x, y, z);
833d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (tmp != NULL) {
834d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
835d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
836d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
837d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
8385261a5ea546ff358edd5aac7602fc4132434f481Jason Sams#define ELEMENT_AT(T, DT, VS)                                               \
8391aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_SetElementAt1_##T(android::renderscript::rs_allocation a, const T *val, uint32_t x) { \
8401aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray        void *r = ElementAt1D((Allocation*)a.p, DT, VS, x);               \
841d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (r != NULL) ((T *)r)[0] = *val;                               \
8425261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
8435261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
8441aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_SetElementAt2_##T(android::renderscript::rs_allocation a, const T * val, uint32_t x, uint32_t y) { \
8451aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray        void *r = ElementAt2D((Allocation*)a.p, DT, VS, x, y);            \
846d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (r != NULL) ((T *)r)[0] = *val;                               \
8475261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
8485261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
8491aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_SetElementAt3_##T(android::renderscript::rs_allocation a, const T * val, uint32_t x, uint32_t y, uint32_t z) { \
8501aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray        void *r = ElementAt3D((Allocation*)a.p, DT, VS, x, y, z);         \
851d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (r != NULL) ((T *)r)[0] = *val;                               \
8525261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
8535261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
8541aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_GetElementAt1_##T(android::renderscript::rs_allocation a, T *val, uint32_t x) {                  \
8551aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray        void *r = ElementAt1D((Allocation*)a.p, DT, VS, x);               \
856d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (r != NULL) *val = ((T *)r)[0];                              \
857d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);                    \
8585261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
8591aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_GetElementAt2_##T(android::renderscript::rs_allocation a, T *val, uint32_t x, uint32_t y) {      \
8601aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray        void *r = ElementAt2D((Allocation*)a.p, DT, VS, x, y);            \
861d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (r != NULL) *val = ((T *)r)[0];                              \
862d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);                    \
8635261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
8641aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_GetElementAt3_##T(android::renderscript::rs_allocation a, T *val, uint32_t x, uint32_t y, uint32_t z) { \
8651aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray        void *r = ElementAt3D((Allocation*)a.p, DT, VS, x, y, z);         \
866d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (r != NULL) *val = ((T *)r)[0];                              \
867d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);                    \
8685261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
8695261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8705261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char, RS_TYPE_SIGNED_8, 1)
8715261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char2, RS_TYPE_SIGNED_8, 2)
8725261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char3, RS_TYPE_SIGNED_8, 3)
8735261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char4, RS_TYPE_SIGNED_8, 4)
8745261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar, RS_TYPE_UNSIGNED_8, 1)
8755261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar2, RS_TYPE_UNSIGNED_8, 2)
8765261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar3, RS_TYPE_UNSIGNED_8, 3)
8775261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar4, RS_TYPE_UNSIGNED_8, 4)
8785261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short, RS_TYPE_SIGNED_16, 1)
8795261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short2, RS_TYPE_SIGNED_16, 2)
8805261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short3, RS_TYPE_SIGNED_16, 3)
8815261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short4, RS_TYPE_SIGNED_16, 4)
8825261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort, RS_TYPE_UNSIGNED_16, 1)
8835261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort2, RS_TYPE_UNSIGNED_16, 2)
8845261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort3, RS_TYPE_UNSIGNED_16, 3)
8855261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort4, RS_TYPE_UNSIGNED_16, 4)
8865261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int, RS_TYPE_SIGNED_32, 1)
8875261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int2, RS_TYPE_SIGNED_32, 2)
8885261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int3, RS_TYPE_SIGNED_32, 3)
8895261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int4, RS_TYPE_SIGNED_32, 4)
8905261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint, RS_TYPE_UNSIGNED_32, 1)
8915261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint2, RS_TYPE_UNSIGNED_32, 2)
8925261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint3, RS_TYPE_UNSIGNED_32, 3)
8935261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint4, RS_TYPE_UNSIGNED_32, 4)
8945261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long, RS_TYPE_SIGNED_64, 1)
8955261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long2, RS_TYPE_SIGNED_64, 2)
8965261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long3, RS_TYPE_SIGNED_64, 3)
8975261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long4, RS_TYPE_SIGNED_64, 4)
8985261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong, RS_TYPE_UNSIGNED_64, 1)
8995261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong2, RS_TYPE_UNSIGNED_64, 2)
9005261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong3, RS_TYPE_UNSIGNED_64, 3)
9015261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong4, RS_TYPE_UNSIGNED_64, 4)
9025261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float, RS_TYPE_FLOAT_32, 1)
9035261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float2, RS_TYPE_FLOAT_32, 2)
9045261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float3, RS_TYPE_FLOAT_32, 3)
9055261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float4, RS_TYPE_FLOAT_32, 4)
9065261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double, RS_TYPE_FLOAT_64, 1)
9075261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double2, RS_TYPE_FLOAT_64, 2)
9085261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double3, RS_TYPE_FLOAT_64, 3)
9095261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double4, RS_TYPE_FLOAT_64, 4)
9105261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9115261a5ea546ff358edd5aac7602fc4132434f481Jason Sams#undef ELEMENT_AT
91287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
91387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
91487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Stub implementation
91587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
91687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
91787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// llvm name mangling ref
91887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//  <builtin-type> ::= v  # void
91987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= b  # bool
92087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= c  # char
92187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= a  # signed char
92287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= h  # unsigned char
92387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= s  # short
92487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= t  # unsigned short
92587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= i  # int
92687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= j  # unsigned int
92787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= l  # long
92887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= m  # unsigned long
92987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= x  # long long, __int64
93087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= y  # unsigned long long, __int64
93187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= f  # float
93287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= d  # double
93387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
934709a0978ae141198018ca9769f8d96292a8928e6Jason Samsstatic RsdCpuReference::CpuSymbol gSyms[] = {
9355261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    // Debug runtime
936d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationj", (void *)&SC_GetElementAt1D, true },
937d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationjj", (void *)&SC_GetElementAt2D, true },
938d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationjjj", (void *)&SC_GetElementAt3D, true },
939d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvj", (void *)&SC_SetElementAt1D, true },
940d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvjj", (void *)&SC_SetElementAt2D, true },
941d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvjjj", (void *)&SC_SetElementAt3D, true },
942d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
943d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
944d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhj", (void *)&SC_GetElementAt1_uchar, true },
945d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hj", (void *)&SC_GetElementAt1_uchar2, true },
946d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hj", (void *)&SC_GetElementAt1_uchar3, true },
947d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hj", (void *)&SC_GetElementAt1_uchar4, true },
948d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhjj", (void *)&SC_GetElementAt2_uchar, true },
949d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hjj", (void *)&SC_GetElementAt2_uchar2, true },
950d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hjj", (void *)&SC_GetElementAt2_uchar3, true },
951d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hjj", (void *)&SC_GetElementAt2_uchar4, true },
952d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhjjj", (void *)&SC_GetElementAt3_uchar, true },
953d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hjjj", (void *)&SC_GetElementAt3_uchar2, true },
954d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hjjj", (void *)&SC_GetElementAt3_uchar3, true },
955d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hjjj", (void *)&SC_GetElementAt3_uchar4, true },
956d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
957d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcj", (void *)&SC_GetElementAt1_char, true },
958d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cj", (void *)&SC_GetElementAt1_char2, true },
959d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cj", (void *)&SC_GetElementAt1_char3, true },
960d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cj", (void *)&SC_GetElementAt1_char4, true },
961d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcjj", (void *)&SC_GetElementAt2_char, true },
962d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cjj", (void *)&SC_GetElementAt2_char2, true },
963d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cjj", (void *)&SC_GetElementAt2_char3, true },
964d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cjj", (void *)&SC_GetElementAt2_char4, true },
965d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcjjj", (void *)&SC_GetElementAt3_char, true },
966d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cjjj", (void *)&SC_GetElementAt3_char2, true },
967d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cjjj", (void *)&SC_GetElementAt3_char3, true },
968d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cjjj", (void *)&SC_GetElementAt3_char4, true },
969d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
970d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtj", (void *)&SC_GetElementAt1_ushort, true },
971d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tj", (void *)&SC_GetElementAt1_ushort2, true },
972d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tj", (void *)&SC_GetElementAt1_ushort3, true },
973d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tj", (void *)&SC_GetElementAt1_ushort4, true },
974d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtjj", (void *)&SC_GetElementAt2_ushort, true },
975d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tjj", (void *)&SC_GetElementAt2_ushort2, true },
976d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tjj", (void *)&SC_GetElementAt2_ushort3, true },
977d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tjj", (void *)&SC_GetElementAt2_ushort4, true },
978d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtjjj", (void *)&SC_GetElementAt3_ushort, true },
979d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tjjj", (void *)&SC_GetElementAt3_ushort2, true },
980d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tjjj", (void *)&SC_GetElementAt3_ushort3, true },
981d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tjjj", (void *)&SC_GetElementAt3_ushort4, true },
982d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
983d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsj", (void *)&SC_GetElementAt1_short, true },
984d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sj", (void *)&SC_GetElementAt1_short2, true },
985d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sj", (void *)&SC_GetElementAt1_short3, true },
986d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sj", (void *)&SC_GetElementAt1_short4, true },
987d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsjj", (void *)&SC_GetElementAt2_short, true },
988d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sjj", (void *)&SC_GetElementAt2_short2, true },
989d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sjj", (void *)&SC_GetElementAt2_short3, true },
990d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sjj", (void *)&SC_GetElementAt2_short4, true },
991d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsjjj", (void *)&SC_GetElementAt3_short, true },
992d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sjjj", (void *)&SC_GetElementAt3_short2, true },
993d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sjjj", (void *)&SC_GetElementAt3_short3, true },
994d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sjjj", (void *)&SC_GetElementAt3_short4, true },
995d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
996d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjj", (void *)&SC_GetElementAt1_uint, true },
997d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jj", (void *)&SC_GetElementAt1_uint2, true },
998d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jj", (void *)&SC_GetElementAt1_uint3, true },
999d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jj", (void *)&SC_GetElementAt1_uint4, true },
1000d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjjj", (void *)&SC_GetElementAt2_uint, true },
1001d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jjj", (void *)&SC_GetElementAt2_uint2, true },
1002d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jjj", (void *)&SC_GetElementAt2_uint3, true },
1003d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jjj", (void *)&SC_GetElementAt2_uint4, true },
1004d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjjjj", (void *)&SC_GetElementAt3_uint, true },
1005d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jjjj", (void *)&SC_GetElementAt3_uint2, true },
1006d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jjjj", (void *)&SC_GetElementAt3_uint3, true },
1007d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jjjj", (void *)&SC_GetElementAt3_uint4, true },
1008d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1009d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPij", (void *)&SC_GetElementAt1_int, true },
1010d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ij", (void *)&SC_GetElementAt1_int2, true },
1011d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ij", (void *)&SC_GetElementAt1_int3, true },
1012d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ij", (void *)&SC_GetElementAt1_int4, true },
1013d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPijj", (void *)&SC_GetElementAt2_int, true },
1014d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ijj", (void *)&SC_GetElementAt2_int2, true },
1015d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ijj", (void *)&SC_GetElementAt2_int3, true },
1016d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ijj", (void *)&SC_GetElementAt2_int4, true },
1017d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPijjj", (void *)&SC_GetElementAt3_int, true },
1018d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ijjj", (void *)&SC_GetElementAt3_int2, true },
1019d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ijjj", (void *)&SC_GetElementAt3_int3, true },
1020d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ijjj", (void *)&SC_GetElementAt3_int4, true },
1021d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1022d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmj", (void *)&SC_GetElementAt1_ulong, true },
1023d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mj", (void *)&SC_GetElementAt1_ulong2, true },
1024d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mj", (void *)&SC_GetElementAt1_ulong3, true },
1025d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mj", (void *)&SC_GetElementAt1_ulong4, true },
1026d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmjj", (void *)&SC_GetElementAt2_ulong, true },
1027d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mjj", (void *)&SC_GetElementAt2_ulong2, true },
1028d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mjj", (void *)&SC_GetElementAt2_ulong3, true },
1029d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mjj", (void *)&SC_GetElementAt2_ulong4, true },
1030d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmjjj", (void *)&SC_GetElementAt3_ulong, true },
1031d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mjjj", (void *)&SC_GetElementAt3_ulong2, true },
1032d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mjjj", (void *)&SC_GetElementAt3_ulong3, true },
1033d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mjjj", (void *)&SC_GetElementAt3_ulong4, true },
1034d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1035d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPlj", (void *)&SC_GetElementAt1_long, true },
1036d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_lj", (void *)&SC_GetElementAt1_long2, true },
1037d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_lj", (void *)&SC_GetElementAt1_long3, true },
1038d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_lj", (void *)&SC_GetElementAt1_long4, true },
1039d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPljj", (void *)&SC_GetElementAt2_long, true },
1040d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_ljj", (void *)&SC_GetElementAt2_long2, true },
1041d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_ljj", (void *)&SC_GetElementAt2_long3, true },
1042d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_ljj", (void *)&SC_GetElementAt2_long4, true },
1043d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPljjj", (void *)&SC_GetElementAt3_long, true },
1044d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_ljjj", (void *)&SC_GetElementAt3_long2, true },
1045d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_ljjj", (void *)&SC_GetElementAt3_long3, true },
1046d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_ljjj", (void *)&SC_GetElementAt3_long4, true },
1047d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1048d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfj", (void *)&SC_GetElementAt1_float, true },
1049d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fj", (void *)&SC_GetElementAt1_float2, true },
1050d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fj", (void *)&SC_GetElementAt1_float3, true },
1051d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fj", (void *)&SC_GetElementAt1_float4, true },
1052d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfjj", (void *)&SC_GetElementAt2_float, true },
1053d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fjj", (void *)&SC_GetElementAt2_float2, true },
1054d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fjj", (void *)&SC_GetElementAt2_float3, true },
1055d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fjj", (void *)&SC_GetElementAt2_float4, true },
1056d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfjjj", (void *)&SC_GetElementAt3_float, true },
1057d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fjjj", (void *)&SC_GetElementAt3_float2, true },
1058d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fjjj", (void *)&SC_GetElementAt3_float3, true },
1059d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fjjj", (void *)&SC_GetElementAt3_float4, true },
1060d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1061d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdj", (void *)&SC_GetElementAt1_double, true },
1062d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_dj", (void *)&SC_GetElementAt1_double2, true },
1063d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_dj", (void *)&SC_GetElementAt1_double3, true },
1064d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_dj", (void *)&SC_GetElementAt1_double4, true },
1065d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdjj", (void *)&SC_GetElementAt2_double, true },
1066d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_djj", (void *)&SC_GetElementAt2_double2, true },
1067d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_djj", (void *)&SC_GetElementAt2_double3, true },
1068d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_djj", (void *)&SC_GetElementAt2_double4, true },
1069d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdjjj", (void *)&SC_GetElementAt3_double, true },
1070d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_djjj", (void *)&SC_GetElementAt3_double2, true },
1071d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_djjj", (void *)&SC_GetElementAt3_double3, true },
1072d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_djjj", (void *)&SC_GetElementAt3_double4, true },
1073d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1074d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1075d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1076d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhj", (void *)&SC_SetElementAt1_uchar, true },
1077d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hj", (void *)&SC_SetElementAt1_uchar2, true },
1078d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hj", (void *)&SC_SetElementAt1_uchar3, true },
1079d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hj", (void *)&SC_SetElementAt1_uchar4, true },
1080d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhjj", (void *)&SC_SetElementAt2_uchar, true },
1081d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hjj", (void *)&SC_SetElementAt2_uchar2, true },
1082d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hjj", (void *)&SC_SetElementAt2_uchar3, true },
1083d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hjj", (void *)&SC_SetElementAt2_uchar4, true },
1084d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhjjj", (void *)&SC_SetElementAt3_uchar, true },
1085d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hjjj", (void *)&SC_SetElementAt3_uchar2, true },
1086d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hjjj", (void *)&SC_SetElementAt3_uchar3, true },
1087d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hjjj", (void *)&SC_SetElementAt3_uchar4, true },
1088d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1089d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcj", (void *)&SC_SetElementAt1_char, true },
1090d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cj", (void *)&SC_SetElementAt1_char2, true },
1091d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cj", (void *)&SC_SetElementAt1_char3, true },
1092d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cj", (void *)&SC_SetElementAt1_char4, true },
1093d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcjj", (void *)&SC_SetElementAt2_char, true },
1094d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cjj", (void *)&SC_SetElementAt2_char2, true },
1095d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cjj", (void *)&SC_SetElementAt2_char3, true },
1096d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cjj", (void *)&SC_SetElementAt2_char4, true },
1097d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcjjj", (void *)&SC_SetElementAt3_char, true },
1098d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cjjj", (void *)&SC_SetElementAt3_char2, true },
1099d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cjjj", (void *)&SC_SetElementAt3_char3, true },
1100d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cjjj", (void *)&SC_SetElementAt3_char4, true },
1101d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1102d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationPKht", (void *)&SC_SetElementAt1_ushort, true },
1103d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tj", (void *)&SC_SetElementAt1_ushort2, true },
1104d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tj", (void *)&SC_SetElementAt1_ushort3, true },
1105d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tj", (void *)&SC_SetElementAt1_ushort4, true },
1106d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationPKtjj", (void *)&SC_SetElementAt2_ushort, true },
1107d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tjj", (void *)&SC_SetElementAt2_ushort2, true },
1108d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tjj", (void *)&SC_SetElementAt2_ushort3, true },
1109d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tjj", (void *)&SC_SetElementAt2_ushort4, true },
1110d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationPKtjjj", (void *)&SC_SetElementAt3_ushort, true },
1111d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tjjj", (void *)&SC_SetElementAt3_ushort2, true },
1112d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tjjj", (void *)&SC_SetElementAt3_ushort3, true },
1113d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tjjj", (void *)&SC_SetElementAt3_ushort4, true },
1114d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1115d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsj", (void *)&SC_SetElementAt1_short, true },
1116d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sj", (void *)&SC_SetElementAt1_short2, true },
1117d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sj", (void *)&SC_SetElementAt1_short3, true },
1118d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sj", (void *)&SC_SetElementAt1_short4, true },
1119d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsjj", (void *)&SC_SetElementAt2_short, true },
1120d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sjj", (void *)&SC_SetElementAt2_short2, true },
1121d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sjj", (void *)&SC_SetElementAt2_short3, true },
1122d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sjj", (void *)&SC_SetElementAt2_short4, true },
1123d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsjjj", (void *)&SC_SetElementAt3_short, true },
1124d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sjjj", (void *)&SC_SetElementAt3_short2, true },
1125d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sjjj", (void *)&SC_SetElementAt3_short3, true },
1126d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sjjj", (void *)&SC_SetElementAt3_short4, true },
1127d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1128d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjj", (void *)&SC_SetElementAt1_uint, true },
1129d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jj", (void *)&SC_SetElementAt1_uint2, true },
1130d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jj", (void *)&SC_SetElementAt1_uint3, true },
1131d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jj", (void *)&SC_SetElementAt1_uint4, true },
1132d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjjj", (void *)&SC_SetElementAt2_uint, true },
1133d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jjj", (void *)&SC_SetElementAt2_uint2, true },
1134d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jjj", (void *)&SC_SetElementAt2_uint3, true },
1135d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jjj", (void *)&SC_SetElementAt2_uint4, true },
1136d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjjjj", (void *)&SC_SetElementAt3_uint, true },
1137d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jjjj", (void *)&SC_SetElementAt3_uint2, true },
1138d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jjjj", (void *)&SC_SetElementAt3_uint3, true },
1139d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jjjj", (void *)&SC_SetElementAt3_uint4, true },
1140d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1141cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines    { "_Z18rsSetElementAt_int13rs_allocationPKij", (void *)&SC_SetElementAt1_int, true },
1142d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ij", (void *)&SC_SetElementAt1_int2, true },
1143d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ij", (void *)&SC_SetElementAt1_int3, true },
1144d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ij", (void *)&SC_SetElementAt1_int4, true },
1145d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsSetElementAt_int13rs_allocationPKijj", (void *)&SC_SetElementAt2_int, true },
1146d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ijj", (void *)&SC_SetElementAt2_int2, true },
1147d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ijj", (void *)&SC_SetElementAt2_int3, true },
1148d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ijj", (void *)&SC_SetElementAt2_int4, true },
1149d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsSetElementAt_int13rs_allocationPKijjj", (void *)&SC_SetElementAt3_int, true },
1150d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ijjj", (void *)&SC_SetElementAt3_int2, true },
1151d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ijjj", (void *)&SC_SetElementAt3_int3, true },
1152d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ijjj", (void *)&SC_SetElementAt3_int4, true },
1153d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1154d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationPKmt", (void *)&SC_SetElementAt1_ulong, true },
1155d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mj", (void *)&SC_SetElementAt1_ulong2, true },
1156d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mj", (void *)&SC_SetElementAt1_ulong3, true },
1157d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mj", (void *)&SC_SetElementAt1_ulong4, true },
1158d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationPKmjj", (void *)&SC_SetElementAt2_ulong, true },
1159d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mjj", (void *)&SC_SetElementAt2_ulong2, true },
1160d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mjj", (void *)&SC_SetElementAt2_ulong3, true },
1161d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mjj", (void *)&SC_SetElementAt2_ulong4, true },
1162d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationPKmjjj", (void *)&SC_SetElementAt3_ulong, true },
1163d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mjjj", (void *)&SC_SetElementAt3_ulong2, true },
1164d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mjjj", (void *)&SC_SetElementAt3_ulong3, true },
1165d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mjjj", (void *)&SC_SetElementAt3_ulong4, true },
1166d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1167d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKlj", (void *)&SC_SetElementAt1_long, true },
1168d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_lj", (void *)&SC_SetElementAt1_long2, true },
1169d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_lj", (void *)&SC_SetElementAt1_long3, true },
1170d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_lj", (void *)&SC_SetElementAt1_long4, true },
1171d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKljj", (void *)&SC_SetElementAt2_long, true },
1172d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_ljj", (void *)&SC_SetElementAt2_long2, true },
1173d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_ljj", (void *)&SC_SetElementAt2_long3, true },
1174d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_ljj", (void *)&SC_SetElementAt2_long4, true },
1175d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKljjj", (void *)&SC_SetElementAt3_long, true },
1176d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_ljjj", (void *)&SC_SetElementAt3_long2, true },
1177d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_ljjj", (void *)&SC_SetElementAt3_long3, true },
1178d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_ljjj", (void *)&SC_SetElementAt3_long4, true },
1179d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1180d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_float13rs_allocationPKft", (void *)&SC_SetElementAt1_float, true },
1181d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fj", (void *)&SC_SetElementAt1_float2, true },
1182d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fj", (void *)&SC_SetElementAt1_float3, true },
1183d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fj", (void *)&SC_SetElementAt1_float4, true },
1184d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_float13rs_allocationPKfjj", (void *)&SC_SetElementAt2_float, true },
1185d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fjj", (void *)&SC_SetElementAt2_float2, true },
1186d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fjj", (void *)&SC_SetElementAt2_float3, true },
1187d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fjj", (void *)&SC_SetElementAt2_float4, true },
1188d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_float13rs_allocationPKfjjj", (void *)&SC_SetElementAt3_float, true },
1189d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fjjj", (void *)&SC_SetElementAt3_float2, true },
1190d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fjjj", (void *)&SC_SetElementAt3_float3, true },
1191d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fjjj", (void *)&SC_SetElementAt3_float4, true },
1192d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1193d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_double13rs_allocationPKdt", (void *)&SC_SetElementAt1_double, true },
1194d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_dj", (void *)&SC_SetElementAt1_double2, true },
1195d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_dj", (void *)&SC_SetElementAt1_double3, true },
1196d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_dj", (void *)&SC_SetElementAt1_double4, true },
1197d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_double13rs_allocationPKdjj", (void *)&SC_SetElementAt2_double, true },
1198d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_djj", (void *)&SC_SetElementAt2_double2, true },
1199d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_djj", (void *)&SC_SetElementAt2_double3, true },
1200d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_djj", (void *)&SC_SetElementAt2_double4, true },
1201d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_double13rs_allocationPKdjjj", (void *)&SC_SetElementAt3_double, true },
1202d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_djjj", (void *)&SC_SetElementAt3_double2, true },
1203d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_djjj", (void *)&SC_SetElementAt3_double3, true },
1204d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_djjj", (void *)&SC_SetElementAt3_double4, true },
12055261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
12065261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
120787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Refcounting
1208444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
120987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true },
121087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true },
121187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
121287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true },
121387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true },
121487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
121587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true },
121687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true },
121787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
121887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true },
121987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true },
122087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
122187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true },
122287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true },
1223444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
1224444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject_ByRef, true },
1225444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject_ByRef, true },
1226444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1227444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject_ByRef, true },
1228444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject_ByRef, true },
1229444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1230444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject_ByRef, true },
1231444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject_ByRef, true },
1232444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1233444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject_ByRef, true },
1234444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject_ByRef, true },
1235444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1236444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject_ByRef, true },
1237444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject_ByRef, true },
1238444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
1239444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true },
1240444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true },
1241444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true },
1242444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true },
1243444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true },
124487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
12459e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z11rsSetObjectP7rs_pathS_", (void *)&SC_SetObject, true },
12469e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z13rsClearObjectP7rs_path", (void *)&SC_ClearObject, true },
12479e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z10rsIsObject7rs_path", (void *)&SC_IsObject, true },
12489e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
124987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true },
125087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true },
125187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true },
125287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
125387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true },
125487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true },
125587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true },
125687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
125787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true },
125887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true },
125987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true },
126087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
126187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true },
126287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true },
126387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true },
126487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
126587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true },
126687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true },
126787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true },
126887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
126987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true },
127087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true },
127187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true },
127287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
127387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Allocation ops
127487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true },
127587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false },
127687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false },
127774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false },
127887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true },
12790b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
1280b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z18rsAllocationIoSend13rs_allocation", (void *)&SC_AllocationIoSend, false },
1281b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z21rsAllocationIoReceive13rs_allocation", (void *)&SC_AllocationIoReceive, false },
12820b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
128374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false },
128474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false },
128587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
128687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Messaging
128787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
128887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClienti", (void *)&SC_ToClient, false },
128987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false },
129087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false },
129187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false },
12920b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
129387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false },
129487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false },
129587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false },
129687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false },
129787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false },
129887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false },
1299a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant19rs_program_fragmentj13rs_allocation", (void *)&SC_BindFragmentConstant, false },
1300a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant17rs_program_vertexj13rs_allocation", (void *)&SC_BindVertexConstant, false },
130187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
130287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false },
130387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false },
130487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false },
130587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
130687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false },
130787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
130887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false },
130987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
131087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false },
131187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false },
131287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
131387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
131487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false },
131587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false },
131687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false },
131787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false },
131887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
131987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false },
132087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false },
132187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false },
132287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false },
132387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
13249e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z11rsgDrawPath7rs_path", (void *)&SC_DrawPath, false },
13259e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
132687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false },
132787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false },
132887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
132987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false },
133087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false },
133187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false },
133287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false },
133387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
133487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false },
133587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false },
133687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
133787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false },
133887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false },
133987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false },
134087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false },
134187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false },
13421aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
134387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1344aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true },
1345aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true },
1346f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK14rs_script_call", (void *)&SC_ForEach_SAAUS, true },
1347aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true },
1348f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK14rs_script_call", (void *)&SC_ForEach_SAAULS, true },
13491aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif // RS_COMPATIBILITY_LIB
135087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
135164147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#ifndef __LP64__
135287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // time
135387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z6rsTimePi", (void *)&SC_Time, true },
135487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true },
135564147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#else
135664147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    // time
135764147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    { "_Z6rsTimePl", (void *)&SC_Time, true },
135864147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    { "_Z11rsLocaltimeP5rs_tmPKl", (void *)&SC_LocalTime, true },
135964147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#endif
136087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true },
136187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true },
136287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z7rsGetDtv", (void*)&SC_GetDt, false },
136387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
136487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // misc
13650b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
136687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z5colorffff", (void *)&SC_Color, false },
136787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z9rsgFinishv", (void *)&SC_Finish, false },
13680b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
136987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
137087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { NULL, NULL, false }
137187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams};
137287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
13730b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifdef RS_COMPATIBILITY_LIB
13740b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1375d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray//////////////////////////////////////////////////////////////////////////////
1376d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray// Compatibility Library entry points
1377d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray//////////////////////////////////////////////////////////////////////////////
1378d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1379f827cadde659212b266b9635128c98515a7dcb01Stephen Hines#define IS_CLEAR_SET_OBJ(t) \
1380f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    bool rsIsObject(t src) { \
1381f29edf80510d483b8663e9d8b859959e37361aeeJason Sams        return src.p != NULL; \
1382f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    } \
1383d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    void __attribute__((overloadable)) rsClearObject(t *dst) { \
1384f29edf80510d483b8663e9d8b859959e37361aeeJason Sams        return SC_ClearObject(reinterpret_cast<rs_object_base *>(dst)); \
1385d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    } \
1386d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    void __attribute__((overloadable)) rsSetObject(t *dst, t src) { \
13871aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray        return SC_SetObject(reinterpret_cast<rs_object_base *>(dst), (ObjectBase*)src.p); \
1388d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    }
1389d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1390f29edf80510d483b8663e9d8b859959e37361aeeJason SamsIS_CLEAR_SET_OBJ(::rs_element)
1391f29edf80510d483b8663e9d8b859959e37361aeeJason SamsIS_CLEAR_SET_OBJ(::rs_type)
1392f29edf80510d483b8663e9d8b859959e37361aeeJason SamsIS_CLEAR_SET_OBJ(::rs_allocation)
1393f29edf80510d483b8663e9d8b859959e37361aeeJason SamsIS_CLEAR_SET_OBJ(::rs_sampler)
1394f29edf80510d483b8663e9d8b859959e37361aeeJason SamsIS_CLEAR_SET_OBJ(::rs_script)
1395f827cadde659212b266b9635128c98515a7dcb01Stephen Hines#undef IS_CLEAR_SET_OBJ
1396d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
13971aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAA(::rs_script target,
13981aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                           ::rs_allocation in,
13991aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                           ::rs_allocation out) {
14001aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
14011aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p, NULL, 0, NULL);
14021aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
14031aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
14041aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAUS(::rs_script target,
14051aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             ::rs_allocation in,
14061aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             ::rs_allocation out,
14071aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             const void *usr,
14081aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             const RsScriptCall *call) {
14091aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
14101aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p, usr, 0, call);
14111aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
14121aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
14131aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAUL(::rs_script target,
14141aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             ::rs_allocation in,
14151aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             ::rs_allocation out,
14161aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             const void *usr,
14171aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             uint32_t usrLen) {
14181aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
14191aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p, usr, usrLen, NULL);
14201aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
14211aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
14221aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAULS(::rs_script target,
14231aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              ::rs_allocation in,
14241aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              ::rs_allocation out,
14251aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              const void *usr,
14261aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              uint32_t usrLen,
14271aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              const RsScriptCall *call) {
14281aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
14291aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p, usr, usrLen, call);
14301aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
14311aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1432d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayconst Allocation * rsGetAllocation(const void *ptr) {
1433d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return SC_GetAllocation(ptr);
1434d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1435d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1436a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsAllocationIoSend(::rs_allocation a) {
14377a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines    SC_AllocationIoSend((Allocation *)a.p);
14387a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
14397a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
1440a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsAllocationIoReceive(::rs_allocation a) {
14417a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines    SC_AllocationIoReceive((Allocation *)a.p);
14427a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
14437a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
14447a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
14457a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinesvoid __attribute__((overloadable)) rsAllocationCopy1DRange(
1446a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation dstAlloc,
14477a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstOff, uint32_t dstMip, uint32_t count,
1448a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation srcAlloc,
14497a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcOff, uint32_t srcMip) {
14501aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    SC_AllocationCopy1DRange(dstAlloc, dstOff, dstMip, count,
14511aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             srcAlloc, srcOff, srcMip);
14527a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
14537a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
14547a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinesvoid __attribute__((overloadable)) rsAllocationCopy2DRange(
1455a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation dstAlloc,
14567a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstXoff, uint32_t dstYoff,
14577a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstMip, rs_allocation_cubemap_face dstFace,
14587a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t width, uint32_t height,
1459a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation srcAlloc,
14607a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcXoff, uint32_t srcYoff,
14617a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcMip, rs_allocation_cubemap_face srcFace) {
14621aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    SC_AllocationCopy2DRange(dstAlloc, dstXoff, dstYoff,
14637a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines                             dstMip, dstFace, width, height,
14641aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             srcAlloc, srcXoff, srcYoff,
14657a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines                             srcMip, srcFace);
14667a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
14677a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
1468a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1469a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1470a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1471d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const void *usr,
1472d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const rs_script_call *call) {
14731aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return SC_ForEach_SAAUS(script, in, out, usr, (RsScriptCall*)call);
1474d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1475d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1476a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1477a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1478a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out) {
14791aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return SC_ForEach_SAA(script, in, out);
1480276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1481276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1482a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1483a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1484a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1485276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines                                             const void *usr,
1486276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines                                             uint32_t usrLen) {
14871aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return SC_ForEach_SAAUL(script, in, out, usr, usrLen);
1488276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1489276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1490a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1491a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1492a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1493d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const void *usr,
1494d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             uint32_t usrLen,
1495d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const rs_script_call *call) {
14961aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return SC_ForEach_SAAULS(script, in, out, usr, usrLen, (RsScriptCall*)call);
1497d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1498d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1499d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayint rsTime(int *timer) {
1500d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return SC_Time(timer);
1501d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1502d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1503d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayrs_tm* rsLocaltime(rs_tm* local, const int *timer) {
1504d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return (rs_tm*)(SC_LocalTime((tm*)local, (long*)timer));
1505d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1506d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1507d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayint64_t rsUptimeMillis() {
1508d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1509d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return rsrUptimeMillis(rsc);
1510d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1511d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1512cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hinesint64_t rsUptimeNanos() {
1513cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines    return SC_UptimeNanos();
1514cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines}
1515cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines
1516cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hinesfloat rsGetDt() {
1517cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines    return SC_GetDt();
1518cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines}
1519cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines
1520276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClient(int cmdID) {
1521276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClient(cmdID);
1522276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1523276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1524276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClient(int cmdID, const void *data, uint32_t len) {
1525276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClient2(cmdID, data, len);
1526d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1527d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
15280b575de8ed0b628d84d256f5846500b0385979bdTim Murrayuint32_t rsSendToClientBlocking(int cmdID) {
1529276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClientBlocking(cmdID);
1530276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1531276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1532276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClientBlocking(int cmdID, const void *data, uint32_t len) {
1533276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClientBlocking2(cmdID, data, len);
15340b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15350b575de8ed0b628d84d256f5846500b0385979bdTim Murray
15360b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF(const char *s, float f) {
15370b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %f, 0x%08x", s, f, *((int *) (&f)));
15380b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15390b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv2(const char *s, float f1, float f2) {
15400b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f}", s, f1, f2);
15410b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15420b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv3(const char *s, float f1, float f2, float f3) {
15430b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f}", s, f1, f2, f3);
15440b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15450b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) {
15460b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4);
15470b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15480b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF2(const char *s, float2 f) {
15490b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f}", s, f.x, f.y);
15500b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15510b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF3(const char *s, float3 f) {
15520b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f}", s, f.x, f.y, f.z);
15530b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15540b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF4(const char *s, float4 f) {
15550b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f}", s, f.x, f.y, f.z, f.w);
15560b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15570b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugD(const char *s, double d) {
15580b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d)));
15590b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15600b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM4v4(const char *s, const float *f) {
15610b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]);
15620b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]);
15630b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]);
15640b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]);
15650b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15660b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM3v3(const char *s, const float *f) {
15670b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]);
15680b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f", s, f[1], f[4], f[7]);
15690b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f}",s, f[2], f[5], f[8]);
15700b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15710b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM2v2(const char *s, const float *f) {
15720b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f", s, f[0], f[2]);
15730b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f}",s, f[1], f[3]);
15740b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15750b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI8(const char *s, char c) {
15760b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hhd  0x%hhx", s, c, (unsigned char)c);
15770b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15780b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC2(const char *s, char2 c) {
15790b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhd, %hhd}  0x%hhx 0x%hhx", s, c.x, c.y, (unsigned char)c.x, (unsigned char)c.y);
15800b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15810b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC3(const char *s, char3 c) {
15820b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhd, %hhd, %hhd}  0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, (unsigned char)c.x, (unsigned char)c.y, (unsigned char)c.z);
15830b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15840b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC4(const char *s, char4 c) {
15850b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhd, %hhd, %hhd, %hhd}  0x%hhx 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, c.w, (unsigned char)c.x, (unsigned char)c.y, (unsigned char)c.z, (unsigned char)c.w);
15860b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15870b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU8(const char *s, unsigned char c) {
15880b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hhu  0x%hhx", s, c, c);
15890b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15900b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC2(const char *s, uchar2 c) {
15910b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhu, %hhu}  0x%hhx 0x%hhx", s, c.x, c.y, c.x, c.y);
15920b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15930b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC3(const char *s, uchar3 c) {
15940b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhu, %hhu, %hhu}  0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, c.x, c.y, c.z);
15950b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15960b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC4(const char *s, uchar4 c) {
15970b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhu, %hhu, %hhu, %hhu}  0x%hhx 0x%hhx 0x%hhx 0x%hhx", s, c.x, c.y, c.z, c.w, c.x, c.y, c.z, c.w);
15980b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
15990b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI16(const char *s, short c) {
16000b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hd  0x%hx", s, c, c);
16010b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16020b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS2(const char *s, short2 c) {
16030b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hd, %hd}  0x%hx 0x%hx", s, c.x, c.y, c.x, c.y);
16040b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16050b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS3(const char *s, short3 c) {
16060b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hd, %hd, %hd}  0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.x, c.y, c.z);
16070b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16080b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS4(const char *s, short4 c) {
16090b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hd, %hd, %hd, %hd}  0x%hx 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.w, c.x, c.y, c.z, c.w);
16100b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16110b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU16(const char *s, unsigned short c) {
16120b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hu  0x%hx", s, c, c);
16130b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16140b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS2(const char *s, ushort2 c) {
16150b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hu, %hu}  0x%hx 0x%hx", s, c.x, c.y, c.x, c.y);
16160b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16170b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS3(const char *s, ushort3 c) {
16180b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hu, %hu, %hu}  0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.x, c.y, c.z);
16190b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16200b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS4(const char *s, ushort4 c) {
16210b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hu, %hu, %hu, %hu}  0x%hx 0x%hx 0x%hx 0x%hx", s, c.x, c.y, c.z, c.w, c.x, c.y, c.z, c.w);
16220b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16230b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI32(const char *s, int32_t i) {
16240b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %d  0x%x", s, i, i);
16250b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16260b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI2(const char *s, int2 i) {
16270b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%d, %d}  0x%x 0x%x", s, i.x, i.y, i.x, i.y);
16280b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16290b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI3(const char *s, int3 i) {
16300b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%d, %d, %d}  0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.x, i.y, i.z);
16310b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16320b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI4(const char *s, int4 i) {
16330b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%d, %d, %d, %d}  0x%x 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.w, i.x, i.y, i.z, i.w);
16340b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16350b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU32(const char *s, uint32_t i) {
16360b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %u  0x%x", s, i, i);
16370b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16380b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI2(const char *s, uint2 i) {
16390b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%u, %u}  0x%x 0x%x", s, i.x, i.y, i.x, i.y);
16400b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16410b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI3(const char *s, uint3 i) {
16420b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%u, %u, %u}  0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.x, i.y, i.z);
16430b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16440b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI4(const char *s, uint4 i) {
16450b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%u, %u, %u, %u}  0x%x 0x%x 0x%x 0x%x", s, i.x, i.y, i.z, i.w, i.x, i.y, i.z, i.w);
16460b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16470b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugLL64(const char *s, long long ll) {
16480b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %lld  0x%llx", s, ll, ll);
16490b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16500b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL2(const char *s, long2 ll) {
16510b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%lld, %lld}  0x%llx 0x%llx", s, ll.x, ll.y, ll.x, ll.y);
16520b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16530b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL3(const char *s, long3 ll) {
16540b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%lld, %lld, %lld}  0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.x, ll.y, ll.z);
16550b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16560b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL4(const char *s, long4 ll) {
16570b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%lld, %lld, %lld, %lld}  0x%llx 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.w, ll.x, ll.y, ll.z, ll.w);
16580b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16590b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugULL64(const char *s, unsigned long long ll) {
16600b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %llu  0x%llx", s, ll, ll);
16610b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16620b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL2(const char *s, ulong2 ll) {
16630b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%llu, %llu}  0x%llx 0x%llx", s, ll.x, ll.y, ll.x, ll.y);
16640b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16650b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL3(const char *s, ulong3 ll) {
16660b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%llu, %llu, %llu}  0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.x, ll.y, ll.z);
16670b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16680b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL4(const char *s, ulong4 ll) {
16690b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%llu, %llu, %llu, %llu}  0x%llx 0x%llx 0x%llx 0x%llx", s, ll.x, ll.y, ll.z, ll.w, ll.x, ll.y, ll.z, ll.w);
16700b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16710b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugP(const char *s, const void *p) {
16720b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %p", s, p);
16730b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16740b575de8ed0b628d84d256f5846500b0385979bdTim Murray
16750b575de8ed0b628d84d256f5846500b0385979bdTim Murray// TODO: allocation ops, messaging, time
16760b575de8ed0b628d84d256f5846500b0385979bdTim Murray
16770b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f) {
16780b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugF(s, f);
16790b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16800b575de8ed0b628d84d256f5846500b0385979bdTim Murray
16810b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2) {
16820b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv2(s, f1, f2);
16830b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16840b575de8ed0b628d84d256f5846500b0385979bdTim Murray
16850b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2, float f3) {
16860b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv3(s, f1, f2, f3);
16870b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16880b575de8ed0b628d84d256f5846500b0385979bdTim Murray
16890b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2, float f3, float f4) {
16900b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv4(s, f1, f2, f3, f4);
16910b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16920b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1693b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float2 *f) {
1694b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF2(s, *f);
16950b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
16960b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1697b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float3 *f) {
1698b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF3(s, *f);
16990b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17000b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1701b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float4 *f) {
1702b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF4(s, *f);
17030b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17040b575de8ed0b628d84d256f5846500b0385979bdTim Murray
17050b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, double d) {
17060b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugD(s, d);
17070b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17080b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1709b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix4x4 *m) {
17100b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFM4v4(s, (float *) m);
17110b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17120b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1713b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix3x3 *m) {
1714d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    SC_debugFM3v3(s, (float *) m);
17150b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17160b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1717b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix2x2 *m) {
1718d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    SC_debugFM2v2(s, (float *) m);
17190b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17200b575de8ed0b628d84d256f5846500b0385979bdTim Murray
17210b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, char c) {
17220b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI8(s, c);
17230b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17240b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1725b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char2 *c) {
1726b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC2(s, *c);
17270b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17280b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1729b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char3 *c) {
1730b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC3(s, *c);
17310b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17320b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1733b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char4 *c) {
1734b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC4(s, *c);
17350b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17360b575de8ed0b628d84d256f5846500b0385979bdTim Murray
17370b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned char c) {
17380b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU8(s, c);
17390b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17400b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1741b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar2 *c) {
1742b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC2(s, *c);
17430b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17440b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1745b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar3 *c) {
1746b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC3(s, *c);
17470b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17480b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1749b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar4 *c) {
1750b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC4(s, *c);
17510b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17520b575de8ed0b628d84d256f5846500b0385979bdTim Murray
17530b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, short c) {
17540b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI16(s, c);
17550b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17560b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1757b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short2 *c) {
1758b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS2(s, *c);
17590b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17600b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1761b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short3 *c) {
1762b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS3(s, *c);
17630b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17640b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1765b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short4 *c) {
1766b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS4(s, *c);
17670b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17680b575de8ed0b628d84d256f5846500b0385979bdTim Murray
17690b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned short c) {
17700b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU16(s, c);
17710b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17720b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1773b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort2 *c) {
1774b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS2(s, *c);
17750b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17760b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1777b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort3 *c) {
1778b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS3(s, *c);
17790b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17800b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1781b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort4 *c) {
1782b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS4(s, *c);
17830b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17840b575de8ed0b628d84d256f5846500b0385979bdTim Murray
17850b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, int c) {
17860b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI32(s, c);
17870b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17880b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1789b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int2 *c) {
1790b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI2(s, *c);
17910b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17920b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1793b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int3 *c) {
1794b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI3(s, *c);
17950b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
17960b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1797b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int4 *c) {
1798b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI4(s, *c);
17990b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18000b575de8ed0b628d84d256f5846500b0385979bdTim Murray
18010b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned int c) {
18020b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU32(s, c);
18030b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18040b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1805b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint2 *c) {
1806b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI2(s, *c);
18070b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18080b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1809b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint3 *c) {
1810b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI3(s, *c);
18110b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18120b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1813b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint4 *c) {
1814b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI4(s, *c);
18150b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18160b575de8ed0b628d84d256f5846500b0385979bdTim Murray
18170b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, long c) {
18180b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugLL64(s, c);
18190b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18200b575de8ed0b628d84d256f5846500b0385979bdTim Murray
18210b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, long long c) {
18220b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugLL64(s, c);
18230b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18240b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1825b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long2 *c) {
1826b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL2(s, *c);
18270b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18280b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1829b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long3 *c) {
1830b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL3(s, *c);
18310b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18320b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1833b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long4 *c) {
1834b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL4(s, *c);
18350b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18360b575de8ed0b628d84d256f5846500b0385979bdTim Murray
18370b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned long c) {
18380b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugULL64(s, c);
18390b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18400b575de8ed0b628d84d256f5846500b0385979bdTim Murray
18410b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned long long c) {
18420b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugULL64(s, c);
18430b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18440b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1845b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong2 *c) {
1846b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL2(s, *c);
18470b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18480b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1849b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong3 *c) {
1850b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL3(s, *c);
18510b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18520b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1853b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong4 *c) {
1854b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL4(s, *c);
18550b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18560b575de8ed0b628d84d256f5846500b0385979bdTim Murray
1857a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// FIXME: We need to export these function signatures for the compatibility
1858a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// library. The C++ name mangling that LLVM uses for ext_vector_type requires
1859a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// different versions for "long" vs. "long long". Note that the called
1860a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// functions are still using the appropriate 64-bit sizes.
1861a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l2 __attribute__((ext_vector_type(2)));
1862a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l3 __attribute__((ext_vector_type(3)));
1863a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l4 __attribute__((ext_vector_type(4)));
1864a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul2 __attribute__((ext_vector_type(2)));
1865a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul3 __attribute__((ext_vector_type(3)));
1866a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul4 __attribute__((ext_vector_type(4)));
1867a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
1868a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l2 *c) {
1869a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL2(s, *(const long2 *)c);
1870a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
1871a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
1872a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l3 *c) {
1873a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL3(s, *(const long3 *)c);
1874a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
1875a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
1876a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l4 *c) {
1877a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL4(s, *(const long4 *)c);
1878a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
1879a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
1880a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul2 *c) {
1881a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL2(s, *(const ulong2 *)c);
1882a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
1883a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
1884a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul3 *c) {
1885a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL3(s, *(const ulong3 *)c);
1886a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
1887a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
1888a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul4 *c) {
1889a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL4(s, *(const ulong4 *)c);
1890a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
1891a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
18920b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, const void *p) {
18930b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugP(s, p);
18940b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18950b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif // RS_COMPATIBILITY_LIB
189687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1897709a0978ae141198018ca9769f8d96292a8928e6Jason Samsextern const RsdCpuReference::CpuSymbol * rsdLookupRuntimeStub(Context * pContext, char const* name) {
189887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    ScriptC *s = (ScriptC *)pContext;
1899709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const RsdCpuReference::CpuSymbol *syms = gSyms;
1900709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const RsdCpuReference::CpuSymbol *sym = NULL;
190187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
190287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    if (!sym) {
1903709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        while (syms->fnPtr) {
1904709a0978ae141198018ca9769f8d96292a8928e6Jason Sams            if (!strcmp(syms->name, name)) {
1905709a0978ae141198018ca9769f8d96292a8928e6Jason Sams                return syms;
190687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            }
190787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            syms++;
190887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams        }
190987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    }
191087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
191187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    return NULL;
191287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
1913