rsdRuntimeStubs.cpp revision 2544371624a3dd21ae2355e8fea870e29009332a
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
75127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#ifndef __LP64__
76d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#define OPAQUETYPE(t) \
77d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    typedef struct { const int* const p; } __attribute__((packed, aligned(4))) t;
78127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#else
79127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#define OPAQUETYPE(t) \
80127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    typedef struct { const void* p; const void* r; const void* v1; const void* v2; } t;
81127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#endif
82d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
83d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_element)
84d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_type)
85d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_allocation)
86d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_sampler)
87d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_script)
88d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_script_call)
892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_program_fragment);
912544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_program_store);
922544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_program_vertex);
932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_program_raster);
942544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
952544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_mesh);
962544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_font);
972544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_path);
982544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
99d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#undef OPAQUETYPE
100d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1017a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinestypedef enum {
1027a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines    // Empty to avoid conflicting definitions with RsAllocationCubemapFace
1037a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines} rs_allocation_cubemap_face;
1047a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
105d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murraytypedef struct {
106d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_sec;     ///< seconds
107d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_min;     ///< minutes
108d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_hour;    ///< hours
109d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_mday;    ///< day of the month
110d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_mon;     ///< month
111d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_year;    ///< year
112d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_wday;    ///< day of the week
113d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_yday;    ///< day of the year
114d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_isdst;   ///< daylight savings time
115d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray} rs_tm;
116d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
11787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
11887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Allocation
11987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
12087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
12187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1221aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationSyncAll2(android::renderscript::rs_allocation a, RsAllocationUsageType source) {
123709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
1241aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationSyncAll(rsc, (Allocation*)a.p, source);
12587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
12687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1271aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationSyncAll(android::renderscript::rs_allocation a) {
128709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
1291aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationSyncAll(rsc, (Allocation*)a.p, RS_ALLOCATION_USAGE_SCRIPT);
13087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
13187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1321aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#ifndef RS_COMPATIBILITY_LIB
1331aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
134dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_AllocationCopy1DRange(::rs_allocation dstAlloc,
13574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstOff,
13674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip,
13774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t count,
138dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                     ::rs_allocation srcAlloc,
13974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcOff, uint32_t srcMip) {
140709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
1411aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationCopy1DRange(rsc, (Allocation*)dstAlloc.p, dstOff, dstMip, count,
1421aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             (Allocation*)srcAlloc.p, srcOff, srcMip);
14374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
14474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
145dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_AllocationCopy2DRange(::rs_allocation dstAlloc,
14674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstXoff, uint32_t dstYoff,
14774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip, uint32_t dstFace,
14874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t width, uint32_t height,
149dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                     ::rs_allocation srcAlloc,
15074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcXoff, uint32_t srcYoff,
15174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcMip, uint32_t srcFace) {
152709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
1531aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationCopy2DRange(rsc, (Allocation*)dstAlloc.p,
154a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             dstXoff, dstYoff, dstMip, dstFace,
155a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             width, height,
1561aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             (Allocation*)srcAlloc.p,
157a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             srcXoff, srcYoff, srcMip, srcFace);
15874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
15974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
160dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_AllocationIoSend(::rs_allocation alloc) {
1611aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1621aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationIoSend(rsc, (Allocation*)alloc.p);
1631aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
1641aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1651aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
166dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_AllocationIoReceive(::rs_allocation alloc) {
1671aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1681aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationIoReceive(rsc, (Allocation*)alloc.p);
1691aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
1701aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1711aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#else
1721aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1731aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationCopy1DRange(::rs_allocation dstAlloc,
1741aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstOff,
1751aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstMip,
1761aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t count,
1771aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     ::rs_allocation srcAlloc,
1781aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcOff, uint32_t srcMip) {
1791aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1801aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationCopy1DRange(rsc, (Allocation*)dstAlloc.p, dstOff, dstMip, count,
1811aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             (Allocation*)srcAlloc.p, srcOff, srcMip);
1821aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
1831aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1841aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_AllocationCopy2DRange(::rs_allocation dstAlloc,
1851aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstXoff, uint32_t dstYoff,
1861aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstMip, uint32_t dstFace,
1871aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t width, uint32_t height,
1881aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     ::rs_allocation srcAlloc,
1891aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcXoff, uint32_t srcYoff,
1901aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcMip, uint32_t srcFace) {
1911aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1921aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrAllocationCopy2DRange(rsc, (Allocation*)dstAlloc.p,
1931aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             dstXoff, dstYoff, dstMip, dstFace,
1941aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             width, height,
1951aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             (Allocation*)srcAlloc.p,
1961aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             srcXoff, srcYoff, srcMip, srcFace);
1971aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
1981aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
199dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_AllocationIoSend(::rs_allocation alloc) {
200709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
201dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    rsrAllocationIoSend(rsc, (Allocation *) alloc.p);
202b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
203b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
204b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
205dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_AllocationIoReceive(::rs_allocation alloc) {
206709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
207dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    rsrAllocationIoReceive(rsc, (Allocation *) alloc.p);
208b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
209b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
2101aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif
2111aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
2127a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines#ifndef RS_COMPATIBILITY_LIB
21374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
21487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
21587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context
21687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
21787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
21887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) {
219709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
220709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindTexture(rsc, pf, slot, a);
22187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
22287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
223a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindVertexConstant(ProgramVertex *pv, uint32_t slot, Allocation *a) {
224709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
225709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pv, slot, a);
226a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
227a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
228a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindFragmentConstant(ProgramFragment *pf, uint32_t slot, Allocation *a) {
229709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
230709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pf, slot, a);
231a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
232a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
23387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) {
234709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
235709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindSampler(rsc, pf, slot, s);
23687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
23787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
23887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) {
239709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
240709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramStore(rsc, ps);
24187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
24287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
24387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) {
244709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
245709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramFragment(rsc, pf);
24687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
24787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
24887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) {
249709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
250709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramVertex(rsc, pv);
25187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
25287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
25387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) {
254709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
255709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramRaster(rsc, pr);
25687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
25787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
25887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) {
259709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
260709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectColorTarget(rsc, a, slot);
26187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
26287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
26387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) {
264709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
265709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectDepthTarget(rsc, a);
26687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
26787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
26887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) {
269709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
270709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectColorTarget(rsc, slot);
27187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
27287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
27387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) {
274709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
275709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectDepthTarget(rsc);
27687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
27787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
27887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) {
279709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
280709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectTargets(rsc);
28187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
28287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
28387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
28487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
28587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP
28687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
28787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
28887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) {
289709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
290709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadProjectionMatrix(rsc, m);
29187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
29287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
29387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) {
294709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
295709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadModelMatrix(rsc, m);
29687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
29787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
29887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) {
299709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
300709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadTextureMatrix(rsc, m);
30187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
30287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
30387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) {
304709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
305709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPfConstantColor(rsc, pf, r, g, b, a);
30687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
30787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
30887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) {
309709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
310709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpGetProjectionMatrix(rsc, m);
31187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
31287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
31387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
31487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
31587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing
31687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
31787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
31887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
31987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x2, float y2, float z2, float u2, float v2,
32087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x3, float y3, float z3, float u3, float v3,
32187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x4, float y4, float z4, float u4, float v4) {
322709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
323414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
324414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!rsc->setupCheck()) {
325414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
326414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
327414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
328414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdHal *dc = (RsdHal *)rsc->mHal.drv;
329414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!dc->gl.shaderCache->setup(rsc)) {
330414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
331414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
332414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
333414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("Quad");
334414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x1, y1, z1);
335414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x2, y2, z2);
336414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x3, y3, z3);
337414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x4, y4, z4);
338414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
339414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    float vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4};
340414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    const float tex[] = {u1,v1, u2,v2, u3,v3, u4,v4};
341414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
342414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray::Attrib attribs[2];
343e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray    attribs[0].set(GL_FLOAT, 3, 12, false, (size_t)vtx, "ATTRIB_position");
344e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray    attribs[1].set(GL_FLOAT, 2, 8, false, (size_t)tex, "ATTRIB_texture0");
345414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
346414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray va(attribs, 2);
347414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    va.setup(rsc);
348414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
349414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RSD_CALL_GL(glDrawArrays, GL_TRIANGLE_FAN, 0, 4);
35087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
35187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
35287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1,
35387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x2, float y2, float z2,
35487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x3, float y3, float z3,
35587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x4, float y4, float z4) {
356414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuadTexCoords(x1, y1, z1, 0, 1,
357414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x2, y2, z2, 1, 1,
358414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x3, y3, z3, 1, 0,
359414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x4, y4, z4, 0, 0);
36087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
36187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) {
363709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
364414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
365414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    ObjectBaseRef<const ProgramVertex> tmp(rsc->getProgramVertex());
366414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    rsc->setProgramVertex(rsc->getDefaultProgramVertex());
367414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //rsc->setupCheck();
368414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
369414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //GLint crop[4] = {0, h, w, -h};
370414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
371414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    float sh = rsc->getHeight();
372414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
373414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuad(x,   sh - y,     z,
374414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x+w, sh - y,     z,
375414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x+w, sh - (y+h), z,
376414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x,   sh - (y+h), z);
377414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    rsc->setProgramVertex((ProgramVertex *)tmp.get());
37887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
37987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawRect(float x1, float y1, float x2, float y2, float z) {
381414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuad(x1, y2, z, x2, y2, z, x2, y1, z, x1, y1, z);
38287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
38387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3849e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsstatic void SC_DrawPath(Path *p) {
385709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
3869e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    rsdPathDraw(rsc, p);
3879e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams}
3889e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
38987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMesh(Mesh *m) {
390709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
391709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMesh(rsc, m);
39287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
39387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) {
395709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
396709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitive(rsc, m, primIndex);
39787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
39887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) {
400709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
401709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitiveRange(rsc, m, primIndex, start, len);
40287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
40387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
40487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m,
40587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *minX, float *minY, float *minZ,
40687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *maxX, float *maxY, float *maxZ) {
407709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
408709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeshComputeBoundingBox(rsc, m, minX, minY, minZ, maxX, maxY, maxZ);
40987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
41087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
41487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
41587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
41687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
41887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Color(float r, float g, float b, float a) {
419709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
420709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrColor(rsc, r, g, b, a);
42187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
42287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
42387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Finish() {
424709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
425653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLFinish(rsc);
42687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
42787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
42887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) {
429709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
430709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
431653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearColor(rsc, r, g, b, a);
43287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
43387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
43487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearDepth(float v) {
435709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
436709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
437653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearDepth(rsc, v);
43887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
43987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
44087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetWidth() {
441709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
442709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetWidth(rsc);
44387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
44487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
44587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetHeight() {
446709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
447709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetHeight(rsc);
44887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
44987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
45087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) {
451709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
452709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawTextAlloc(rsc, a, x, y);
45387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
45487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
45587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawText(const char *text, int x, int y) {
456709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
457709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawText(rsc, text, x, y);
45887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
45987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
46087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a,
46187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                         int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
462709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
463709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureTextAlloc(rsc, a, left, right, top, bottom);
46487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
46587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
46687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureText(const char *text,
46787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                    int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
468709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
469709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureText(rsc, text, left, right, top, bottom);
47087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
47187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFont(Font *f) {
473709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
474709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFont(rsc, f);
47587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
47687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) {
478709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
479709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrFontColor(rsc, r, g, b, a);
48087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
481110f181b7966212a36ef18016f9b81c7322d0a2fJason Sams#endif
48287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
48387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
48487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
48587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
48687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
48787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
4881aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ClearObject(rs_object_base *dst) {
4891aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
4901aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrClearObject(rsc, dst);
4911aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
492dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
4931aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetObject(rs_object_base *dst, rs_object_base  src) {
494a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    //    ALOGE("SC_SetObject: dst = %p, src = %p", dst, src.p);
495a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    //    ALOGE("SC_SetObject: dst[0] = %p", dst[0]);
496a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
4971aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrSetObject(rsc, dst, (ObjectBase*)src.p);
49887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
49987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5001aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic bool SC_IsObject(rs_object_base o) {
501709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5021aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return rsrIsObject(rsc, o);
5031aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
504444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
505127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#ifdef __LP64__
506127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic void SC_SetObject_ByRef(rs_object_base *dst, rs_object_base *src) {
507127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    //    ALOGE("SC_SetObject2: dst = %p, src = %p", dst, src->p);
508127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    Context *rsc = RsdCpuReference::getTlsContext();
509127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    rsrSetObject(rsc, dst, (ObjectBase*)src->p);
510127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
511127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
512127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic bool SC_IsObject_ByRef(rs_object_base *o) {
513127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    Context *rsc = RsdCpuReference::getTlsContext();
514127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    return rsrIsObject(rsc, *o);
515127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
516127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#endif
517127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
518240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray
51947211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#ifndef RS_COMPATIBILITY_LIB
52047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#ifndef __LP64__
521240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray
522240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray// i386 has different struct return passing to ARM; emulate with void*
523240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray#ifdef __i386__
524240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murraystatic const void* SC_GetAllocation(const void *ptr) {
525240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
526240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    const Script *sc = RsdCpuReference::getTlsScript();
527240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    Allocation* alloc = rsdScriptGetAllocationForPointer(rsc, sc, ptr);
528240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    android::renderscript::rs_allocation obj = {0};
529240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    alloc->callUpdateCacheObject(rsc, &obj);
530240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    return (void*)obj.p;
531240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray}
532240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray#else
533240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray// ARMv7/MIPS
53447211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murraystatic const android::renderscript::rs_allocation SC_GetAllocation(const void *ptr) {
535709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
536709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
53747211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Allocation* alloc = rsdScriptGetAllocationForPointer(rsc, sc, ptr);
53847211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    android::renderscript::rs_allocation obj = {0};
53947211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    alloc->callUpdateCacheObject(rsc, &obj);
54047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    return obj;
54147211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray}
542240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray#endif
54347211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#else
544240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray// AArch64/x86_64/MIPS64
54547211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murraystatic const android::renderscript::rs_allocation SC_GetAllocation(const void *ptr) {
54647211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
54747211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    const Script *sc = RsdCpuReference::getTlsScript();
54847211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Allocation* alloc = rsdScriptGetAllocationForPointer(rsc, sc, ptr);
54947211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    android::renderscript::rs_allocation obj = {0, 0, 0, 0};
55047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    alloc->callUpdateCacheObject(rsc, &obj);
55147211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    return obj;
55287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
55347211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#endif
55447211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#endif
55587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
556dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
557444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
558dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_ForEach_SAA(::rs_script target,
559dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                           ::rs_allocation in,
560dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                           ::rs_allocation out);
561444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
562444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chenstatic void SC_ForEach_SAA(android::renderscript::rs_script *target,
563444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                            android::renderscript::rs_allocation *in,
564444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                            android::renderscript::rs_allocation *out) {
565444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
566444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    rsrForEach(rsc, (Script*)target->p, (Allocation*)in->p, (Allocation*)out->p, NULL, 0, NULL);
567444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
568444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
569c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
570444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
571dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_ForEach_SAAU(::rs_script target,
572dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                            ::rs_allocation in,
573dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                            ::rs_allocation out,
574c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                            const void *usr) {
575709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
57644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p,
57744bef6fba6244292b751387f3d6c31cca96c28adChris Wailes               usr, 0, nullptr);
57887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
579444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
580dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_ForEach_SAAU(::rs_script *target,
581dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                            ::rs_allocation *in,
582dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                            ::rs_allocation *out,
583444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                            const void *usr) {
584444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
585444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    rsrForEach(rsc, (Script*)target->p, (Allocation*)in->p, (Allocation*)out->p, usr, 0, NULL);
586444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
587444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
58887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
589444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
590dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_ForEach_SAAUS(::rs_script target,
591dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                             ::rs_allocation in,
592dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                             ::rs_allocation out,
593c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             const void *usr,
594dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                             const RsScriptCall *call);
595444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
596444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chenstatic void SC_ForEach_SAAUS(android::renderscript::rs_script *target,
597444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             android::renderscript::rs_allocation *in,
598444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             android::renderscript::rs_allocation *out,
599444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             const void *usr,
600444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen                             const RsScriptCall *call) {
601444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    Context *rsc = RsdCpuReference::getTlsContext();
602444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    rsrForEach(rsc, (Script*)target->p, (Allocation*)in->p, (Allocation*)out->p, usr, 0, call);
603444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen}
604444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
60587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
6062f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray// These functions are only supported in 32-bit.
607444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
608dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_ForEach_SAAUL(::rs_script target,
609dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                             ::rs_allocation in,
610dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                             ::rs_allocation out,
611c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                             const void *usr,
612dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                             uint32_t usrLen);
613dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
614dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_ForEach_SAAULS(::rs_script target,
615dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                              ::rs_allocation in,
616dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                              ::rs_allocation out,
617c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              const void *usr,
618c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams                              uint32_t usrLen,
619dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                              const RsScriptCall *call);
6201aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif
62187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
62287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
62387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
62487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines
62587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
62687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
62787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic float SC_GetDt() {
628709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
629709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
63087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    return rsrGetDt(rsc, sc);
63187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
63287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
633dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar// #if !defined(RS_COMPATIBILITY_LIB) && defined(__LP64__)
634dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef __LP64__
63587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t SC_Time(time_t *timer) {
636709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
637709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrTime(rsc, timer);
63887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
639d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#else
640d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murraystatic int SC_Time(int *timer) {
641d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
642d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return rsrTime(rsc, (long*)timer);
643d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
644d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#endif
64587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
64687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* SC_LocalTime(tm *local, time_t *timer) {
647709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
648709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrLocalTime(rsc, local, timer);
64987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
65087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
65187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeMillis() {
652709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
653709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeMillis(rsc);
65487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
65587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
65687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeNanos() {
657709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
658709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeNanos(rsc);
65987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
66087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
66187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
66287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines
66387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
66487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
665276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesstatic uint32_t SC_ToClient2(int cmdID, const void *data, uint32_t len) {
666709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
667709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClient(rsc, cmdID, data, len);
66887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
66987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
67087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient(int cmdID) {
671709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
67244bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return rsrToClient(rsc, cmdID, (const void *)nullptr, 0);
67387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
67487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
675276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesstatic uint32_t SC_ToClientBlocking2(int cmdID, const void *data, uint32_t len) {
676709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
677709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClientBlocking(rsc, cmdID, data, len);
67887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
67987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
68087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) {
681709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
68244bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return rsrToClientBlocking(rsc, cmdID, (const void *)nullptr, 0);
68387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
68487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
68587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
6865261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt1D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x) {
6875261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
6885261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
6895261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
6905261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
6915261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
6925261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
6935261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
694cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
69544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
6965261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
6975261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
698d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
699d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
700d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
701cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
70244bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
703d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
704d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
705d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
706d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
707cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
70844bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
709d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7105261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7115261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7125261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
7135261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
7145261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x)];
7155261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
7165261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7175261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt2D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y) {
7185261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
7195261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
7205261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
7215261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7225261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
7235261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
7245261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
725cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
72644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7275261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7285261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7295261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
7305261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
731cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
73244bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7335261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7345261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
735d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
736d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
737d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
738cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
73944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
740d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
741d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
742d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
743d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
744cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
74544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
746d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7475261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7485261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7495261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
7505261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
7515261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
7525261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
7535261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
7545261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7555261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt3D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y, uint32_t z) {
7565261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
7575261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
7585261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
7595261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7605261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
7615261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
7625261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
763cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
76444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7655261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7675261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
7685261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
769cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
77044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7725261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7735261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (z >= t->getLODDimZ(0)) {
7745261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Z %i of %i", z, t->getLODDimZ(0));
775cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
77644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7775261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7785261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
779d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
780d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
781d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
782cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
78344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
784d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
785d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
786d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
787d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
788cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
78944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
790d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7915261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7925261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7935261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
7945261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
7955261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
7965261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
7975261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
7985261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7991aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic const void * SC_GetElementAt1D(android::renderscript::rs_allocation a, uint32_t x) {
8001aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return ElementAt1D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x);
801d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
8021aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic const void * SC_GetElementAt2D(android::renderscript::rs_allocation a, uint32_t x, uint32_t y) {
8031aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return ElementAt2D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x, y);
804d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
8051aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic const void * SC_GetElementAt3D(android::renderscript::rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
8061aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return ElementAt3D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x, y, z);
807d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
808d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
8091aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetElementAt1D(android::renderscript::rs_allocation a, const void *ptr, uint32_t x) {
8101aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    const Type *t = ((Allocation*)a.p)->getType();
811d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
8121aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    void *tmp = ElementAt1D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x);
81344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (tmp != nullptr) {
814d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
815d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
816d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
8171aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetElementAt2D(android::renderscript::rs_allocation a, const void *ptr, uint32_t x, uint32_t y) {
8181aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    const Type *t = ((Allocation*)a.p)->getType();
819d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
8201aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    void *tmp = ElementAt2D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x, y);
82144bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (tmp != nullptr) {
822d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
823d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
824d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
8251aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetElementAt3D(android::renderscript::rs_allocation a, const void *ptr, uint32_t x, uint32_t y, uint32_t z) {
8261aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    const Type *t = ((Allocation*)a.p)->getType();
827d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
8281aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    void *tmp = ElementAt3D((Allocation*)a.p, RS_TYPE_UNSIGNED_8, 0, x, y, z);
82944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (tmp != nullptr) {
830d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
831d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
832d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
833d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
834dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic inline
835dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarandroid::renderscript::rs_allocation castToARSAlloc(::rs_allocation a) {
836dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    android::renderscript::rs_allocation cast;
837dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    cast.p = (const Allocation *) a.p;
838dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return cast;
839dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
840dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8412544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarconst void *rsGetElementAt(::rs_allocation a, uint32_t x) {
842dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_GetElementAt1D(castToARSAlloc(a), x);
843dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
844dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8452544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarconst void *rsGetElementAt(::rs_allocation a, uint32_t x, uint32_t y) {
846dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_GetElementAt2D(castToARSAlloc(a), x, y);
847dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
848dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8492544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarconst void *rsGetElementAt(::rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
850dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_GetElementAt3D(castToARSAlloc(a), x, y, z);
851dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
852dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8532544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsSetElementAt(::rs_allocation a, const void *ptr, uint32_t x) {
854dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    SC_SetElementAt1D(castToARSAlloc(a), ptr, x);
855dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
856dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8572544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsSetElementAt(::rs_allocation a, const void *ptr, uint32_t x, uint32_t y) {
858dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    SC_SetElementAt2D(castToARSAlloc(a), ptr, x, y);
859dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
860dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8612544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsSetElementAt(::rs_allocation a, const void *ptr, uint32_t x, uint32_t y, uint32_t z) {
862dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    SC_SetElementAt3D(castToARSAlloc(a), ptr, x, y, z);
863dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
864dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
865dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams#define ELEMENT_AT(T, DT, VS)                                               \
8671aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_SetElementAt1_##T(android::renderscript::rs_allocation a, const T *val, uint32_t x) { \
86844bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        void *r = ElementAt1D((Allocation*)a.p, DT, VS, x);             \
86944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) ((T *)r)[0] = *val;                           \
8705261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
8715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
8721aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_SetElementAt2_##T(android::renderscript::rs_allocation a, const T * val, uint32_t x, uint32_t y) { \
87344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        void *r = ElementAt2D((Allocation*)a.p, DT, VS, x, y);          \
87444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) ((T *)r)[0] = *val;                           \
8755261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
8765261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
8771aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_SetElementAt3_##T(android::renderscript::rs_allocation a, const T * val, uint32_t x, uint32_t y, uint32_t z) { \
87844bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        void *r = ElementAt3D((Allocation*)a.p, DT, VS, x, y, z);       \
87944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) ((T *)r)[0] = *val;                           \
8805261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
8815261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
8821aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_GetElementAt1_##T(android::renderscript::rs_allocation a, T *val, uint32_t x) {                  \
88344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        void *r = ElementAt1D((Allocation*)a.p, DT, VS, x);             \
88444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) *val = ((T *)r)[0];                           \
88544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
8865261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
8871aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_GetElementAt2_##T(android::renderscript::rs_allocation a, T *val, uint32_t x, uint32_t y) {      \
88844bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        void *r = ElementAt2D((Allocation*)a.p, DT, VS, x, y);           \
88944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) *val = ((T *)r)[0];                            \
89044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        else ALOGE("Error from %s", __PRETTY_FUNCTION__);                \
89144bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    }                                                                    \
8921aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    static void SC_GetElementAt3_##T(android::renderscript::rs_allocation a, T *val, uint32_t x, uint32_t y, uint32_t z) { \
89344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        void *r = ElementAt3D((Allocation*)a.p, DT, VS, x, y, z);        \
89444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) *val = ((T *)r)[0];                            \
89544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        else ALOGE("Error from %s", __PRETTY_FUNCTION__);                \
896dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } \
897dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const T *val, uint32_t x) { \
898dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        SC_SetElementAt1_##T(castToARSAlloc(a), val, x); \
899dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } \
9002544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const T *val, uint32_t x, uint32_t y) { \
901dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        SC_SetElementAt2_##T(castToARSAlloc(a), val, x, y); \
902dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } \
903dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const T *val, uint32_t x, uint32_t y, uint32_t z) { \
904dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        SC_SetElementAt3_##T(castToARSAlloc(a), val, x, y, z); \
905dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } \
9062544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, T *val, uint32_t x) { \
9072544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar        SC_GetElementAt1_##T(castToARSAlloc(a), val, x); \
9082544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    } \
9092544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, T *val, uint32_t x, uint32_t y) { \
9102544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar        SC_GetElementAt2_##T(castToARSAlloc(a), val, x, y); \
9112544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    } \
9122544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, T *val, uint32_t x, uint32_t y, uint32_t z) { \
9132544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar        SC_GetElementAt3_##T(castToARSAlloc(a), val, x, y, z); \
9142544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    } \
9155261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9165261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char, RS_TYPE_SIGNED_8, 1)
9175261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char2, RS_TYPE_SIGNED_8, 2)
9185261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char3, RS_TYPE_SIGNED_8, 3)
9195261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char4, RS_TYPE_SIGNED_8, 4)
9205261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar, RS_TYPE_UNSIGNED_8, 1)
9215261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar2, RS_TYPE_UNSIGNED_8, 2)
9225261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar3, RS_TYPE_UNSIGNED_8, 3)
9235261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar4, RS_TYPE_UNSIGNED_8, 4)
9245261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short, RS_TYPE_SIGNED_16, 1)
9255261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short2, RS_TYPE_SIGNED_16, 2)
9265261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short3, RS_TYPE_SIGNED_16, 3)
9275261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short4, RS_TYPE_SIGNED_16, 4)
9285261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort, RS_TYPE_UNSIGNED_16, 1)
9295261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort2, RS_TYPE_UNSIGNED_16, 2)
9305261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort3, RS_TYPE_UNSIGNED_16, 3)
9315261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort4, RS_TYPE_UNSIGNED_16, 4)
9325261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int, RS_TYPE_SIGNED_32, 1)
9335261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int2, RS_TYPE_SIGNED_32, 2)
9345261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int3, RS_TYPE_SIGNED_32, 3)
9355261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int4, RS_TYPE_SIGNED_32, 4)
9365261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint, RS_TYPE_UNSIGNED_32, 1)
9375261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint2, RS_TYPE_UNSIGNED_32, 2)
9385261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint3, RS_TYPE_UNSIGNED_32, 3)
9395261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint4, RS_TYPE_UNSIGNED_32, 4)
9405261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long, RS_TYPE_SIGNED_64, 1)
9415261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long2, RS_TYPE_SIGNED_64, 2)
9425261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long3, RS_TYPE_SIGNED_64, 3)
9435261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long4, RS_TYPE_SIGNED_64, 4)
9445261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong, RS_TYPE_UNSIGNED_64, 1)
9455261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong2, RS_TYPE_UNSIGNED_64, 2)
9465261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong3, RS_TYPE_UNSIGNED_64, 3)
9475261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong4, RS_TYPE_UNSIGNED_64, 4)
9485261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float, RS_TYPE_FLOAT_32, 1)
9495261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float2, RS_TYPE_FLOAT_32, 2)
9505261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float3, RS_TYPE_FLOAT_32, 3)
9515261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float4, RS_TYPE_FLOAT_32, 4)
9525261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double, RS_TYPE_FLOAT_64, 1)
9535261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double2, RS_TYPE_FLOAT_64, 2)
9545261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double3, RS_TYPE_FLOAT_64, 3)
9555261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double4, RS_TYPE_FLOAT_64, 4)
9565261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9575261a5ea546ff358edd5aac7602fc4132434f481Jason Sams#undef ELEMENT_AT
95887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
95987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
96087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Stub implementation
96187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
96287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
96387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// llvm name mangling ref
96487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//  <builtin-type> ::= v  # void
96587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= b  # bool
96687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= c  # char
96787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= a  # signed char
96887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= h  # unsigned char
96987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= s  # short
97087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= t  # unsigned short
97187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= i  # int
97287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= j  # unsigned int
97387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= l  # long
97487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= m  # unsigned long
97587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= x  # long long, __int64
97687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= y  # unsigned long long, __int64
97787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= f  # float
97887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= d  # double
97987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
980709a0978ae141198018ca9769f8d96292a8928e6Jason Samsstatic RsdCpuReference::CpuSymbol gSyms[] = {
9815261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    // Debug runtime
982d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationj", (void *)&SC_GetElementAt1D, true },
983d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationjj", (void *)&SC_GetElementAt2D, true },
984d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationjjj", (void *)&SC_GetElementAt3D, true },
985d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvj", (void *)&SC_SetElementAt1D, true },
986d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvjj", (void *)&SC_SetElementAt2D, true },
987d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvjjj", (void *)&SC_SetElementAt3D, true },
988d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
989d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
990d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhj", (void *)&SC_GetElementAt1_uchar, true },
991d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hj", (void *)&SC_GetElementAt1_uchar2, true },
992d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hj", (void *)&SC_GetElementAt1_uchar3, true },
993d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hj", (void *)&SC_GetElementAt1_uchar4, true },
994d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhjj", (void *)&SC_GetElementAt2_uchar, true },
995d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hjj", (void *)&SC_GetElementAt2_uchar2, true },
996d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hjj", (void *)&SC_GetElementAt2_uchar3, true },
997d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hjj", (void *)&SC_GetElementAt2_uchar4, true },
998d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhjjj", (void *)&SC_GetElementAt3_uchar, true },
999d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hjjj", (void *)&SC_GetElementAt3_uchar2, true },
1000d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hjjj", (void *)&SC_GetElementAt3_uchar3, true },
1001d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hjjj", (void *)&SC_GetElementAt3_uchar4, true },
1002d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1003d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcj", (void *)&SC_GetElementAt1_char, true },
1004d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cj", (void *)&SC_GetElementAt1_char2, true },
1005d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cj", (void *)&SC_GetElementAt1_char3, true },
1006d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cj", (void *)&SC_GetElementAt1_char4, true },
1007d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcjj", (void *)&SC_GetElementAt2_char, true },
1008d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cjj", (void *)&SC_GetElementAt2_char2, true },
1009d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cjj", (void *)&SC_GetElementAt2_char3, true },
1010d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cjj", (void *)&SC_GetElementAt2_char4, true },
1011d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcjjj", (void *)&SC_GetElementAt3_char, true },
1012d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cjjj", (void *)&SC_GetElementAt3_char2, true },
1013d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cjjj", (void *)&SC_GetElementAt3_char3, true },
1014d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cjjj", (void *)&SC_GetElementAt3_char4, true },
1015d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1016d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtj", (void *)&SC_GetElementAt1_ushort, true },
1017d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tj", (void *)&SC_GetElementAt1_ushort2, true },
1018d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tj", (void *)&SC_GetElementAt1_ushort3, true },
1019d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tj", (void *)&SC_GetElementAt1_ushort4, true },
1020d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtjj", (void *)&SC_GetElementAt2_ushort, true },
1021d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tjj", (void *)&SC_GetElementAt2_ushort2, true },
1022d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tjj", (void *)&SC_GetElementAt2_ushort3, true },
1023d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tjj", (void *)&SC_GetElementAt2_ushort4, true },
1024d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtjjj", (void *)&SC_GetElementAt3_ushort, true },
1025d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tjjj", (void *)&SC_GetElementAt3_ushort2, true },
1026d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tjjj", (void *)&SC_GetElementAt3_ushort3, true },
1027d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tjjj", (void *)&SC_GetElementAt3_ushort4, true },
1028d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1029d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsj", (void *)&SC_GetElementAt1_short, true },
1030d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sj", (void *)&SC_GetElementAt1_short2, true },
1031d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sj", (void *)&SC_GetElementAt1_short3, true },
1032d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sj", (void *)&SC_GetElementAt1_short4, true },
1033d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsjj", (void *)&SC_GetElementAt2_short, true },
1034d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sjj", (void *)&SC_GetElementAt2_short2, true },
1035d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sjj", (void *)&SC_GetElementAt2_short3, true },
1036d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sjj", (void *)&SC_GetElementAt2_short4, true },
1037d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsjjj", (void *)&SC_GetElementAt3_short, true },
1038d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sjjj", (void *)&SC_GetElementAt3_short2, true },
1039d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sjjj", (void *)&SC_GetElementAt3_short3, true },
1040d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sjjj", (void *)&SC_GetElementAt3_short4, true },
1041d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1042d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjj", (void *)&SC_GetElementAt1_uint, true },
1043d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jj", (void *)&SC_GetElementAt1_uint2, true },
1044d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jj", (void *)&SC_GetElementAt1_uint3, true },
1045d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jj", (void *)&SC_GetElementAt1_uint4, true },
1046d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjjj", (void *)&SC_GetElementAt2_uint, true },
1047d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jjj", (void *)&SC_GetElementAt2_uint2, true },
1048d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jjj", (void *)&SC_GetElementAt2_uint3, true },
1049d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jjj", (void *)&SC_GetElementAt2_uint4, true },
1050d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjjjj", (void *)&SC_GetElementAt3_uint, true },
1051d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jjjj", (void *)&SC_GetElementAt3_uint2, true },
1052d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jjjj", (void *)&SC_GetElementAt3_uint3, true },
1053d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jjjj", (void *)&SC_GetElementAt3_uint4, true },
1054d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1055d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPij", (void *)&SC_GetElementAt1_int, true },
1056d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ij", (void *)&SC_GetElementAt1_int2, true },
1057d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ij", (void *)&SC_GetElementAt1_int3, true },
1058d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ij", (void *)&SC_GetElementAt1_int4, true },
1059d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPijj", (void *)&SC_GetElementAt2_int, true },
1060d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ijj", (void *)&SC_GetElementAt2_int2, true },
1061d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ijj", (void *)&SC_GetElementAt2_int3, true },
1062d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ijj", (void *)&SC_GetElementAt2_int4, true },
1063d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPijjj", (void *)&SC_GetElementAt3_int, true },
1064d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ijjj", (void *)&SC_GetElementAt3_int2, true },
1065d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ijjj", (void *)&SC_GetElementAt3_int3, true },
1066d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ijjj", (void *)&SC_GetElementAt3_int4, true },
1067d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1068d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmj", (void *)&SC_GetElementAt1_ulong, true },
1069d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mj", (void *)&SC_GetElementAt1_ulong2, true },
1070d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mj", (void *)&SC_GetElementAt1_ulong3, true },
1071d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mj", (void *)&SC_GetElementAt1_ulong4, true },
1072d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmjj", (void *)&SC_GetElementAt2_ulong, true },
1073d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mjj", (void *)&SC_GetElementAt2_ulong2, true },
1074d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mjj", (void *)&SC_GetElementAt2_ulong3, true },
1075d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mjj", (void *)&SC_GetElementAt2_ulong4, true },
1076d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmjjj", (void *)&SC_GetElementAt3_ulong, true },
1077d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mjjj", (void *)&SC_GetElementAt3_ulong2, true },
1078d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mjjj", (void *)&SC_GetElementAt3_ulong3, true },
1079d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mjjj", (void *)&SC_GetElementAt3_ulong4, true },
1080d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1081d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPlj", (void *)&SC_GetElementAt1_long, true },
1082d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_lj", (void *)&SC_GetElementAt1_long2, true },
1083d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_lj", (void *)&SC_GetElementAt1_long3, true },
1084d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_lj", (void *)&SC_GetElementAt1_long4, true },
1085d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPljj", (void *)&SC_GetElementAt2_long, true },
1086d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_ljj", (void *)&SC_GetElementAt2_long2, true },
1087d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_ljj", (void *)&SC_GetElementAt2_long3, true },
1088d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_ljj", (void *)&SC_GetElementAt2_long4, true },
1089d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPljjj", (void *)&SC_GetElementAt3_long, true },
1090d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_ljjj", (void *)&SC_GetElementAt3_long2, true },
1091d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_ljjj", (void *)&SC_GetElementAt3_long3, true },
1092d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_ljjj", (void *)&SC_GetElementAt3_long4, true },
1093d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1094d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfj", (void *)&SC_GetElementAt1_float, true },
1095d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fj", (void *)&SC_GetElementAt1_float2, true },
1096d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fj", (void *)&SC_GetElementAt1_float3, true },
1097d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fj", (void *)&SC_GetElementAt1_float4, true },
1098d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfjj", (void *)&SC_GetElementAt2_float, true },
1099d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fjj", (void *)&SC_GetElementAt2_float2, true },
1100d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fjj", (void *)&SC_GetElementAt2_float3, true },
1101d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fjj", (void *)&SC_GetElementAt2_float4, true },
1102d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfjjj", (void *)&SC_GetElementAt3_float, true },
1103d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fjjj", (void *)&SC_GetElementAt3_float2, true },
1104d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fjjj", (void *)&SC_GetElementAt3_float3, true },
1105d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fjjj", (void *)&SC_GetElementAt3_float4, true },
1106d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1107d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdj", (void *)&SC_GetElementAt1_double, true },
1108d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_dj", (void *)&SC_GetElementAt1_double2, true },
1109d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_dj", (void *)&SC_GetElementAt1_double3, true },
1110d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_dj", (void *)&SC_GetElementAt1_double4, true },
1111d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdjj", (void *)&SC_GetElementAt2_double, true },
1112d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_djj", (void *)&SC_GetElementAt2_double2, true },
1113d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_djj", (void *)&SC_GetElementAt2_double3, true },
1114d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_djj", (void *)&SC_GetElementAt2_double4, true },
1115d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdjjj", (void *)&SC_GetElementAt3_double, true },
1116d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_djjj", (void *)&SC_GetElementAt3_double2, true },
1117d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_djjj", (void *)&SC_GetElementAt3_double3, true },
1118d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_djjj", (void *)&SC_GetElementAt3_double4, true },
1119d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1120d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1121d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1122d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhj", (void *)&SC_SetElementAt1_uchar, true },
1123d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hj", (void *)&SC_SetElementAt1_uchar2, true },
1124d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hj", (void *)&SC_SetElementAt1_uchar3, true },
1125d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hj", (void *)&SC_SetElementAt1_uchar4, true },
1126d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhjj", (void *)&SC_SetElementAt2_uchar, true },
1127d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hjj", (void *)&SC_SetElementAt2_uchar2, true },
1128d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hjj", (void *)&SC_SetElementAt2_uchar3, true },
1129d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hjj", (void *)&SC_SetElementAt2_uchar4, true },
1130d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhjjj", (void *)&SC_SetElementAt3_uchar, true },
1131d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hjjj", (void *)&SC_SetElementAt3_uchar2, true },
1132d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hjjj", (void *)&SC_SetElementAt3_uchar3, true },
1133d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hjjj", (void *)&SC_SetElementAt3_uchar4, true },
1134d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1135d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcj", (void *)&SC_SetElementAt1_char, true },
1136d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cj", (void *)&SC_SetElementAt1_char2, true },
1137d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cj", (void *)&SC_SetElementAt1_char3, true },
1138d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cj", (void *)&SC_SetElementAt1_char4, true },
1139d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcjj", (void *)&SC_SetElementAt2_char, true },
1140d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cjj", (void *)&SC_SetElementAt2_char2, true },
1141d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cjj", (void *)&SC_SetElementAt2_char3, true },
1142d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cjj", (void *)&SC_SetElementAt2_char4, true },
1143d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcjjj", (void *)&SC_SetElementAt3_char, true },
1144d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cjjj", (void *)&SC_SetElementAt3_char2, true },
1145d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cjjj", (void *)&SC_SetElementAt3_char3, true },
1146d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cjjj", (void *)&SC_SetElementAt3_char4, true },
1147d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
114840db7a2a344bf56c82c62f481a57f9ff59f93c91Stephen Hines    { "_Z21rsSetElementAt_ushort13rs_allocationPKtj", (void *)&SC_SetElementAt1_ushort, true },
1149d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tj", (void *)&SC_SetElementAt1_ushort2, true },
1150d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tj", (void *)&SC_SetElementAt1_ushort3, true },
1151d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tj", (void *)&SC_SetElementAt1_ushort4, true },
1152d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationPKtjj", (void *)&SC_SetElementAt2_ushort, true },
1153d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tjj", (void *)&SC_SetElementAt2_ushort2, true },
1154d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tjj", (void *)&SC_SetElementAt2_ushort3, true },
1155d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tjj", (void *)&SC_SetElementAt2_ushort4, true },
1156d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationPKtjjj", (void *)&SC_SetElementAt3_ushort, true },
1157d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tjjj", (void *)&SC_SetElementAt3_ushort2, true },
1158d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tjjj", (void *)&SC_SetElementAt3_ushort3, true },
1159d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tjjj", (void *)&SC_SetElementAt3_ushort4, true },
1160d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1161d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsj", (void *)&SC_SetElementAt1_short, true },
1162d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sj", (void *)&SC_SetElementAt1_short2, true },
1163d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sj", (void *)&SC_SetElementAt1_short3, true },
1164d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sj", (void *)&SC_SetElementAt1_short4, true },
1165d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsjj", (void *)&SC_SetElementAt2_short, true },
1166d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sjj", (void *)&SC_SetElementAt2_short2, true },
1167d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sjj", (void *)&SC_SetElementAt2_short3, true },
1168d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sjj", (void *)&SC_SetElementAt2_short4, true },
1169d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsjjj", (void *)&SC_SetElementAt3_short, true },
1170d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sjjj", (void *)&SC_SetElementAt3_short2, true },
1171d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sjjj", (void *)&SC_SetElementAt3_short3, true },
1172d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sjjj", (void *)&SC_SetElementAt3_short4, true },
1173d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1174d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjj", (void *)&SC_SetElementAt1_uint, true },
1175d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jj", (void *)&SC_SetElementAt1_uint2, true },
1176d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jj", (void *)&SC_SetElementAt1_uint3, true },
1177d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jj", (void *)&SC_SetElementAt1_uint4, true },
1178d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjjj", (void *)&SC_SetElementAt2_uint, true },
1179d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jjj", (void *)&SC_SetElementAt2_uint2, true },
1180d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jjj", (void *)&SC_SetElementAt2_uint3, true },
1181d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jjj", (void *)&SC_SetElementAt2_uint4, true },
1182d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjjjj", (void *)&SC_SetElementAt3_uint, true },
1183d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jjjj", (void *)&SC_SetElementAt3_uint2, true },
1184d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jjjj", (void *)&SC_SetElementAt3_uint3, true },
1185d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jjjj", (void *)&SC_SetElementAt3_uint4, true },
1186d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1187cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines    { "_Z18rsSetElementAt_int13rs_allocationPKij", (void *)&SC_SetElementAt1_int, true },
1188d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ij", (void *)&SC_SetElementAt1_int2, true },
1189d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ij", (void *)&SC_SetElementAt1_int3, true },
1190d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ij", (void *)&SC_SetElementAt1_int4, true },
1191d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsSetElementAt_int13rs_allocationPKijj", (void *)&SC_SetElementAt2_int, true },
1192d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ijj", (void *)&SC_SetElementAt2_int2, true },
1193d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ijj", (void *)&SC_SetElementAt2_int3, true },
1194d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ijj", (void *)&SC_SetElementAt2_int4, true },
1195d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsSetElementAt_int13rs_allocationPKijjj", (void *)&SC_SetElementAt3_int, true },
1196d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ijjj", (void *)&SC_SetElementAt3_int2, true },
1197d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ijjj", (void *)&SC_SetElementAt3_int3, true },
1198d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ijjj", (void *)&SC_SetElementAt3_int4, true },
1199d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1200cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKmj", (void *)&SC_SetElementAt1_ulong, true },
1201d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mj", (void *)&SC_SetElementAt1_ulong2, true },
1202d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mj", (void *)&SC_SetElementAt1_ulong3, true },
1203d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mj", (void *)&SC_SetElementAt1_ulong4, true },
1204d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationPKmjj", (void *)&SC_SetElementAt2_ulong, true },
1205d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mjj", (void *)&SC_SetElementAt2_ulong2, true },
1206d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mjj", (void *)&SC_SetElementAt2_ulong3, true },
1207d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mjj", (void *)&SC_SetElementAt2_ulong4, true },
1208d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationPKmjjj", (void *)&SC_SetElementAt3_ulong, true },
1209d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mjjj", (void *)&SC_SetElementAt3_ulong2, true },
1210d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mjjj", (void *)&SC_SetElementAt3_ulong3, true },
1211d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mjjj", (void *)&SC_SetElementAt3_ulong4, true },
1212d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1213cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    // Pre-21 compatibility path
1214cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKyj", (void *)&SC_SetElementAt1_ulong, true },
1215cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_yj", (void *)&SC_SetElementAt1_ulong2, true },
1216cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_yj", (void *)&SC_SetElementAt1_ulong3, true },
1217cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_yj", (void *)&SC_SetElementAt1_ulong4, true },
1218cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKyjj", (void *)&SC_SetElementAt2_ulong, true },
1219cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_yjj", (void *)&SC_SetElementAt2_ulong2, true },
1220cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_yjj", (void *)&SC_SetElementAt2_ulong3, true },
1221cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_yjj", (void *)&SC_SetElementAt2_ulong4, true },
1222cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKyjjj", (void *)&SC_SetElementAt3_ulong, true },
1223cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_yjjj", (void *)&SC_SetElementAt3_ulong2, true },
1224cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_yjjj", (void *)&SC_SetElementAt3_ulong3, true },
1225cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_yjjj", (void *)&SC_SetElementAt3_ulong4, true },
1226cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray
1227d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKlj", (void *)&SC_SetElementAt1_long, true },
1228d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_lj", (void *)&SC_SetElementAt1_long2, true },
1229d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_lj", (void *)&SC_SetElementAt1_long3, true },
1230d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_lj", (void *)&SC_SetElementAt1_long4, true },
1231d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKljj", (void *)&SC_SetElementAt2_long, true },
1232d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_ljj", (void *)&SC_SetElementAt2_long2, true },
1233d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_ljj", (void *)&SC_SetElementAt2_long3, true },
1234d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_ljj", (void *)&SC_SetElementAt2_long4, true },
1235d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKljjj", (void *)&SC_SetElementAt3_long, true },
1236d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_ljjj", (void *)&SC_SetElementAt3_long2, true },
1237d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_ljjj", (void *)&SC_SetElementAt3_long3, true },
1238d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_ljjj", (void *)&SC_SetElementAt3_long4, true },
1239d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1240cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    // Pre-21 compatibility path
1241cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z19rsSetElementAt_long13rs_allocationPKxj", (void *)&SC_SetElementAt1_long, true },
1242cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_xj", (void *)&SC_SetElementAt1_long2, true },
1243cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_xj", (void *)&SC_SetElementAt1_long3, true },
1244cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_xj", (void *)&SC_SetElementAt1_long4, true },
1245cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z19rsSetElementAt_long13rs_allocationPKxjj", (void *)&SC_SetElementAt2_long, true },
1246cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_xjj", (void *)&SC_SetElementAt2_long2, true },
1247cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_xjj", (void *)&SC_SetElementAt2_long3, true },
1248cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_xjj", (void *)&SC_SetElementAt2_long4, true },
1249cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z19rsSetElementAt_long13rs_allocationPKxjjj", (void *)&SC_SetElementAt3_long, true },
1250cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_xjjj", (void *)&SC_SetElementAt3_long2, true },
1251cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_xjjj", (void *)&SC_SetElementAt3_long3, true },
1252cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_xjjj", (void *)&SC_SetElementAt3_long4, true },
1253cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray
125440db7a2a344bf56c82c62f481a57f9ff59f93c91Stephen Hines    { "_Z20rsSetElementAt_float13rs_allocationPKfj", (void *)&SC_SetElementAt1_float, true },
1255d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fj", (void *)&SC_SetElementAt1_float2, true },
1256d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fj", (void *)&SC_SetElementAt1_float3, true },
1257d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fj", (void *)&SC_SetElementAt1_float4, true },
1258d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_float13rs_allocationPKfjj", (void *)&SC_SetElementAt2_float, true },
1259d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fjj", (void *)&SC_SetElementAt2_float2, true },
1260d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fjj", (void *)&SC_SetElementAt2_float3, true },
1261d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fjj", (void *)&SC_SetElementAt2_float4, true },
1262d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_float13rs_allocationPKfjjj", (void *)&SC_SetElementAt3_float, true },
1263d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fjjj", (void *)&SC_SetElementAt3_float2, true },
1264d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fjjj", (void *)&SC_SetElementAt3_float3, true },
1265d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fjjj", (void *)&SC_SetElementAt3_float4, true },
1266d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
126740db7a2a344bf56c82c62f481a57f9ff59f93c91Stephen Hines    { "_Z21rsSetElementAt_double13rs_allocationPKdj", (void *)&SC_SetElementAt1_double, true },
1268d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_dj", (void *)&SC_SetElementAt1_double2, true },
1269d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_dj", (void *)&SC_SetElementAt1_double3, true },
1270d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_dj", (void *)&SC_SetElementAt1_double4, true },
1271d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_double13rs_allocationPKdjj", (void *)&SC_SetElementAt2_double, true },
1272d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_djj", (void *)&SC_SetElementAt2_double2, true },
1273d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_djj", (void *)&SC_SetElementAt2_double3, true },
1274d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_djj", (void *)&SC_SetElementAt2_double4, true },
1275d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_double13rs_allocationPKdjjj", (void *)&SC_SetElementAt3_double, true },
1276d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_djjj", (void *)&SC_SetElementAt3_double2, true },
1277d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_djjj", (void *)&SC_SetElementAt3_double3, true },
1278d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_djjj", (void *)&SC_SetElementAt3_double4, true },
12795261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
12805261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
128187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Refcounting
1282444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
128387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true },
128487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true },
128587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
128687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true },
128787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true },
128887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
128987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true },
129087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true },
129187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
129287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true },
129387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true },
129487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
129587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true },
129687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true },
1297444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
1298444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject_ByRef, true },
1299444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject_ByRef, true },
1300444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1301444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject_ByRef, true },
1302444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject_ByRef, true },
1303444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1304444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject_ByRef, true },
1305444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject_ByRef, true },
1306444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1307444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject_ByRef, true },
1308444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject_ByRef, true },
1309444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1310444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject_ByRef, true },
1311444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject_ByRef, true },
1312444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
1313444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true },
1314444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true },
1315444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true },
1316444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true },
1317444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true },
131887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
13199e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z11rsSetObjectP7rs_pathS_", (void *)&SC_SetObject, true },
13209e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z13rsClearObjectP7rs_path", (void *)&SC_ClearObject, true },
13219e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z10rsIsObject7rs_path", (void *)&SC_IsObject, true },
13229e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
132387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true },
132487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true },
132587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true },
132687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
132787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true },
132887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true },
132987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true },
133087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
133187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true },
133287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true },
133387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true },
133487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
133587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true },
133687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true },
133787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true },
133887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
133987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true },
134087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true },
134187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true },
134287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
134387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true },
134487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true },
134587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true },
134687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
134787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Allocation ops
134887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true },
134987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false },
135087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false },
135174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false },
13520b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
135347211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true },
1354b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z18rsAllocationIoSend13rs_allocation", (void *)&SC_AllocationIoSend, false },
1355b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z21rsAllocationIoReceive13rs_allocation", (void *)&SC_AllocationIoReceive, false },
13560b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
135774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false },
135874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false },
135987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
136087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Messaging
136187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
136287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClienti", (void *)&SC_ToClient, false },
136387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false },
136487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false },
136587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false },
13660b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
136787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false },
136887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false },
136987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false },
137087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false },
137187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false },
137287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false },
1373a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant19rs_program_fragmentj13rs_allocation", (void *)&SC_BindFragmentConstant, false },
1374a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant17rs_program_vertexj13rs_allocation", (void *)&SC_BindVertexConstant, false },
137587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
137687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false },
137787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false },
137887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false },
137987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false },
138187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false },
138387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false },
138587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false },
138687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false },
138987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false },
139087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false },
139187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false },
139287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
139387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false },
139487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false },
139587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false },
139687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false },
139787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
13989e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z11rsgDrawPath7rs_path", (void *)&SC_DrawPath, false },
13999e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
140087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false },
140187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false },
140287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
140387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false },
140487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false },
140587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false },
140687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false },
140787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
140887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false },
140987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false },
141087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
141187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false },
141287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false },
141387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false },
141487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false },
141587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false },
14161aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
141787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1418aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true },
1419aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true },
1420f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK14rs_script_call", (void *)&SC_ForEach_SAAUS, true },
14212f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray
14222f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray    //rsForEach with usrdata is not supported in 64-bit
14232f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray#ifndef __LP64__
1424aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true },
1425f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK14rs_script_call", (void *)&SC_ForEach_SAAULS, true },
14262f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray#endif
14271aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif // RS_COMPATIBILITY_LIB
142887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
142964147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#ifndef __LP64__
143087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // time
143187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z6rsTimePi", (void *)&SC_Time, true },
143287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true },
143364147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#else
143464147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    // time
143564147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    { "_Z6rsTimePl", (void *)&SC_Time, true },
143664147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    { "_Z11rsLocaltimeP5rs_tmPKl", (void *)&SC_LocalTime, true },
143764147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#endif
143887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true },
143987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true },
144087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z7rsGetDtv", (void*)&SC_GetDt, false },
144187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
144287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // misc
14430b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
144487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z5colorffff", (void *)&SC_Color, false },
144587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z9rsgFinishv", (void *)&SC_Finish, false },
14460b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
144787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
144844bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    { nullptr, nullptr, false }
144987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams};
145087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
14512544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar#ifndef RS_COMPATIBILITY_LIB
14522544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
14532544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainartypedef struct { unsigned int val; } rs_allocation_usage_type;
14542544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
14552544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgAllocationSyncAll(::rs_allocation a) {
14562544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_AllocationSyncAll(castToARSAlloc(a));
14572544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
14582544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
14592544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgAllocationSyncAll(::rs_allocation a,
14602544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          unsigned int usage) {
14612544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_AllocationSyncAll2(castToARSAlloc(a),
14622544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                 (RsAllocationUsageType) usage);
14632544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
14642544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgAllocationSyncAll(::rs_allocation a,
14652544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          rs_allocation_usage_type source) {
14662544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_AllocationSyncAll2(castToARSAlloc(a),
14672544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                 (RsAllocationUsageType) source.val);
14682544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
14692544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
14702544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramFragment(::rs_program_fragment pf) {
14712544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramFragment((ProgramFragment *) pf.p);
14722544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
14732544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
14742544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramStore(::rs_program_store ps) {
14752544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramStore((ProgramStore *) ps.p);
14762544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
14772544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
14782544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramVertex(::rs_program_vertex pv) {
14792544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramVertex((ProgramVertex *) pv.p);
14802544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
14812544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
14822544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramRaster(::rs_program_raster pr) {
14832544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramRaster((ProgramRaster *) pr.p);
14842544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
14852544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
14862544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindSampler(::rs_program_fragment pf,
14872544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    uint32_t slot,
14882544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    ::rs_sampler s) {
14892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindSampler((ProgramFragment *) pf.p, slot, (Sampler *) s.p);
14902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
14912544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
14922544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindTexture(::rs_program_fragment pf,
14932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    uint32_t slot,
14942544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    ::rs_allocation a) {
14952544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindTexture((ProgramFragment *) pf.p,
14962544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          slot,
14972544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          (Allocation *) a.p);
14982544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
14992544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15002544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindConstant(::rs_program_fragment pf,
15012544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     uint32_t slot,
15022544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     ::rs_allocation a) {
15032544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFragmentConstant((ProgramFragment *) pf.p,
15042544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                   slot,
15052544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                   (Allocation *) a.p);
15062544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15072544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15082544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindConstant(::rs_program_vertex pv,
15092544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     uint32_t slot,
15102544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     ::rs_allocation a) {
15112544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindVertexConstant((ProgramVertex *) pv.p,
15122544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                 slot,
15132544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                 (Allocation *) a.p);
15142544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15152544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15162544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexLoadProjectionMatrix(const rs_matrix4x4 *m) {
15172544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpLoadProjectionMatrix((const rsc_Matrix *) m);
15182544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15192544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15202544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexLoadModelMatrix(const rs_matrix4x4 *m) {
15212544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpLoadModelMatrix((const rsc_Matrix *) m);
15222544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15232544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15242544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexLoadTextureMatrix(const rs_matrix4x4 *m) {
15252544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpLoadTextureMatrix((const rsc_Matrix *) m);
15262544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15272544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15282544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexGetProjectionMatrix(rs_matrix4x4 *m) {
15292544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpGetProjectionMatrix((rsc_Matrix *) m);
15302544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15312544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15322544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramFragmentConstantColor(::rs_program_fragment pf,
15332544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                     float r, float g,
15342544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                     float b, float a) {
15352544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15362544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_PfConstantColor((ProgramFragment *) pf.p, r, g, b, a);
15372544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15382544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15392544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainaruint32_t rsgGetWidth(void) {
15402544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_GetWidth();
15412544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15422544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15432544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainaruint32_t rsgGetHeight(void) {
15442544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_GetHeight();
15452544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15462544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15472544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawRect(float x1, float y1, float x2, float y2, float z) {
15482544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawRect(x1, y1, x2, y2, z);
15492544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15502544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15512544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawQuad(float x1, float y1, float z1,
15522544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                 float x2, float y2, float z2,
15532544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                 float x3, float y3, float z3,
15542544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                 float x4, float y4, float z4) {
15552544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15562544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    SC_DrawQuad(x1, y1, z1,
15572544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                x2, y2, z2,
15582544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                x3, y3, z3,
15592544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                x4, y4, z4);
15602544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15612544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15622544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
15632544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          float x2, float y2, float z2, float u2, float v2,
15642544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          float x3, float y3, float z3, float u3, float v3,
15652544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          float x4, float y4, float z4, float u4, float v4) {
15662544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15672544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return rsgDrawQuadTexCoords(x1, y1, z1, u1, v1,
15682544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                x2, y2, z2, u2, v2,
15692544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                x3, y3, z3, u3, v3,
15702544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                x4, y4, z4, u4, v4);
15712544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15722544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15732544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawSpriteScreenspace(float x, float y, float z, float w, float h) {
15742544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawSpriteScreenspace(x, y, z, w, h);
15752544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15762544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15772544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawMesh(::rs_mesh ism) {
15782544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawMesh((Mesh *) ism.p);
15792544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15802544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15812544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawMesh(::rs_mesh ism, uint primitiveIndex) {
15822544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawMeshPrimitive((Mesh *) ism.p, primitiveIndex);
15832544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15842544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15852544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawMesh(::rs_mesh ism, uint primitiveIndex, uint start, uint len) {
15862544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawMeshPrimitiveRange((Mesh *) ism.p, primitiveIndex, start, len);
15872544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15882544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid  rsgMeshComputeBoundingBox(::rs_mesh mesh,
15902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                float *minX, float *minY, float *minZ,
15912544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                float *maxX, float *maxY, float *maxZ) {
15922544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_MeshComputeBoundingBox((Mesh *) mesh.p,
15942544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                minX, minY, minZ,
15952544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                maxX, maxY, maxZ);
15962544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15972544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15982544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawPath(::rs_path p) {
15992544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawPath((Path *) p.p);
16002544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16012544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16022544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearColor(float r, float g, float b, float a) {
16032544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearColor(r, g, b, a);
16042544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16052544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16062544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearDepth(float value) {
16072544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearDepth(value);
16082544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16092544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16102544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawText(const char *text, int x, int y) {
16112544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawText(text, x, y);
16122544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16132544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16142544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawText(::rs_allocation a, int x, int y) {
16152544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawTextAlloc((Allocation *) a.p, x, y);
16162544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16172544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16182544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgMeasureText(const char *text, int *left, int *right,
16192544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    int *top, int *bottom) {
16202544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_MeasureText(text, left, right, top, bottom);
16212544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16222544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16232544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgMeasureText(::rs_allocation a, int *left, int *right,
16242544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    int *top, int *bottom) {
16252544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_MeasureTextAlloc((Allocation *) a.p, left, right, top, bottom);
16262544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16272544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16282544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindFont(::rs_font font) {
16292544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFont((Font *) font.p);
16302544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16312544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16322544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgFontColor(float r, float g, float b, float a) {
16332544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_FontColor(r, g, b, a);
16342544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16352544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16362544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindColorTarget(::rs_allocation a, uint slot) {
16372544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFrameBufferObjectColorTarget((Allocation *) a.p, slot);
16382544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16392544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16402544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindDepthTarget(::rs_allocation a) {
16412544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFrameBufferObjectDepthTarget((Allocation *) a.p);
16422544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16432544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16442544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearColorTarget(uint slot) {
16452544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearFrameBufferObjectColorTarget(slot);
16462544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16472544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16482544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearDepthTarget(void) {
16492544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearFrameBufferObjectDepthTarget(nullptr, nullptr);
16502544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16512544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16522544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearAllRenderTargets(void) {
16532544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearFrameBufferObjectTargets(nullptr, nullptr);
16542544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16552544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16562544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid color(float r, float g, float b, float a) {
16572544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_Color(r, g, b, a);
16582544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16592544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16602544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgFinish(void) {
16612544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_Finish();
16622544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16632544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16642544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar#endif
16652544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
1666d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray//////////////////////////////////////////////////////////////////////////////
1667d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray// Compatibility Library entry points
1668d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray//////////////////////////////////////////////////////////////////////////////
1669d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1670dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifndef __LP64__
1671dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#define IS_CLEAR_SET_OBJ(t, u, v) \
1672f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    bool rsIsObject(t src) { \
167344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return src.p != nullptr; \
1674f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    } \
1675d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    void __attribute__((overloadable)) rsClearObject(t *dst) { \
1676f29edf80510d483b8663e9d8b859959e37361aeeJason Sams        return SC_ClearObject(reinterpret_cast<rs_object_base *>(dst)); \
1677d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    } \
1678d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    void __attribute__((overloadable)) rsSetObject(t *dst, t src) { \
1679dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        android::renderscript::rs_object_base cast; \
1680dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        cast.p = (ObjectBase *) src.p; \
1681dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return SC_SetObject(reinterpret_cast<rs_object_base *>(dst), cast);\
1682d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    }
1683dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1684dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#define IS_CLEAR_SET_OBJ(t, u, v) \
1685dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    extern "C" { bool u(t* src) { \
1686dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return src->p != nullptr; \
1687dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } }\
1688dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    void __attribute__((overloadable)) rsClearObject(t *dst) { \
1689dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return SC_ClearObject(reinterpret_cast<rs_object_base *>(dst)); \
1690dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } \
1691dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    extern "C" {\
1692dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar      void v (t *dst, t *src) { \
1693dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return SC_SetObject_ByRef(reinterpret_cast<rs_object_base *>(dst),\
1694dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                  reinterpret_cast<rs_object_base *>(src));\
1695dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } }
1696dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1697dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1698dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_element, _Z10rsIsObject10rs_element, _Z11rsSetObjectP10rs_elementS_)
1699dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_type, _Z10rsIsObject7rs_type, _Z11rsSetObjectP7rs_typeS_)
1700dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_allocation, _Z10rsIsObject13rs_allocation, _Z11rsSetObjectP13rs_allocationS_)
1701dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_sampler, _Z10rsIsObject10rs_sampler, _Z11rsSetObjectP10rs_samplerS_)
1702dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_script, _Z10rsIsObject9rs_script, _Z11rsSetObjectP9rs_scriptS_)
1703dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
17042544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_path, _Z10rsIsObject7rs_path, _Z11rsSetObjectP7rs_pathS_)
17052544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_mesh, _Z10rsIsObject7rs_mesh, _Z11rsSetObjectP7rs_meshS_)
17062544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_fragment, _Z10rsIsObject19rs_program_fragment, _Z11rsSetObjectP19rs_program_fragmentS_)
17072544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_vertex, _Z10rsIsObject17rs_program_vertex, _Z11rsSetObjectP17rs_program_vertexS_)
17082544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_raster, _Z10rsIsObject17rs_program_raster, _Z11rsSetObjectP17rs_program_rasterS_)
17092544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_store, _Z10rsIsObject16rs_program_store, _Z11rsSetObjectP16rs_program_storeS_)
17102544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_font, _Z10rsIsObject7rs_font, _Z11rsSetObjectP7rs_fontS_)
17112544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
1712d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1713f827cadde659212b266b9635128c98515a7dcb01Stephen Hines#undef IS_CLEAR_SET_OBJ
1714d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
17151aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAA(::rs_script target,
17161aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                           ::rs_allocation in,
17171aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                           ::rs_allocation out) {
17181aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
171944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p,
172044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes               nullptr, 0, nullptr);
17211aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
17221aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
17231aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAUS(::rs_script target,
17241aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             ::rs_allocation in,
17251aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             ::rs_allocation out,
17261aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             const void *usr,
17271aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             const RsScriptCall *call) {
17281aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
172944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p,
173044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes               usr, 0, call);
17311aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
17321aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
17331aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAUL(::rs_script target,
17341aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             ::rs_allocation in,
17351aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             ::rs_allocation out,
17361aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             const void *usr,
17371aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             uint32_t usrLen) {
17381aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
173944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p,
174044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes               usr, usrLen, nullptr);
17411aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
17421aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
17431aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ForEach_SAAULS(::rs_script target,
17441aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              ::rs_allocation in,
17451aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              ::rs_allocation out,
17461aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              const void *usr,
17471aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              uint32_t usrLen,
17481aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                              const RsScriptCall *call) {
17491aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
175044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    rsrForEach(rsc, (Script*)target.p, (Allocation*)in.p, (Allocation*)out.p,
175144bef6fba6244292b751387f3d6c31cca96c28adChris Wailes               usr, usrLen, call);
17521aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
17531aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
1754dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef RS_COMPATIBILITY_LIB
175547211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murraystatic const Allocation * SC_GetAllocation(const void *ptr) {
175647211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
175747211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    const Script *sc = RsdCpuReference::getTlsScript();
175847211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    return rsdScriptGetAllocationForPointer(rsc, sc, ptr);
175947211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray}
176047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray
1761d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayconst Allocation * rsGetAllocation(const void *ptr) {
1762d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return SC_GetAllocation(ptr);
1763d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1764d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1765dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1766dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarconst android::renderscript::rs_allocation rsGetAllocation(const void *ptr) {
1767dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef __i386__
1768dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    android::renderscript::rs_allocation obj;
1769dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    obj.p = (Allocation *) SC_GetAllocation(ptr);
1770dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return obj;
1771dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1772dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_GetAllocation(ptr);
1773dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1774dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
1775dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1776dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1777dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1778a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsAllocationIoSend(::rs_allocation a) {
1779dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    SC_AllocationIoSend(a);
17807a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
17817a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
1782a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsAllocationIoReceive(::rs_allocation a) {
1783dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    SC_AllocationIoReceive(a);
17847a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
17857a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
17867a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
17877a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinesvoid __attribute__((overloadable)) rsAllocationCopy1DRange(
1788a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation dstAlloc,
17897a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstOff, uint32_t dstMip, uint32_t count,
1790a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation srcAlloc,
17917a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcOff, uint32_t srcMip) {
17921aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    SC_AllocationCopy1DRange(dstAlloc, dstOff, dstMip, count,
17931aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             srcAlloc, srcOff, srcMip);
17947a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
17957a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
17967a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinesvoid __attribute__((overloadable)) rsAllocationCopy2DRange(
1797a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation dstAlloc,
17987a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstXoff, uint32_t dstYoff,
17997a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstMip, rs_allocation_cubemap_face dstFace,
18007a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t width, uint32_t height,
1801a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation srcAlloc,
18027a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcXoff, uint32_t srcYoff,
18037a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcMip, rs_allocation_cubemap_face srcFace) {
18041aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    SC_AllocationCopy2DRange(dstAlloc, dstXoff, dstYoff,
18057a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines                             dstMip, dstFace, width, height,
18061aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             srcAlloc, srcXoff, srcYoff,
18077a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines                             srcMip, srcFace);
18087a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
18097a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
1810a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1811a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1812a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1813d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const void *usr,
1814d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const rs_script_call *call) {
18151aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return SC_ForEach_SAAUS(script, in, out, usr, (RsScriptCall*)call);
1816d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1817d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1818a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1819a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1820dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                             ::rs_allocation out,
1821dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                             const void *usr) {
1822dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef __LP64__
1823dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_ForEach_SAAU(&script, &in, &out, usr);
1824dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1825dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_ForEach_SAAU(script, in, out, usr);
1826dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1827dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
1828dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1829dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1830dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                             ::rs_allocation in,
1831a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out) {
18321aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return SC_ForEach_SAA(script, in, out);
1833276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1834276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1835a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1836a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1837a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1838276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines                                             const void *usr,
1839276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines                                             uint32_t usrLen) {
18401aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return SC_ForEach_SAAUL(script, in, out, usr, usrLen);
1841276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1842276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1843a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1844a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1845a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1846d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const void *usr,
1847d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             uint32_t usrLen,
1848d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const rs_script_call *call) {
18491aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return SC_ForEach_SAAULS(script, in, out, usr, usrLen, (RsScriptCall*)call);
1850d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1851d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1852dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar// #if defined(RS_COMPATIBILITY_LIB) || !defined(__LP64__)
1853dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifndef __LP64__
1854d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayint rsTime(int *timer) {
1855d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return SC_Time(timer);
1856d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1857140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines
1858140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hinesrs_tm* rsLocaltime(rs_tm* local, const int *timer) {
1859140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines    return (rs_tm*)(SC_LocalTime((tm*)local, (time_t *)timer));
1860140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines}
1861dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1862dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainartime_t rsTime(time_t * timer) {
1863dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_Time(timer);
1864dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
1865d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1866dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarrs_tm* rsLocaltime(rs_tm* local, const time_t *timer) {
1867dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return (rs_tm*)(SC_LocalTime((tm*)local, (time_t *)timer));
1868d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1869140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines#endif // RS_COMPATIBILITY_LIB
1870d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1871d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayint64_t rsUptimeMillis() {
1872d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1873d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return rsrUptimeMillis(rsc);
1874d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1875d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1876cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hinesint64_t rsUptimeNanos() {
1877cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines    return SC_UptimeNanos();
1878cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines}
1879cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines
1880cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hinesfloat rsGetDt() {
1881cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines    return SC_GetDt();
1882cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines}
1883cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines
1884276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClient(int cmdID) {
1885276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClient(cmdID);
1886276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1887276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1888276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClient(int cmdID, const void *data, uint32_t len) {
1889276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClient2(cmdID, data, len);
1890d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1891d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
18920b575de8ed0b628d84d256f5846500b0385979bdTim Murrayuint32_t rsSendToClientBlocking(int cmdID) {
1893276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClientBlocking(cmdID);
1894276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1895276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1896276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClientBlocking(int cmdID, const void *data, uint32_t len) {
1897276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClientBlocking2(cmdID, data, len);
18980b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
18990b575de8ed0b628d84d256f5846500b0385979bdTim Murray
19000b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF(const char *s, float f) {
19010b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %f, 0x%08x", s, f, *((int *) (&f)));
19020b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19030b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv2(const char *s, float f1, float f2) {
19040b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f}", s, f1, f2);
19050b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19060b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv3(const char *s, float f1, float f2, float f3) {
19070b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f}", s, f1, f2, f3);
19080b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19090b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) {
19100b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4);
19110b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19120b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF2(const char *s, float2 f) {
19130b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f}", s, f.x, f.y);
19140b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19150b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF3(const char *s, float3 f) {
19160b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f}", s, f.x, f.y, f.z);
19170b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19180b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF4(const char *s, float4 f) {
19190b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f}", s, f.x, f.y, f.z, f.w);
19200b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19210b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugD(const char *s, double d) {
19220b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d)));
19230b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19240b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM4v4(const char *s, const float *f) {
19250b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]);
19260b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]);
19270b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]);
19280b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]);
19290b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19300b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM3v3(const char *s, const float *f) {
19310b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]);
19320b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f", s, f[1], f[4], f[7]);
19330b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f}",s, f[2], f[5], f[8]);
19340b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19350b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM2v2(const char *s, const float *f) {
19360b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f", s, f[0], f[2]);
19370b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f}",s, f[1], f[3]);
19380b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19390b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI8(const char *s, char c) {
19400b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hhd  0x%hhx", s, c, (unsigned char)c);
19410b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19420b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC2(const char *s, char2 c) {
19430b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhd, %hhd}  0x%hhx 0x%hhx", s, c.x, c.y, (unsigned char)c.x, (unsigned char)c.y);
19440b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19450b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC3(const char *s, char3 c) {
19460b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19470b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19480b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC4(const char *s, char4 c) {
19490b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19500b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19510b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU8(const char *s, unsigned char c) {
19520b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hhu  0x%hhx", s, c, c);
19530b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19540b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC2(const char *s, uchar2 c) {
19550b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhu, %hhu}  0x%hhx 0x%hhx", s, c.x, c.y, c.x, c.y);
19560b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19570b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC3(const char *s, uchar3 c) {
19580b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19590b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19600b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC4(const char *s, uchar4 c) {
19610b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19620b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19630b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI16(const char *s, short c) {
19640b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hd  0x%hx", s, c, c);
19650b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19660b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS2(const char *s, short2 c) {
19670b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hd, %hd}  0x%hx 0x%hx", s, c.x, c.y, c.x, c.y);
19680b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19690b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS3(const char *s, short3 c) {
19700b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19710b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19720b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS4(const char *s, short4 c) {
19730b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19740b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19750b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU16(const char *s, unsigned short c) {
19760b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hu  0x%hx", s, c, c);
19770b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19780b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS2(const char *s, ushort2 c) {
19790b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hu, %hu}  0x%hx 0x%hx", s, c.x, c.y, c.x, c.y);
19800b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19810b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS3(const char *s, ushort3 c) {
19820b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19830b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19840b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS4(const char *s, ushort4 c) {
19850b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19860b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19870b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI32(const char *s, int32_t i) {
19880b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %d  0x%x", s, i, i);
19890b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19900b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI2(const char *s, int2 i) {
19910b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%d, %d}  0x%x 0x%x", s, i.x, i.y, i.x, i.y);
19920b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19930b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI3(const char *s, int3 i) {
19940b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19950b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19960b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI4(const char *s, int4 i) {
19970b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19980b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19990b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU32(const char *s, uint32_t i) {
20000b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %u  0x%x", s, i, i);
20010b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20020b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI2(const char *s, uint2 i) {
20030b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%u, %u}  0x%x 0x%x", s, i.x, i.y, i.x, i.y);
20040b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20050b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI3(const char *s, uint3 i) {
20060b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20070b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20080b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI4(const char *s, uint4 i) {
20090b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20100b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
2011127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2012127d51c1193f4055795da967d47a13bedd3cb951Miao Wangtemplate <typename T>
2013127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic inline long long LL(const T &x) {
2014127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    return static_cast<long long>(x);
2015127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
2016127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2017127d51c1193f4055795da967d47a13bedd3cb951Miao Wangtemplate <typename T>
2018127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic inline unsigned long long LLu(const T &x) {
2019127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    return static_cast<unsigned long long>(x);
2020127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
2021127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2022dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_debugLL64(const char *s, long long ll) {
2023dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    ALOGD("%s %lld  0x%llx", s, LL(ll), LL(ll));
2024dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
2025dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
20260b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL2(const char *s, long2 ll) {
2027127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%lld, %lld}  0x%llx 0x%llx", s, LL(ll.x), LL(ll.y), LL(ll.x), LL(ll.y));
20280b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20290b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL3(const char *s, long3 ll) {
2030127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%lld, %lld, %lld}  0x%llx 0x%llx 0x%llx", s, LL(ll.x), LL(ll.y), LL(ll.z), LL(ll.x), LL(ll.y), LL(ll.z));
20310b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20320b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL4(const char *s, long4 ll) {
2033127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%lld, %lld, %lld, %lld}  0x%llx 0x%llx 0x%llx 0x%llx", s, LL(ll.x), LL(ll.y), LL(ll.z), LL(ll.w), LL(ll.x), LL(ll.y), LL(ll.z), LL(ll.w));
20340b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20350b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugULL64(const char *s, unsigned long long ll) {
20360b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %llu  0x%llx", s, ll, ll);
20370b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20380b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL2(const char *s, ulong2 ll) {
2039127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%llu, %llu}  0x%llx 0x%llx", s, LLu(ll.x), LLu(ll.y), LLu(ll.x), LLu(ll.y));
20400b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20410b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL3(const char *s, ulong3 ll) {
2042127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%llu, %llu, %llu}  0x%llx 0x%llx 0x%llx", s, LLu(ll.x), LLu(ll.y), LLu(ll.z), LLu(ll.x), LLu(ll.y), LLu(ll.z));
20430b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20440b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL4(const char *s, ulong4 ll) {
2045127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%llu, %llu, %llu, %llu}  0x%llx 0x%llx 0x%llx 0x%llx", s, LLu(ll.x), LLu(ll.y), LLu(ll.z), LLu(ll.w), LLu(ll.x), LLu(ll.y), LLu(ll.z), LLu(ll.w));
20460b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
2047127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
20480b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugP(const char *s, const void *p) {
20490b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %p", s, p);
20500b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20510b575de8ed0b628d84d256f5846500b0385979bdTim Murray
20520b575de8ed0b628d84d256f5846500b0385979bdTim Murray// TODO: allocation ops, messaging, time
20530b575de8ed0b628d84d256f5846500b0385979bdTim Murray
20540b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f) {
20550b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugF(s, f);
20560b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20570b575de8ed0b628d84d256f5846500b0385979bdTim Murray
20580b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2) {
20590b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv2(s, f1, f2);
20600b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20610b575de8ed0b628d84d256f5846500b0385979bdTim Murray
20620b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2, float f3) {
20630b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv3(s, f1, f2, f3);
20640b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20650b575de8ed0b628d84d256f5846500b0385979bdTim Murray
20660b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2, float f3, float f4) {
20670b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv4(s, f1, f2, f3, f4);
20680b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20690b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2070b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float2 *f) {
2071b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF2(s, *f);
20720b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20730b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2074b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float3 *f) {
2075b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF3(s, *f);
20760b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20770b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2078b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float4 *f) {
2079b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF4(s, *f);
20800b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20810b575de8ed0b628d84d256f5846500b0385979bdTim Murray
20820b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, double d) {
20830b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugD(s, d);
20840b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20850b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2086b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix4x4 *m) {
20870b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFM4v4(s, (float *) m);
20880b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20890b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2090b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix3x3 *m) {
2091d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    SC_debugFM3v3(s, (float *) m);
20920b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20930b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2094b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix2x2 *m) {
2095d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    SC_debugFM2v2(s, (float *) m);
20960b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20970b575de8ed0b628d84d256f5846500b0385979bdTim Murray
20980b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, char c) {
20990b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI8(s, c);
21000b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21010b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2102b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char2 *c) {
2103b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC2(s, *c);
21040b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21050b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2106b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char3 *c) {
2107b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC3(s, *c);
21080b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21090b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2110b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char4 *c) {
2111b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC4(s, *c);
21120b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21130b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21140b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned char c) {
21150b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU8(s, c);
21160b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21170b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2118b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar2 *c) {
2119b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC2(s, *c);
21200b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21210b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2122b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar3 *c) {
2123b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC3(s, *c);
21240b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21250b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2126b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar4 *c) {
2127b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC4(s, *c);
21280b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21290b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21300b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, short c) {
21310b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI16(s, c);
21320b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21330b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2134b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short2 *c) {
2135b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS2(s, *c);
21360b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21370b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2138b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short3 *c) {
2139b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS3(s, *c);
21400b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21410b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2142b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short4 *c) {
2143b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS4(s, *c);
21440b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21450b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21460b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned short c) {
21470b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU16(s, c);
21480b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21490b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2150b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort2 *c) {
2151b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS2(s, *c);
21520b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21530b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2154b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort3 *c) {
2155b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS3(s, *c);
21560b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21570b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2158b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort4 *c) {
2159b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS4(s, *c);
21600b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21610b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21620b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, int c) {
21630b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI32(s, c);
21640b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21650b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2166b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int2 *c) {
2167b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI2(s, *c);
21680b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21690b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2170b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int3 *c) {
2171b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI3(s, *c);
21720b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21730b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2174b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int4 *c) {
2175b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI4(s, *c);
21760b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21770b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21780b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned int c) {
21790b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU32(s, c);
21800b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21810b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2182b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint2 *c) {
2183b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI2(s, *c);
21840b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21850b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2186b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint3 *c) {
2187b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI3(s, *c);
21880b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21890b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2190b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint4 *c) {
2191b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI4(s, *c);
21920b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21930b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21940b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, long c) {
21950b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugLL64(s, c);
21960b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21970b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21980b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, long long c) {
21990b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugLL64(s, c);
22000b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22010b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2202b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long2 *c) {
2203b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL2(s, *c);
22040b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22050b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2206b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long3 *c) {
2207b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL3(s, *c);
22080b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22090b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2210b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long4 *c) {
2211b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL4(s, *c);
22120b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22130b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22140b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned long c) {
22150b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugULL64(s, c);
22160b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22170b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22180b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned long long c) {
22190b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugULL64(s, c);
22200b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22210b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2222b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong2 *c) {
2223b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL2(s, *c);
22240b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22250b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2226b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong3 *c) {
2227b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL3(s, *c);
22280b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22290b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2230b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong4 *c) {
2231b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL4(s, *c);
22320b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22330b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2234a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// FIXME: We need to export these function signatures for the compatibility
2235a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// library. The C++ name mangling that LLVM uses for ext_vector_type requires
2236a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// different versions for "long" vs. "long long". Note that the called
2237a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// functions are still using the appropriate 64-bit sizes.
2238127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2239127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#ifndef __LP64__
2240a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l2 __attribute__((ext_vector_type(2)));
2241a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l3 __attribute__((ext_vector_type(3)));
2242a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l4 __attribute__((ext_vector_type(4)));
2243a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul2 __attribute__((ext_vector_type(2)));
2244a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul3 __attribute__((ext_vector_type(3)));
2245a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul4 __attribute__((ext_vector_type(4)));
2246a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2247a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l2 *c) {
2248a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL2(s, *(const long2 *)c);
2249a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2250a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2251a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l3 *c) {
2252a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL3(s, *(const long3 *)c);
2253a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2254a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2255a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l4 *c) {
2256a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL4(s, *(const long4 *)c);
2257a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2258a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2259a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul2 *c) {
2260a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL2(s, *(const ulong2 *)c);
2261a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2262a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2263a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul3 *c) {
2264a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL3(s, *(const ulong3 *)c);
2265a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2266a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2267a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul4 *c) {
2268a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL4(s, *(const ulong4 *)c);
2269a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2270127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#endif
2271a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
22729f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const long2 c) {
22739f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugL2(s, c);
22749f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
22759f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
22769f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const long3 c) {
22779f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugL3(s, c);
22789f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
22799f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
22809f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const long4 c) {
22819f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugL4(s, c);
22829f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
22839f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
22849f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const ulong2 c) {
22859f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugUL2(s, c);
22869f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
22879f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
22889f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const ulong3 c) {
22899f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugUL3(s, c);
22909f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
22919f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
22929f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const ulong4 c) {
22939f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugUL4(s, c);
22949f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
22959f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
22969f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
22970b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, const void *p) {
22980b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugP(s, p);
22990b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
230087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2301709a0978ae141198018ca9769f8d96292a8928e6Jason Samsextern const RsdCpuReference::CpuSymbol * rsdLookupRuntimeStub(Context * pContext, char const* name) {
230287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    ScriptC *s = (ScriptC *)pContext;
2303709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const RsdCpuReference::CpuSymbol *syms = gSyms;
230444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    const RsdCpuReference::CpuSymbol *sym = nullptr;
230587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
230687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    if (!sym) {
2307709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        while (syms->fnPtr) {
2308709a0978ae141198018ca9769f8d96292a8928e6Jason Sams            if (!strcmp(syms->name, name)) {
2309709a0978ae141198018ca9769f8d96292a8928e6Jason Sams                return syms;
231087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            }
231187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            syms++;
231287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams        }
231387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    }
231487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
231544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return nullptr;
231687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
2317