rsdRuntimeStubs.cpp revision 7153e1c8232882ee2bd7b975791a21e1ed9732fd
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
11731729ad313f009d430255bfac8ef644db0c9215bYong Chen#ifndef __LP64__
11831729ad313f009d430255bfac8ef644db0c9215bYong Chentypedef android::renderscript::rs_script RS_TY_SCRIPT;
11931729ad313f009d430255bfac8ef644db0c9215bYong Chentypedef android::renderscript::rs_allocation RS_TY_ALLOC;
12031729ad313f009d430255bfac8ef644db0c9215bYong Chen
12131729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline Script* rsGetObjPtr(RS_TY_SCRIPT s) {
12231729ad313f009d430255bfac8ef644db0c9215bYong Chen    return const_cast<Script*>(s.p);
12331729ad313f009d430255bfac8ef644db0c9215bYong Chen}
12431729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline Allocation* rsGetObjPtr(RS_TY_ALLOC a) {
12531729ad313f009d430255bfac8ef644db0c9215bYong Chen    return const_cast<Allocation*>(a.p);
12631729ad313f009d430255bfac8ef644db0c9215bYong Chen}
12731729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline RS_TY_SCRIPT rsTyCast(::rs_script s) {
12831729ad313f009d430255bfac8ef644db0c9215bYong Chen    RS_TY_SCRIPT cast;
12931729ad313f009d430255bfac8ef644db0c9215bYong Chen    cast.p = (const Script*)s.p;
13031729ad313f009d430255bfac8ef644db0c9215bYong Chen    return cast;
13131729ad313f009d430255bfac8ef644db0c9215bYong Chen}
13231729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline RS_TY_ALLOC rsTyCast(::rs_allocation a) {
13331729ad313f009d430255bfac8ef644db0c9215bYong Chen    RS_TY_ALLOC cast;
13431729ad313f009d430255bfac8ef644db0c9215bYong Chen    cast.p = (const Allocation*)a.p;
13531729ad313f009d430255bfac8ef644db0c9215bYong Chen    return cast;
13631729ad313f009d430255bfac8ef644db0c9215bYong Chen}
13731729ad313f009d430255bfac8ef644db0c9215bYong Chen#define RS_CAST(a)  rsTyCast(a)
13831729ad313f009d430255bfac8ef644db0c9215bYong Chen
13931729ad313f009d430255bfac8ef644db0c9215bYong Chen#else
14031729ad313f009d430255bfac8ef644db0c9215bYong Chen
14131729ad313f009d430255bfac8ef644db0c9215bYong Chentypedef android::renderscript::rs_script* RS_TY_SCRIPT;
14231729ad313f009d430255bfac8ef644db0c9215bYong Chentypedef android::renderscript::rs_allocation* RS_TY_ALLOC;
14331729ad313f009d430255bfac8ef644db0c9215bYong Chen
14431729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline Script* rsGetObjPtr(RS_TY_SCRIPT s) {
14531729ad313f009d430255bfac8ef644db0c9215bYong Chen    return const_cast<Script*>(s->p);
14631729ad313f009d430255bfac8ef644db0c9215bYong Chen}
14731729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline Allocation* rsGetObjPtr(RS_TY_ALLOC a) {
14831729ad313f009d430255bfac8ef644db0c9215bYong Chen    return const_cast<Allocation*>(a->p);
14931729ad313f009d430255bfac8ef644db0c9215bYong Chen}
15031729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline RS_TY_SCRIPT rsTyCast(::rs_script *s) {
15131729ad313f009d430255bfac8ef644db0c9215bYong Chen    return reinterpret_cast<RS_TY_SCRIPT>(s);
15231729ad313f009d430255bfac8ef644db0c9215bYong Chen}
15331729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline RS_TY_ALLOC rsTyCast(::rs_allocation *a) {
15431729ad313f009d430255bfac8ef644db0c9215bYong Chen    return reinterpret_cast<RS_TY_ALLOC>(a);
15531729ad313f009d430255bfac8ef644db0c9215bYong Chen}
15631729ad313f009d430255bfac8ef644db0c9215bYong Chen#define RS_CAST(a)  rsTyCast(&(a))
15731729ad313f009d430255bfac8ef644db0c9215bYong Chen
15831729ad313f009d430255bfac8ef644db0c9215bYong Chen#endif
15931729ad313f009d430255bfac8ef644db0c9215bYong Chen
1607153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar// Some RS functions are not threadsafe but can be called from an invoke
1617153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar// function.  Instead of summarily marking scripts that call these functions as
1627153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar// not-threadable we detect calls to them in the driver and sends a fatal error
1637153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar// message.
1647153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainarstatic bool failIfInKernel(Context *rsc, const char *funcName) {
1657153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    RsdHal *dc = (RsdHal *)rsc->mHal.drv;
1667153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    RsdCpuReference *impl = (RsdCpuReference *) dc->mCpuRef;
1677153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
1687153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (impl->getInForEach()) {
1697153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        char buf[256];
1707153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        sprintf(buf, "Error: Call to unsupported function %s "
1717153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar                         "in kernel", funcName);
1727153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        rsc->setError(RS_ERROR_FATAL_DRIVER, buf);
1737153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return true;
1747153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    }
1757153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    return false;
1767153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar}
1777153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
17887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
17987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Allocation
18087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
18187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
18287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
18331729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationSyncAll2(RS_TY_ALLOC a, RsAllocationUsageType source) {
184709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
18531729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationSyncAll(rsc, rsGetObjPtr(a), source);
18687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
18787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
18831729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationSyncAll(RS_TY_ALLOC a) {
189709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
19031729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationSyncAll(rsc, rsGetObjPtr(a), RS_ALLOCATION_USAGE_SCRIPT);
19187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
19287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1931aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#ifndef RS_COMPATIBILITY_LIB
1941aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
19531729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationCopy1DRange(RS_TY_ALLOC dstAlloc,
19674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstOff,
19774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip,
19874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t count,
19931729ad313f009d430255bfac8ef644db0c9215bYong Chen                                     RS_TY_ALLOC srcAlloc,
20074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcOff, uint32_t srcMip) {
201709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
2027153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationCopy1DRange"))
2037153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2047153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
20531729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationCopy1DRange(rsc, rsGetObjPtr(dstAlloc), dstOff, dstMip, count,
20631729ad313f009d430255bfac8ef644db0c9215bYong Chen                             rsGetObjPtr(srcAlloc), srcOff, srcMip);
20774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
20874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
20931729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationCopy2DRange(RS_TY_ALLOC dstAlloc,
21074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstXoff, uint32_t dstYoff,
21174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip, uint32_t dstFace,
21274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t width, uint32_t height,
21331729ad313f009d430255bfac8ef644db0c9215bYong Chen                                     RS_TY_ALLOC srcAlloc,
21474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcXoff, uint32_t srcYoff,
21574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcMip, uint32_t srcFace) {
216709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
2177153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationCopy2DRange"))
2187153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2197153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
22031729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationCopy2DRange(rsc, rsGetObjPtr(dstAlloc),
221a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             dstXoff, dstYoff, dstMip, dstFace,
22231729ad313f009d430255bfac8ef644db0c9215bYong Chen                             width, height, rsGetObjPtr(srcAlloc),
223a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             srcXoff, srcYoff, srcMip, srcFace);
22474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
22574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
22631729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationIoSend(RS_TY_ALLOC alloc) {
2271aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
2287153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationIoSend"))
2297153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2307153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
23131729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationIoSend(rsc, rsGetObjPtr(alloc));
2321aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
2331aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
2341aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
23531729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationIoReceive(RS_TY_ALLOC alloc) {
2361aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
2377153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationIoReceive"))
2387153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2397153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
24031729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationIoReceive(rsc, rsGetObjPtr(alloc));
2411aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
2421aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
2431aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#else
2441aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
24531729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationCopy1DRange(RS_TY_ALLOC dstAlloc,
2461aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstOff,
2471aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstMip,
2481aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t count,
24931729ad313f009d430255bfac8ef644db0c9215bYong Chen                                     RS_TY_ALLOC srcAlloc,
2501aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcOff, uint32_t srcMip) {
2511aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
2527153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationCopy1DRange"))
2537153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2547153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
25531729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationCopy1DRange(rsc, rsGetObjPtr(dstAlloc), dstOff, dstMip, count,
25631729ad313f009d430255bfac8ef644db0c9215bYong Chen                             rsGetObjPtr(srcAlloc), srcOff, srcMip);
2571aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
2581aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
25931729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationCopy2DRange(RS_TY_ALLOC dstAlloc,
2601aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstXoff, uint32_t dstYoff,
2611aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstMip, uint32_t dstFace,
2621aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t width, uint32_t height,
26331729ad313f009d430255bfac8ef644db0c9215bYong Chen                                     RS_TY_ALLOC srcAlloc,
2641aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcXoff, uint32_t srcYoff,
2651aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcMip, uint32_t srcFace) {
2661aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
2677153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationCopy2DRange"))
2687153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2697153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
27031729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationCopy2DRange(rsc, rsGetObjPtr(dstAlloc),
2711aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             dstXoff, dstYoff, dstMip, dstFace,
2721aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             width, height,
27331729ad313f009d430255bfac8ef644db0c9215bYong Chen                             rsGetObjPtr(srcAlloc),
2741aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             srcXoff, srcYoff, srcMip, srcFace);
2751aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
2761aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
27731729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationIoSend(RS_TY_ALLOC alloc) {
278709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
2797153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationIoSend"))
2807153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2817153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
28231729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationIoSend(rsc, rsGetObjPtr(alloc));
283b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
284b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
285b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
28631729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationIoReceive(RS_TY_ALLOC alloc) {
287709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
2887153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationIoReceive"))
2897153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2907153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
29131729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationIoReceive(rsc, rsGetObjPtr(alloc));
292b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
293b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
2941aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif
2951aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
2967a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines#ifndef RS_COMPATIBILITY_LIB
29774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
29887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
29987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context
30087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
30187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
30287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) {
303709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
304709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindTexture(rsc, pf, slot, a);
30587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
30687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
307a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindVertexConstant(ProgramVertex *pv, uint32_t slot, Allocation *a) {
308709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
309709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pv, slot, a);
310a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
311a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
312a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindFragmentConstant(ProgramFragment *pf, uint32_t slot, Allocation *a) {
313709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
314709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pf, slot, a);
315a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
316a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
31787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) {
318709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
319709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindSampler(rsc, pf, slot, s);
32087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
32187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
32287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) {
323709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
324709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramStore(rsc, ps);
32587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
32687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
32787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) {
328709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
329709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramFragment(rsc, pf);
33087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
33187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
33287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) {
333709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
334709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramVertex(rsc, pv);
33587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
33687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
33787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) {
338709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
339709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramRaster(rsc, pr);
34087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
34187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
34287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) {
343709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
344709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectColorTarget(rsc, a, slot);
34587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
34687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
34787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) {
348709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
349709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectDepthTarget(rsc, a);
35087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
35187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
35287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) {
353709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
354709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectColorTarget(rsc, slot);
35587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
35687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
35787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) {
358709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
359709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectDepthTarget(rsc);
36087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
36187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) {
363709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
364709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectTargets(rsc);
36587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
36687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
36987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP
37087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
37187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
37287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) {
373709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
374709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadProjectionMatrix(rsc, m);
37587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
37687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
37787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) {
378709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
379709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadModelMatrix(rsc, m);
38087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
38187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) {
383709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
384709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadTextureMatrix(rsc, m);
38587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
38687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) {
388709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
389709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPfConstantColor(rsc, pf, r, g, b, a);
39087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
39187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) {
393709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
394709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpGetProjectionMatrix(rsc, m);
39587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
39687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
39987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing
40087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
40187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
40287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
40387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x2, float y2, float z2, float u2, float v2,
40487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x3, float y3, float z3, float u3, float v3,
40587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x4, float y4, float z4, float u4, float v4) {
406709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
407414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
408414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!rsc->setupCheck()) {
409414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
410414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
411414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
412414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdHal *dc = (RsdHal *)rsc->mHal.drv;
413414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!dc->gl.shaderCache->setup(rsc)) {
414414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
415414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
416414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
417414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("Quad");
418414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x1, y1, z1);
419414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x2, y2, z2);
420414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x3, y3, z3);
421414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x4, y4, z4);
422414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
423414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    float vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4};
424414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    const float tex[] = {u1,v1, u2,v2, u3,v3, u4,v4};
425414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
426414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray::Attrib attribs[2];
427e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray    attribs[0].set(GL_FLOAT, 3, 12, false, (size_t)vtx, "ATTRIB_position");
428e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray    attribs[1].set(GL_FLOAT, 2, 8, false, (size_t)tex, "ATTRIB_texture0");
429414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
430414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray va(attribs, 2);
431414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    va.setup(rsc);
432414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
433414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RSD_CALL_GL(glDrawArrays, GL_TRIANGLE_FAN, 0, 4);
43487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
43587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
43687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1,
43787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x2, float y2, float z2,
43887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x3, float y3, float z3,
43987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x4, float y4, float z4) {
440414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuadTexCoords(x1, y1, z1, 0, 1,
441414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x2, y2, z2, 1, 1,
442414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x3, y3, z3, 1, 0,
443414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x4, y4, z4, 0, 0);
44487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
44587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
44687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) {
447709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
448414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
449414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    ObjectBaseRef<const ProgramVertex> tmp(rsc->getProgramVertex());
450414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    rsc->setProgramVertex(rsc->getDefaultProgramVertex());
451414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //rsc->setupCheck();
452414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
453414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //GLint crop[4] = {0, h, w, -h};
454414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
455414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    float sh = rsc->getHeight();
456414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
457414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuad(x,   sh - y,     z,
458414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x+w, sh - y,     z,
459414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x+w, sh - (y+h), z,
460414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x,   sh - (y+h), z);
461414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    rsc->setProgramVertex((ProgramVertex *)tmp.get());
46287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
46387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
46487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawRect(float x1, float y1, float x2, float y2, float z) {
465414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuad(x1, y2, z, x2, y2, z, x2, y1, z, x1, y1, z);
46687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
46787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
4689e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsstatic void SC_DrawPath(Path *p) {
469709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
4709e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    rsdPathDraw(rsc, p);
4719e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams}
4729e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
47387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMesh(Mesh *m) {
474709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
475709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMesh(rsc, m);
47687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
47787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) {
479709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
480709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitive(rsc, m, primIndex);
48187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
48287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
48387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) {
484709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
485709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitiveRange(rsc, m, primIndex, start, len);
48687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
48787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
48887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m,
48987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *minX, float *minY, float *minZ,
49087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *maxX, float *maxY, float *maxZ) {
491709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
492709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeshComputeBoundingBox(rsc, m, minX, minY, minZ, maxX, maxY, maxZ);
49387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
49487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
49587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
49687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
49787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
49887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
49987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
50087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
50187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
50287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Color(float r, float g, float b, float a) {
503709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
504709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrColor(rsc, r, g, b, a);
50587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
50687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
50787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Finish() {
508709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
509653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLFinish(rsc);
51087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
51187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
51287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) {
513709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
514709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
515653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearColor(rsc, r, g, b, a);
51687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
51787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
51887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearDepth(float v) {
519709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
520709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
521653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearDepth(rsc, v);
52287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
52387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetWidth() {
525709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
526709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetWidth(rsc);
52787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
52887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetHeight() {
530709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
531709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetHeight(rsc);
53287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
53387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
53487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) {
535709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
536709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawTextAlloc(rsc, a, x, y);
53787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
53887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
53987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawText(const char *text, int x, int y) {
540709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
541709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawText(rsc, text, x, y);
54287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
54387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
54487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a,
54587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                         int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
546709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
547709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureTextAlloc(rsc, a, left, right, top, bottom);
54887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
54987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
55087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureText(const char *text,
55187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                    int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
552709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
553709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureText(rsc, text, left, right, top, bottom);
55487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
55587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
55687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFont(Font *f) {
557709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
558709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFont(rsc, f);
55987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
56087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
56187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) {
562709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
563709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrFontColor(rsc, r, g, b, a);
56487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
565110f181b7966212a36ef18016f9b81c7322d0a2fJason Sams#endif
56687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
56787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
56887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
56987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
57087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
57187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5721aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ClearObject(rs_object_base *dst) {
5731aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
5741aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrClearObject(rsc, dst);
5751aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
576dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
5771aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetObject(rs_object_base *dst, rs_object_base  src) {
578a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    //    ALOGE("SC_SetObject: dst = %p, src = %p", dst, src.p);
579a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    //    ALOGE("SC_SetObject: dst[0] = %p", dst[0]);
580a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5811aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrSetObject(rsc, dst, (ObjectBase*)src.p);
58287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
58387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5841aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic bool SC_IsObject(rs_object_base o) {
585709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5861aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return rsrIsObject(rsc, o);
5871aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
588444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
589127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#ifdef __LP64__
590127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic void SC_SetObject_ByRef(rs_object_base *dst, rs_object_base *src) {
59131729ad313f009d430255bfac8ef644db0c9215bYong Chen    //    ALOGE("SC_SetObject_ByRef: dst = %p, src = %p", dst, src->p);
592127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    Context *rsc = RsdCpuReference::getTlsContext();
593127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    rsrSetObject(rsc, dst, (ObjectBase*)src->p);
594127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
595127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
596127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic bool SC_IsObject_ByRef(rs_object_base *o) {
597127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    Context *rsc = RsdCpuReference::getTlsContext();
598127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    return rsrIsObject(rsc, *o);
599127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
600127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#endif
601127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
602240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray
60347211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#ifndef RS_COMPATIBILITY_LIB
60447211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#ifndef __LP64__
605240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray
606240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray// i386 has different struct return passing to ARM; emulate with void*
607240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray#ifdef __i386__
608240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murraystatic const void* SC_GetAllocation(const void *ptr) {
609240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
610240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    const Script *sc = RsdCpuReference::getTlsScript();
611240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    Allocation* alloc = rsdScriptGetAllocationForPointer(rsc, sc, ptr);
612240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    android::renderscript::rs_allocation obj = {0};
613240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    alloc->callUpdateCacheObject(rsc, &obj);
614240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    return (void*)obj.p;
615240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray}
616240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray#else
617240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray// ARMv7/MIPS
61847211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murraystatic const android::renderscript::rs_allocation SC_GetAllocation(const void *ptr) {
619709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
620709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
62147211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Allocation* alloc = rsdScriptGetAllocationForPointer(rsc, sc, ptr);
62247211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    android::renderscript::rs_allocation obj = {0};
62347211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    alloc->callUpdateCacheObject(rsc, &obj);
62447211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    return obj;
62547211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray}
626240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray#endif
62747211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#else
628240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray// AArch64/x86_64/MIPS64
62947211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murraystatic const android::renderscript::rs_allocation SC_GetAllocation(const void *ptr) {
63047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
63147211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    const Script *sc = RsdCpuReference::getTlsScript();
63247211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Allocation* alloc = rsdScriptGetAllocationForPointer(rsc, sc, ptr);
63347211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    android::renderscript::rs_allocation obj = {0, 0, 0, 0};
63447211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    alloc->callUpdateCacheObject(rsc, &obj);
63547211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    return obj;
63687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
63747211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#endif
63847211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#endif
63987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
640dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
64131729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAA(RS_TY_SCRIPT target, RS_TY_ALLOC in, RS_TY_ALLOC out) {
642447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar    Context *rsc = RsdCpuReference::getTlsContext();
64331729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), nullptr, 0, nullptr);
644447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar}
645c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
64631729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAAU(RS_TY_SCRIPT target, RS_TY_ALLOC in,
64731729ad313f009d430255bfac8ef644db0c9215bYong Chen                            RS_TY_ALLOC out, const void *usr) {
648709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
64931729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), usr, 0, nullptr);
65087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
65187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
65231729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAAUS(RS_TY_SCRIPT target, RS_TY_ALLOC in,
65331729ad313f009d430255bfac8ef644db0c9215bYong Chen                             RS_TY_ALLOC out, const void *usr, const RsScriptCall *call) {
654447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar    Context *rsc = RsdCpuReference::getTlsContext();
65531729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), usr, 0, call);
656447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar}
65787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
6582f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray// These functions are only supported in 32-bit.
659444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
66031729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAAUL(RS_TY_SCRIPT target, RS_TY_ALLOC in,
66131729ad313f009d430255bfac8ef644db0c9215bYong Chen                             RS_TY_ALLOC out, const void *usr, uint32_t usrLen) {
662447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar    Context *rsc = RsdCpuReference::getTlsContext();
66331729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), usr, usrLen, nullptr);
664447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar}
665dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
66631729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAAULS(RS_TY_SCRIPT target, RS_TY_ALLOC in, RS_TY_ALLOC out,
66731729ad313f009d430255bfac8ef644db0c9215bYong Chen                              const void *usr, uint32_t usrLen, const RsScriptCall *call) {
668447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar    Context *rsc = RsdCpuReference::getTlsContext();
66931729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), usr, usrLen, call);
670447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar}
6711aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif
67287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
67387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
67487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
67587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines
67687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
67787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
67887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic float SC_GetDt() {
679709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
680709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
68187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    return rsrGetDt(rsc, sc);
68287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
68387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
684dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar// #if !defined(RS_COMPATIBILITY_LIB) && defined(__LP64__)
685dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef __LP64__
68687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t SC_Time(time_t *timer) {
687709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
688709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrTime(rsc, timer);
68987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
690d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#else
691d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murraystatic int SC_Time(int *timer) {
692d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
693d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return rsrTime(rsc, (long*)timer);
694d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
695d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#endif
69687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
69787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* SC_LocalTime(tm *local, time_t *timer) {
698709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
699709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrLocalTime(rsc, local, timer);
70087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
70187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
70287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeMillis() {
703709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
704709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeMillis(rsc);
70587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
70687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
70787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeNanos() {
708709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
709709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeNanos(rsc);
71087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
71187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
71287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
71387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines
71487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
71587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
716276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesstatic uint32_t SC_ToClient2(int cmdID, const void *data, uint32_t len) {
717709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
718709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClient(rsc, cmdID, data, len);
71987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
72087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
72187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient(int cmdID) {
722709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
72344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return rsrToClient(rsc, cmdID, (const void *)nullptr, 0);
72487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
72587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
726276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesstatic uint32_t SC_ToClientBlocking2(int cmdID, const void *data, uint32_t len) {
727709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
728709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClientBlocking(rsc, cmdID, data, len);
72987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
73087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
73187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) {
732709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
73344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return rsrToClientBlocking(rsc, cmdID, (const void *)nullptr, 0);
73487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
73587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
73687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
7375261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt1D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x) {
7385261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
7395261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
7405261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
7415261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7425261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
7435261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
7445261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
745cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
74644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7475261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7485261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
749d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
750d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
751d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
752cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
75344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
754d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
755d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
756d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
757d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
758cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
75944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
760d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7615261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7625261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7635261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
7645261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
7655261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x)];
7665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
7675261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7685261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt2D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y) {
7695261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
7705261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
7715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
7725261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7735261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
7745261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
7755261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
776cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
77744bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7785261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7795261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7805261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
7815261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
782cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
78344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7845261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7855261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
786d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
787d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
788d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
789cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
79044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
791d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
792d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
793d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
794d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
795cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
79644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
797d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7985261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7995261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8005261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
8015261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
8025261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
8035261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
8045261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
8055261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8065261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt3D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y, uint32_t z) {
8075261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
8085261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
8095261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
8105261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8115261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
8125261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
8135261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
814cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
81544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
8165261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
8175261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8185261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
8195261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
820cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
82144bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
8225261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
8235261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8245261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (z >= t->getLODDimZ(0)) {
8255261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Z %i of %i", z, t->getLODDimZ(0));
826cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
82744bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
8285261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
8295261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
830d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
831d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
832d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
833cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
83444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
835d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
836d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
837d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
838d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
839cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
84044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
841d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
8425261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
8435261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8445261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
8455261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
8465261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
8475261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
8485261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
8495261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
85031729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic const void * SC_GetElementAt1D(RS_TY_ALLOC a, uint32_t x) {
85131729ad313f009d430255bfac8ef644db0c9215bYong Chen    return ElementAt1D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x);
852d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
85331729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic const void * SC_GetElementAt2D(RS_TY_ALLOC a, uint32_t x, uint32_t y) {
85431729ad313f009d430255bfac8ef644db0c9215bYong Chen    return ElementAt2D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x, y);
855d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
85631729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic const void * SC_GetElementAt3D(RS_TY_ALLOC a, uint32_t x, uint32_t y, uint32_t z) {
85731729ad313f009d430255bfac8ef644db0c9215bYong Chen    return ElementAt3D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x, y, z);
858d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
859d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
86031729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_SetElementAt1D(RS_TY_ALLOC a, const void *ptr, uint32_t x) {
86131729ad313f009d430255bfac8ef644db0c9215bYong Chen    const Type *t = rsGetObjPtr(a)->getType();
862d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
86331729ad313f009d430255bfac8ef644db0c9215bYong Chen    void *tmp = ElementAt1D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x);
86444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (tmp != nullptr) {
865d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
866d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
867d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
86831729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_SetElementAt2D(RS_TY_ALLOC a, const void *ptr, uint32_t x, uint32_t y) {
86931729ad313f009d430255bfac8ef644db0c9215bYong Chen    const Type *t = rsGetObjPtr(a)->getType();
870d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
87131729ad313f009d430255bfac8ef644db0c9215bYong Chen    void *tmp = ElementAt2D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x, y);
87244bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (tmp != nullptr) {
873d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
874d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
875d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
87631729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_SetElementAt3D(RS_TY_ALLOC a, const void *ptr, uint32_t x, uint32_t y, uint32_t z) {
87731729ad313f009d430255bfac8ef644db0c9215bYong Chen    const Type *t = rsGetObjPtr(a)->getType();
878d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
87931729ad313f009d430255bfac8ef644db0c9215bYong Chen    void *tmp = ElementAt3D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x, y, z);
88044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (tmp != nullptr) {
881d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
882d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
883d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
884d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
8852544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarconst void *rsGetElementAt(::rs_allocation a, uint32_t x) {
88631729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_GetElementAt1D(RS_CAST(a), x);
887dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
888dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarconst void *rsGetElementAt(::rs_allocation a, uint32_t x, uint32_t y) {
89031729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_GetElementAt2D(RS_CAST(a), x, y);
891dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
892dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarconst void *rsGetElementAt(::rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
89431729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_GetElementAt3D(RS_CAST(a), x, y, z);
895dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
896dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8972544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsSetElementAt(::rs_allocation a, const void *ptr, uint32_t x) {
89831729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_SetElementAt1D(RS_CAST(a), ptr, x);
899dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
900dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
9012544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsSetElementAt(::rs_allocation a, const void *ptr, uint32_t x, uint32_t y) {
90231729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_SetElementAt2D(RS_CAST(a), ptr, x, y);
903dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
904dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
9052544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsSetElementAt(::rs_allocation a, const void *ptr, uint32_t x, uint32_t y, uint32_t z) {
90631729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_SetElementAt3D(RS_CAST(a), ptr, x, y, z);
907dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
908dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
909dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
91031729ad313f009d430255bfac8ef644db0c9215bYong Chen#define ELEMENT_AT(T, DT, VS)                                           \
91131729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_SetElementAt1_##T(RS_TY_ALLOC a, const T *val, uint32_t x) { \
91231729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt1D(rsGetObjPtr(a), DT, VS, x);               \
91344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) ((T *)r)[0] = *val;                           \
9145261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
9155261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
91631729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_SetElementAt2_##T(RS_TY_ALLOC a, const T * val, uint32_t x, uint32_t y) { \
91731729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt2D(rsGetObjPtr(a), DT, VS, x, y);            \
91844bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) ((T *)r)[0] = *val;                           \
9195261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
9205261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
92131729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_SetElementAt3_##T(RS_TY_ALLOC a, const T * val, uint32_t x, uint32_t y, uint32_t z) { \
92231729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt3D(rsGetObjPtr(a), DT, VS, x, y, z);         \
92344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) ((T *)r)[0] = *val;                           \
9245261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
9255261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
92631729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_GetElementAt1_##T(RS_TY_ALLOC a, T *val, uint32_t x) { \
92731729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt1D(rsGetObjPtr(a), DT, VS, x);               \
92831729ad313f009d430255bfac8ef644db0c9215bYong Chen        if (r != nullptr) *val = ((T *)r)[0];                           \
92931729ad313f009d430255bfac8ef644db0c9215bYong Chen        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
93031729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
93131729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_GetElementAt2_##T(RS_TY_ALLOC a, T *val, uint32_t x, uint32_t y) { \
93231729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt2D(rsGetObjPtr(a), DT, VS, x, y);            \
93331729ad313f009d430255bfac8ef644db0c9215bYong Chen        if (r != nullptr) *val = ((T *)r)[0];                           \
93431729ad313f009d430255bfac8ef644db0c9215bYong Chen        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
93531729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
93631729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_GetElementAt3_##T(RS_TY_ALLOC a, T *val, uint32_t x, uint32_t y, uint32_t z) { \
93731729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt3D(rsGetObjPtr(a), DT, VS, x, y, z);         \
93844bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) *val = ((T *)r)[0];                           \
93944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
9405261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
941dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const T *val, uint32_t x) { \
94231729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt1_##T(RS_CAST(a), val, x);                       \
94331729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
9442544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const T *val, uint32_t x, uint32_t y) { \
94531729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt2_##T(RS_CAST(a), val, x, y);                    \
94631729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
947dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const T *val, uint32_t x, uint32_t y, uint32_t z) { \
94831729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt3_##T(RS_CAST(a), val, x, y, z);                 \
94931729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
95031729ad313f009d430255bfac8ef644db0c9215bYong Chen    void rsGetElementAt_##T(::rs_allocation a, T *val, uint32_t x) {    \
95131729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt1_##T(RS_CAST(a), val, x);                       \
95231729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
9532544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, T *val, uint32_t x, uint32_t y) { \
95431729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt2_##T(RS_CAST(a), val, x, y);                    \
95531729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
9562544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, T *val, uint32_t x, uint32_t y, uint32_t z) { \
95731729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt3_##T(RS_CAST(a), val, x, y, z);                 \
95831729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
9595261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9605261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char, RS_TYPE_SIGNED_8, 1)
9615261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char2, RS_TYPE_SIGNED_8, 2)
9625261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char3, RS_TYPE_SIGNED_8, 3)
9635261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char4, RS_TYPE_SIGNED_8, 4)
9645261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar, RS_TYPE_UNSIGNED_8, 1)
9655261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar2, RS_TYPE_UNSIGNED_8, 2)
9665261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar3, RS_TYPE_UNSIGNED_8, 3)
9675261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar4, RS_TYPE_UNSIGNED_8, 4)
9685261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short, RS_TYPE_SIGNED_16, 1)
9695261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short2, RS_TYPE_SIGNED_16, 2)
9705261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short3, RS_TYPE_SIGNED_16, 3)
9715261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short4, RS_TYPE_SIGNED_16, 4)
9725261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort, RS_TYPE_UNSIGNED_16, 1)
9735261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort2, RS_TYPE_UNSIGNED_16, 2)
9745261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort3, RS_TYPE_UNSIGNED_16, 3)
9755261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort4, RS_TYPE_UNSIGNED_16, 4)
9765261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int, RS_TYPE_SIGNED_32, 1)
9775261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int2, RS_TYPE_SIGNED_32, 2)
9785261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int3, RS_TYPE_SIGNED_32, 3)
9795261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int4, RS_TYPE_SIGNED_32, 4)
9805261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint, RS_TYPE_UNSIGNED_32, 1)
9815261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint2, RS_TYPE_UNSIGNED_32, 2)
9825261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint3, RS_TYPE_UNSIGNED_32, 3)
9835261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint4, RS_TYPE_UNSIGNED_32, 4)
9845261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long, RS_TYPE_SIGNED_64, 1)
9855261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long2, RS_TYPE_SIGNED_64, 2)
9865261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long3, RS_TYPE_SIGNED_64, 3)
9875261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long4, RS_TYPE_SIGNED_64, 4)
9885261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong, RS_TYPE_UNSIGNED_64, 1)
9895261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong2, RS_TYPE_UNSIGNED_64, 2)
9905261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong3, RS_TYPE_UNSIGNED_64, 3)
9915261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong4, RS_TYPE_UNSIGNED_64, 4)
9925261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float, RS_TYPE_FLOAT_32, 1)
9935261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float2, RS_TYPE_FLOAT_32, 2)
9945261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float3, RS_TYPE_FLOAT_32, 3)
9955261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float4, RS_TYPE_FLOAT_32, 4)
9965261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double, RS_TYPE_FLOAT_64, 1)
9975261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double2, RS_TYPE_FLOAT_64, 2)
9985261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double3, RS_TYPE_FLOAT_64, 3)
9995261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double4, RS_TYPE_FLOAT_64, 4)
10005261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
10015261a5ea546ff358edd5aac7602fc4132434f481Jason Sams#undef ELEMENT_AT
100287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1003709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar#ifndef __LP64__
1004709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar/*
1005709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * We miss some symbols for rs{Get,Set}Element_long,ulong variants because 64
1006709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * bit integer values are 'long' in RS-land but might be 'long long' in the
1007709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * driver.  Define native_long* and native_ulong* types to be vectors of
1008709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * 'long' as seen by the driver and define overloaded versions of
1009709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * rsSetElementAt_* and rsGetElementAt_*.  This should get us the correct
1010709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * mangled names in the driver.
1011709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar */
1012709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1013709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef long native_long2 __attribute__((ext_vector_type(2)));
1014709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef long native_long3 __attribute__((ext_vector_type(3)));
1015709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef long native_long4 __attribute__((ext_vector_type(4)));
1016709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef unsigned long native_ulong2 __attribute__((ext_vector_type(2)));
1017709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef unsigned long native_ulong3 __attribute__((ext_vector_type(3)));
1018709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef unsigned long native_ulong4 __attribute__((ext_vector_type(4)));
1019709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1020709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar#define ELEMENT_AT_OVERLOADS(T, U) \
1021709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const U *val, uint32_t x) { \
102231729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt1_##T(RS_CAST(a), (T *) val, x); \
1023709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1024709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const U *val, uint32_t x, uint32_t y) { \
102531729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt2_##T(RS_CAST(a), (T *) val, x, y); \
1026709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1027709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const U *val, uint32_t x, uint32_t y, uint32_t z) { \
102831729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt3_##T(RS_CAST(a), (T *) val, x, y, z); \
1029709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1030709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, U *val, uint32_t x) { \
103131729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt1_##T(RS_CAST(a), (T *) val, x); \
1032709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1033709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, U *val, uint32_t x, uint32_t y) { \
103431729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt2_##T(RS_CAST(a), (T *) val, x, y); \
1035709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1036709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, U *val, uint32_t x, uint32_t y, uint32_t z) { \
103731729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt3_##T(RS_CAST(a), (T *) val, x, y, z); \
1038709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1039709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1040709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(long2, native_long2)
1041709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(long3, native_long3)
1042709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(long4, native_long4)
1043709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(ulong, unsigned long)
1044709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(ulong2, native_ulong2)
1045709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(ulong3, native_ulong3)
1046709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(ulong4, native_ulong4)
1047709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1048709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar// We also need variants of rs{Get,Set}ElementAt_long that take 'long long *' as
1049709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar// we might have this overloaded variant in old APKs.
1050709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(long, long long)
1051709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1052709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar#undef ELEMENT_AT_OVERLOADS
1053709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar#endif
1054709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1055709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
105687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
105787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Stub implementation
105887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
105987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
106087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// llvm name mangling ref
106187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//  <builtin-type> ::= v  # void
106287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= b  # bool
106387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= c  # char
106487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= a  # signed char
106587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= h  # unsigned char
106687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= s  # short
106787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= t  # unsigned short
106887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= i  # int
106987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= j  # unsigned int
107087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= l  # long
107187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= m  # unsigned long
107287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= x  # long long, __int64
107387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= y  # unsigned long long, __int64
107487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= f  # float
107587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= d  # double
107687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1077709a0978ae141198018ca9769f8d96292a8928e6Jason Samsstatic RsdCpuReference::CpuSymbol gSyms[] = {
10785261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    // Debug runtime
1079d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationj", (void *)&SC_GetElementAt1D, true },
1080d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationjj", (void *)&SC_GetElementAt2D, true },
1081d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationjjj", (void *)&SC_GetElementAt3D, true },
1082d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvj", (void *)&SC_SetElementAt1D, true },
1083d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvjj", (void *)&SC_SetElementAt2D, true },
1084d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvjjj", (void *)&SC_SetElementAt3D, true },
1085d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1086d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1087d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhj", (void *)&SC_GetElementAt1_uchar, true },
1088d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hj", (void *)&SC_GetElementAt1_uchar2, true },
1089d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hj", (void *)&SC_GetElementAt1_uchar3, true },
1090d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hj", (void *)&SC_GetElementAt1_uchar4, true },
1091d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhjj", (void *)&SC_GetElementAt2_uchar, true },
1092d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hjj", (void *)&SC_GetElementAt2_uchar2, true },
1093d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hjj", (void *)&SC_GetElementAt2_uchar3, true },
1094d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hjj", (void *)&SC_GetElementAt2_uchar4, true },
1095d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhjjj", (void *)&SC_GetElementAt3_uchar, true },
1096d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hjjj", (void *)&SC_GetElementAt3_uchar2, true },
1097d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hjjj", (void *)&SC_GetElementAt3_uchar3, true },
1098d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hjjj", (void *)&SC_GetElementAt3_uchar4, true },
1099d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1100d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcj", (void *)&SC_GetElementAt1_char, true },
1101d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cj", (void *)&SC_GetElementAt1_char2, true },
1102d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cj", (void *)&SC_GetElementAt1_char3, true },
1103d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cj", (void *)&SC_GetElementAt1_char4, true },
1104d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcjj", (void *)&SC_GetElementAt2_char, true },
1105d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cjj", (void *)&SC_GetElementAt2_char2, true },
1106d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cjj", (void *)&SC_GetElementAt2_char3, true },
1107d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cjj", (void *)&SC_GetElementAt2_char4, true },
1108d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcjjj", (void *)&SC_GetElementAt3_char, true },
1109d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cjjj", (void *)&SC_GetElementAt3_char2, true },
1110d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cjjj", (void *)&SC_GetElementAt3_char3, true },
1111d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cjjj", (void *)&SC_GetElementAt3_char4, true },
1112d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1113d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtj", (void *)&SC_GetElementAt1_ushort, true },
1114d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tj", (void *)&SC_GetElementAt1_ushort2, true },
1115d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tj", (void *)&SC_GetElementAt1_ushort3, true },
1116d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tj", (void *)&SC_GetElementAt1_ushort4, true },
1117d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtjj", (void *)&SC_GetElementAt2_ushort, true },
1118d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tjj", (void *)&SC_GetElementAt2_ushort2, true },
1119d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tjj", (void *)&SC_GetElementAt2_ushort3, true },
1120d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tjj", (void *)&SC_GetElementAt2_ushort4, true },
1121d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtjjj", (void *)&SC_GetElementAt3_ushort, true },
1122d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tjjj", (void *)&SC_GetElementAt3_ushort2, true },
1123d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tjjj", (void *)&SC_GetElementAt3_ushort3, true },
1124d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tjjj", (void *)&SC_GetElementAt3_ushort4, true },
1125d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1126d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsj", (void *)&SC_GetElementAt1_short, true },
1127d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sj", (void *)&SC_GetElementAt1_short2, true },
1128d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sj", (void *)&SC_GetElementAt1_short3, true },
1129d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sj", (void *)&SC_GetElementAt1_short4, true },
1130d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsjj", (void *)&SC_GetElementAt2_short, true },
1131d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sjj", (void *)&SC_GetElementAt2_short2, true },
1132d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sjj", (void *)&SC_GetElementAt2_short3, true },
1133d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sjj", (void *)&SC_GetElementAt2_short4, true },
1134d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsjjj", (void *)&SC_GetElementAt3_short, true },
1135d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sjjj", (void *)&SC_GetElementAt3_short2, true },
1136d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sjjj", (void *)&SC_GetElementAt3_short3, true },
1137d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sjjj", (void *)&SC_GetElementAt3_short4, true },
1138d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1139d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjj", (void *)&SC_GetElementAt1_uint, true },
1140d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jj", (void *)&SC_GetElementAt1_uint2, true },
1141d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jj", (void *)&SC_GetElementAt1_uint3, true },
1142d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jj", (void *)&SC_GetElementAt1_uint4, true },
1143d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjjj", (void *)&SC_GetElementAt2_uint, true },
1144d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jjj", (void *)&SC_GetElementAt2_uint2, true },
1145d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jjj", (void *)&SC_GetElementAt2_uint3, true },
1146d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jjj", (void *)&SC_GetElementAt2_uint4, true },
1147d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjjjj", (void *)&SC_GetElementAt3_uint, true },
1148d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jjjj", (void *)&SC_GetElementAt3_uint2, true },
1149d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jjjj", (void *)&SC_GetElementAt3_uint3, true },
1150d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jjjj", (void *)&SC_GetElementAt3_uint4, true },
1151d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1152d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPij", (void *)&SC_GetElementAt1_int, true },
1153d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ij", (void *)&SC_GetElementAt1_int2, true },
1154d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ij", (void *)&SC_GetElementAt1_int3, true },
1155d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ij", (void *)&SC_GetElementAt1_int4, true },
1156d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPijj", (void *)&SC_GetElementAt2_int, true },
1157d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ijj", (void *)&SC_GetElementAt2_int2, true },
1158d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ijj", (void *)&SC_GetElementAt2_int3, true },
1159d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ijj", (void *)&SC_GetElementAt2_int4, true },
1160d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPijjj", (void *)&SC_GetElementAt3_int, true },
1161d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ijjj", (void *)&SC_GetElementAt3_int2, true },
1162d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ijjj", (void *)&SC_GetElementAt3_int3, true },
1163d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ijjj", (void *)&SC_GetElementAt3_int4, true },
1164d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1165d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmj", (void *)&SC_GetElementAt1_ulong, true },
1166d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mj", (void *)&SC_GetElementAt1_ulong2, true },
1167d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mj", (void *)&SC_GetElementAt1_ulong3, true },
1168d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mj", (void *)&SC_GetElementAt1_ulong4, true },
1169d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmjj", (void *)&SC_GetElementAt2_ulong, true },
1170d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mjj", (void *)&SC_GetElementAt2_ulong2, true },
1171d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mjj", (void *)&SC_GetElementAt2_ulong3, true },
1172d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mjj", (void *)&SC_GetElementAt2_ulong4, true },
1173d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmjjj", (void *)&SC_GetElementAt3_ulong, true },
1174d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mjjj", (void *)&SC_GetElementAt3_ulong2, true },
1175d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mjjj", (void *)&SC_GetElementAt3_ulong3, true },
1176d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mjjj", (void *)&SC_GetElementAt3_ulong4, true },
1177d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1178d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPlj", (void *)&SC_GetElementAt1_long, true },
1179d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_lj", (void *)&SC_GetElementAt1_long2, true },
1180d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_lj", (void *)&SC_GetElementAt1_long3, true },
1181d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_lj", (void *)&SC_GetElementAt1_long4, true },
1182d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPljj", (void *)&SC_GetElementAt2_long, true },
1183d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_ljj", (void *)&SC_GetElementAt2_long2, true },
1184d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_ljj", (void *)&SC_GetElementAt2_long3, true },
1185d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_ljj", (void *)&SC_GetElementAt2_long4, true },
1186d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPljjj", (void *)&SC_GetElementAt3_long, true },
1187d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_ljjj", (void *)&SC_GetElementAt3_long2, true },
1188d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_ljjj", (void *)&SC_GetElementAt3_long3, true },
1189d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_ljjj", (void *)&SC_GetElementAt3_long4, true },
1190d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1191d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfj", (void *)&SC_GetElementAt1_float, true },
1192d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fj", (void *)&SC_GetElementAt1_float2, true },
1193d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fj", (void *)&SC_GetElementAt1_float3, true },
1194d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fj", (void *)&SC_GetElementAt1_float4, true },
1195d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfjj", (void *)&SC_GetElementAt2_float, true },
1196d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fjj", (void *)&SC_GetElementAt2_float2, true },
1197d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fjj", (void *)&SC_GetElementAt2_float3, true },
1198d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fjj", (void *)&SC_GetElementAt2_float4, true },
1199d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfjjj", (void *)&SC_GetElementAt3_float, true },
1200d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fjjj", (void *)&SC_GetElementAt3_float2, true },
1201d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fjjj", (void *)&SC_GetElementAt3_float3, true },
1202d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fjjj", (void *)&SC_GetElementAt3_float4, true },
1203d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1204d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdj", (void *)&SC_GetElementAt1_double, true },
1205d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_dj", (void *)&SC_GetElementAt1_double2, true },
1206d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_dj", (void *)&SC_GetElementAt1_double3, true },
1207d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_dj", (void *)&SC_GetElementAt1_double4, true },
1208d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdjj", (void *)&SC_GetElementAt2_double, true },
1209d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_djj", (void *)&SC_GetElementAt2_double2, true },
1210d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_djj", (void *)&SC_GetElementAt2_double3, true },
1211d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_djj", (void *)&SC_GetElementAt2_double4, true },
1212d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdjjj", (void *)&SC_GetElementAt3_double, true },
1213d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_djjj", (void *)&SC_GetElementAt3_double2, true },
1214d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_djjj", (void *)&SC_GetElementAt3_double3, true },
1215d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_djjj", (void *)&SC_GetElementAt3_double4, true },
1216d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1217d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1218d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1219d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhj", (void *)&SC_SetElementAt1_uchar, true },
1220d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hj", (void *)&SC_SetElementAt1_uchar2, true },
1221d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hj", (void *)&SC_SetElementAt1_uchar3, true },
1222d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hj", (void *)&SC_SetElementAt1_uchar4, true },
1223d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhjj", (void *)&SC_SetElementAt2_uchar, true },
1224d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hjj", (void *)&SC_SetElementAt2_uchar2, true },
1225d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hjj", (void *)&SC_SetElementAt2_uchar3, true },
1226d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hjj", (void *)&SC_SetElementAt2_uchar4, true },
1227d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhjjj", (void *)&SC_SetElementAt3_uchar, true },
1228d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hjjj", (void *)&SC_SetElementAt3_uchar2, true },
1229d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hjjj", (void *)&SC_SetElementAt3_uchar3, true },
1230d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hjjj", (void *)&SC_SetElementAt3_uchar4, true },
1231d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1232d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcj", (void *)&SC_SetElementAt1_char, true },
1233d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cj", (void *)&SC_SetElementAt1_char2, true },
1234d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cj", (void *)&SC_SetElementAt1_char3, true },
1235d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cj", (void *)&SC_SetElementAt1_char4, true },
1236d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcjj", (void *)&SC_SetElementAt2_char, true },
1237d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cjj", (void *)&SC_SetElementAt2_char2, true },
1238d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cjj", (void *)&SC_SetElementAt2_char3, true },
1239d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cjj", (void *)&SC_SetElementAt2_char4, true },
1240d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcjjj", (void *)&SC_SetElementAt3_char, true },
1241d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cjjj", (void *)&SC_SetElementAt3_char2, true },
1242d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cjjj", (void *)&SC_SetElementAt3_char3, true },
1243d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cjjj", (void *)&SC_SetElementAt3_char4, true },
1244d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
124540db7a2a344bf56c82c62f481a57f9ff59f93c91Stephen Hines    { "_Z21rsSetElementAt_ushort13rs_allocationPKtj", (void *)&SC_SetElementAt1_ushort, true },
1246d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tj", (void *)&SC_SetElementAt1_ushort2, true },
1247d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tj", (void *)&SC_SetElementAt1_ushort3, true },
1248d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tj", (void *)&SC_SetElementAt1_ushort4, true },
1249d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationPKtjj", (void *)&SC_SetElementAt2_ushort, true },
1250d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tjj", (void *)&SC_SetElementAt2_ushort2, true },
1251d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tjj", (void *)&SC_SetElementAt2_ushort3, true },
1252d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tjj", (void *)&SC_SetElementAt2_ushort4, true },
1253d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationPKtjjj", (void *)&SC_SetElementAt3_ushort, true },
1254d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tjjj", (void *)&SC_SetElementAt3_ushort2, true },
1255d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tjjj", (void *)&SC_SetElementAt3_ushort3, true },
1256d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tjjj", (void *)&SC_SetElementAt3_ushort4, true },
1257d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1258d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsj", (void *)&SC_SetElementAt1_short, true },
1259d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sj", (void *)&SC_SetElementAt1_short2, true },
1260d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sj", (void *)&SC_SetElementAt1_short3, true },
1261d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sj", (void *)&SC_SetElementAt1_short4, true },
1262d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsjj", (void *)&SC_SetElementAt2_short, true },
1263d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sjj", (void *)&SC_SetElementAt2_short2, true },
1264d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sjj", (void *)&SC_SetElementAt2_short3, true },
1265d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sjj", (void *)&SC_SetElementAt2_short4, true },
1266d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsjjj", (void *)&SC_SetElementAt3_short, true },
1267d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sjjj", (void *)&SC_SetElementAt3_short2, true },
1268d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sjjj", (void *)&SC_SetElementAt3_short3, true },
1269d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sjjj", (void *)&SC_SetElementAt3_short4, true },
1270d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1271d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjj", (void *)&SC_SetElementAt1_uint, true },
1272d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jj", (void *)&SC_SetElementAt1_uint2, true },
1273d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jj", (void *)&SC_SetElementAt1_uint3, true },
1274d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jj", (void *)&SC_SetElementAt1_uint4, true },
1275d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjjj", (void *)&SC_SetElementAt2_uint, true },
1276d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jjj", (void *)&SC_SetElementAt2_uint2, true },
1277d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jjj", (void *)&SC_SetElementAt2_uint3, true },
1278d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jjj", (void *)&SC_SetElementAt2_uint4, true },
1279d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjjjj", (void *)&SC_SetElementAt3_uint, true },
1280d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jjjj", (void *)&SC_SetElementAt3_uint2, true },
1281d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jjjj", (void *)&SC_SetElementAt3_uint3, true },
1282d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jjjj", (void *)&SC_SetElementAt3_uint4, true },
1283d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1284cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines    { "_Z18rsSetElementAt_int13rs_allocationPKij", (void *)&SC_SetElementAt1_int, true },
1285d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ij", (void *)&SC_SetElementAt1_int2, true },
1286d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ij", (void *)&SC_SetElementAt1_int3, true },
1287d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ij", (void *)&SC_SetElementAt1_int4, true },
1288d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsSetElementAt_int13rs_allocationPKijj", (void *)&SC_SetElementAt2_int, true },
1289d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ijj", (void *)&SC_SetElementAt2_int2, true },
1290d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ijj", (void *)&SC_SetElementAt2_int3, true },
1291d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ijj", (void *)&SC_SetElementAt2_int4, true },
1292d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsSetElementAt_int13rs_allocationPKijjj", (void *)&SC_SetElementAt3_int, true },
1293d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ijjj", (void *)&SC_SetElementAt3_int2, true },
1294d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ijjj", (void *)&SC_SetElementAt3_int3, true },
1295d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ijjj", (void *)&SC_SetElementAt3_int4, true },
1296d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1297cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKmj", (void *)&SC_SetElementAt1_ulong, true },
1298d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mj", (void *)&SC_SetElementAt1_ulong2, true },
1299d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mj", (void *)&SC_SetElementAt1_ulong3, true },
1300d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mj", (void *)&SC_SetElementAt1_ulong4, true },
1301d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationPKmjj", (void *)&SC_SetElementAt2_ulong, true },
1302d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mjj", (void *)&SC_SetElementAt2_ulong2, true },
1303d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mjj", (void *)&SC_SetElementAt2_ulong3, true },
1304d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mjj", (void *)&SC_SetElementAt2_ulong4, true },
1305d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationPKmjjj", (void *)&SC_SetElementAt3_ulong, true },
1306d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mjjj", (void *)&SC_SetElementAt3_ulong2, true },
1307d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mjjj", (void *)&SC_SetElementAt3_ulong3, true },
1308d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mjjj", (void *)&SC_SetElementAt3_ulong4, true },
1309d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1310cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    // Pre-21 compatibility path
1311cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKyj", (void *)&SC_SetElementAt1_ulong, true },
1312cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_yj", (void *)&SC_SetElementAt1_ulong2, true },
1313cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_yj", (void *)&SC_SetElementAt1_ulong3, true },
1314cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_yj", (void *)&SC_SetElementAt1_ulong4, true },
1315cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKyjj", (void *)&SC_SetElementAt2_ulong, true },
1316cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_yjj", (void *)&SC_SetElementAt2_ulong2, true },
1317cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_yjj", (void *)&SC_SetElementAt2_ulong3, true },
1318cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_yjj", (void *)&SC_SetElementAt2_ulong4, true },
1319cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKyjjj", (void *)&SC_SetElementAt3_ulong, true },
1320cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_yjjj", (void *)&SC_SetElementAt3_ulong2, true },
1321cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_yjjj", (void *)&SC_SetElementAt3_ulong3, true },
1322cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_yjjj", (void *)&SC_SetElementAt3_ulong4, true },
1323cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray
1324d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKlj", (void *)&SC_SetElementAt1_long, true },
1325d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_lj", (void *)&SC_SetElementAt1_long2, true },
1326d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_lj", (void *)&SC_SetElementAt1_long3, true },
1327d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_lj", (void *)&SC_SetElementAt1_long4, true },
1328d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKljj", (void *)&SC_SetElementAt2_long, true },
1329d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_ljj", (void *)&SC_SetElementAt2_long2, true },
1330d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_ljj", (void *)&SC_SetElementAt2_long3, true },
1331d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_ljj", (void *)&SC_SetElementAt2_long4, true },
1332d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKljjj", (void *)&SC_SetElementAt3_long, true },
1333d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_ljjj", (void *)&SC_SetElementAt3_long2, true },
1334d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_ljjj", (void *)&SC_SetElementAt3_long3, true },
1335d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_ljjj", (void *)&SC_SetElementAt3_long4, true },
1336d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1337cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    // Pre-21 compatibility path
1338cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z19rsSetElementAt_long13rs_allocationPKxj", (void *)&SC_SetElementAt1_long, true },
1339cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_xj", (void *)&SC_SetElementAt1_long2, true },
1340cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_xj", (void *)&SC_SetElementAt1_long3, true },
1341cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_xj", (void *)&SC_SetElementAt1_long4, true },
1342cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z19rsSetElementAt_long13rs_allocationPKxjj", (void *)&SC_SetElementAt2_long, true },
1343cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_xjj", (void *)&SC_SetElementAt2_long2, true },
1344cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_xjj", (void *)&SC_SetElementAt2_long3, true },
1345cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_xjj", (void *)&SC_SetElementAt2_long4, true },
1346cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z19rsSetElementAt_long13rs_allocationPKxjjj", (void *)&SC_SetElementAt3_long, true },
1347cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_xjjj", (void *)&SC_SetElementAt3_long2, true },
1348cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_xjjj", (void *)&SC_SetElementAt3_long3, true },
1349cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_xjjj", (void *)&SC_SetElementAt3_long4, true },
1350cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray
135140db7a2a344bf56c82c62f481a57f9ff59f93c91Stephen Hines    { "_Z20rsSetElementAt_float13rs_allocationPKfj", (void *)&SC_SetElementAt1_float, true },
1352d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fj", (void *)&SC_SetElementAt1_float2, true },
1353d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fj", (void *)&SC_SetElementAt1_float3, true },
1354d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fj", (void *)&SC_SetElementAt1_float4, true },
1355d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_float13rs_allocationPKfjj", (void *)&SC_SetElementAt2_float, true },
1356d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fjj", (void *)&SC_SetElementAt2_float2, true },
1357d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fjj", (void *)&SC_SetElementAt2_float3, true },
1358d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fjj", (void *)&SC_SetElementAt2_float4, true },
1359d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_float13rs_allocationPKfjjj", (void *)&SC_SetElementAt3_float, true },
1360d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fjjj", (void *)&SC_SetElementAt3_float2, true },
1361d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fjjj", (void *)&SC_SetElementAt3_float3, true },
1362d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fjjj", (void *)&SC_SetElementAt3_float4, true },
1363d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
136440db7a2a344bf56c82c62f481a57f9ff59f93c91Stephen Hines    { "_Z21rsSetElementAt_double13rs_allocationPKdj", (void *)&SC_SetElementAt1_double, true },
1365d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_dj", (void *)&SC_SetElementAt1_double2, true },
1366d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_dj", (void *)&SC_SetElementAt1_double3, true },
1367d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_dj", (void *)&SC_SetElementAt1_double4, true },
1368d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_double13rs_allocationPKdjj", (void *)&SC_SetElementAt2_double, true },
1369d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_djj", (void *)&SC_SetElementAt2_double2, true },
1370d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_djj", (void *)&SC_SetElementAt2_double3, true },
1371d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_djj", (void *)&SC_SetElementAt2_double4, true },
1372d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_double13rs_allocationPKdjjj", (void *)&SC_SetElementAt3_double, true },
1373d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_djjj", (void *)&SC_SetElementAt3_double2, true },
1374d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_djjj", (void *)&SC_SetElementAt3_double3, true },
1375d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_djjj", (void *)&SC_SetElementAt3_double4, true },
13765261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
13775261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
137887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Refcounting
1379444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
138087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true },
138187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true },
138287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true },
138487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true },
138587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true },
138787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true },
138887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true },
139087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true },
139187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
139287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true },
139387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true },
1394444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
1395444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject_ByRef, true },
1396444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject_ByRef, true },
1397444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1398444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject_ByRef, true },
1399444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject_ByRef, true },
1400444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1401444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject_ByRef, true },
1402444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject_ByRef, true },
1403444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1404444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject_ByRef, true },
1405444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject_ByRef, true },
1406444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1407444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject_ByRef, true },
1408444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject_ByRef, true },
1409444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
1410444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true },
1411444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true },
1412444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true },
1413444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true },
1414444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true },
141587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
14169e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z11rsSetObjectP7rs_pathS_", (void *)&SC_SetObject, true },
14179e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z13rsClearObjectP7rs_path", (void *)&SC_ClearObject, true },
14189e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z10rsIsObject7rs_path", (void *)&SC_IsObject, true },
14199e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
142087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true },
142187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true },
142287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true },
142387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
142487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true },
142587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true },
142687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true },
142787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
142887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true },
142987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true },
143087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true },
143187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
143287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true },
143387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true },
143487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true },
143587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
143687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true },
143787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true },
143887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true },
143987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
144087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true },
144187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true },
144287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true },
144387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
144487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Allocation ops
144587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true },
144687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false },
144787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false },
144874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false },
14490b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
145047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true },
1451b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z18rsAllocationIoSend13rs_allocation", (void *)&SC_AllocationIoSend, false },
1452b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z21rsAllocationIoReceive13rs_allocation", (void *)&SC_AllocationIoReceive, false },
14530b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
145474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false },
145574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false },
145687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
145787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Messaging
145887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
145987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClienti", (void *)&SC_ToClient, false },
146087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false },
146187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false },
146287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false },
14630b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
146487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false },
146587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false },
146687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false },
146787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false },
146887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false },
146987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false },
1470a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant19rs_program_fragmentj13rs_allocation", (void *)&SC_BindFragmentConstant, false },
1471a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant17rs_program_vertexj13rs_allocation", (void *)&SC_BindVertexConstant, false },
147287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
147387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false },
147487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false },
147587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false },
147687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
147787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false },
147887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
147987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false },
148087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
148187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false },
148287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false },
148387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
148487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
148587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false },
148687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false },
148787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false },
148887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false },
148987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
149087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false },
149187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false },
149287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false },
149387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false },
149487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
14959e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams    { "_Z11rsgDrawPath7rs_path", (void *)&SC_DrawPath, false },
14969e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
149787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false },
149887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false },
149987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
150087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false },
150187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false },
150287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false },
150387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false },
150487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
150587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false },
150687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false },
150787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
150887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false },
150987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false },
151087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false },
151187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false },
151287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false },
15131aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
151487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1515aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true },
1516aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true },
1517f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK14rs_script_call", (void *)&SC_ForEach_SAAUS, true },
15182f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray
15192f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray    //rsForEach with usrdata is not supported in 64-bit
15202f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray#ifndef __LP64__
1521aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true },
1522f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK14rs_script_call", (void *)&SC_ForEach_SAAULS, true },
15232f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray#endif
15241aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif // RS_COMPATIBILITY_LIB
152587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
152664147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#ifndef __LP64__
152787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // time
152887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z6rsTimePi", (void *)&SC_Time, true },
152987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true },
153064147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#else
153164147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    // time
153264147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    { "_Z6rsTimePl", (void *)&SC_Time, true },
153364147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    { "_Z11rsLocaltimeP5rs_tmPKl", (void *)&SC_LocalTime, true },
153464147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#endif
153587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true },
153687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true },
153787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z7rsGetDtv", (void*)&SC_GetDt, false },
153887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
153987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // misc
15400b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
154187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z5colorffff", (void *)&SC_Color, false },
154287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z9rsgFinishv", (void *)&SC_Finish, false },
15430b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
154487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
154544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    { nullptr, nullptr, false }
154687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams};
154787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
15482544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar#ifndef RS_COMPATIBILITY_LIB
15492544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15502544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainartypedef struct { unsigned int val; } rs_allocation_usage_type;
15512544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
1552709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainarvoid rsAllocationMarkDirty(::rs_allocation a) {
155331729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_AllocationSyncAll(RS_CAST(a));
1554709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar}
1555709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
15562544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgAllocationSyncAll(::rs_allocation a) {
155731729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_AllocationSyncAll(RS_CAST(a));
15582544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15592544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15602544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgAllocationSyncAll(::rs_allocation a,
15612544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          unsigned int usage) {
156231729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_AllocationSyncAll2(RS_CAST(a), (RsAllocationUsageType) usage);
15632544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15642544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgAllocationSyncAll(::rs_allocation a,
15652544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          rs_allocation_usage_type source) {
156631729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_AllocationSyncAll2(RS_CAST(a), (RsAllocationUsageType) source.val);
15672544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15682544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15692544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramFragment(::rs_program_fragment pf) {
15702544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramFragment((ProgramFragment *) pf.p);
15712544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15722544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15732544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramStore(::rs_program_store ps) {
15742544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramStore((ProgramStore *) ps.p);
15752544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15762544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15772544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramVertex(::rs_program_vertex pv) {
15782544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramVertex((ProgramVertex *) pv.p);
15792544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15802544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15812544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramRaster(::rs_program_raster pr) {
15822544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramRaster((ProgramRaster *) pr.p);
15832544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15842544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15852544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindSampler(::rs_program_fragment pf,
15862544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    uint32_t slot,
15872544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    ::rs_sampler s) {
15882544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindSampler((ProgramFragment *) pf.p, slot, (Sampler *) s.p);
15892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15912544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindTexture(::rs_program_fragment pf,
15922544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    uint32_t slot,
15932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    ::rs_allocation a) {
15942544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindTexture((ProgramFragment *) pf.p,
15952544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          slot,
15962544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          (Allocation *) a.p);
15972544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15982544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15992544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindConstant(::rs_program_fragment pf,
16002544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     uint32_t slot,
16012544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     ::rs_allocation a) {
16022544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFragmentConstant((ProgramFragment *) pf.p,
16032544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                   slot,
16042544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                   (Allocation *) a.p);
16052544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16062544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16072544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindConstant(::rs_program_vertex pv,
16082544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     uint32_t slot,
16092544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     ::rs_allocation a) {
16102544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindVertexConstant((ProgramVertex *) pv.p,
16112544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                 slot,
16122544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                 (Allocation *) a.p);
16132544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16142544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16152544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexLoadProjectionMatrix(const rs_matrix4x4 *m) {
16162544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpLoadProjectionMatrix((const rsc_Matrix *) m);
16172544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16182544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16192544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexLoadModelMatrix(const rs_matrix4x4 *m) {
16202544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpLoadModelMatrix((const rsc_Matrix *) m);
16212544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16222544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16232544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexLoadTextureMatrix(const rs_matrix4x4 *m) {
16242544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpLoadTextureMatrix((const rsc_Matrix *) m);
16252544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16262544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16272544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexGetProjectionMatrix(rs_matrix4x4 *m) {
16282544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpGetProjectionMatrix((rsc_Matrix *) m);
16292544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16302544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16312544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramFragmentConstantColor(::rs_program_fragment pf,
16322544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                     float r, float g,
16332544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                     float b, float a) {
16342544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16352544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_PfConstantColor((ProgramFragment *) pf.p, r, g, b, a);
16362544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16372544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16382544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainaruint32_t rsgGetWidth(void) {
16392544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_GetWidth();
16402544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16412544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16422544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainaruint32_t rsgGetHeight(void) {
16432544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_GetHeight();
16442544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16452544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16462544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawRect(float x1, float y1, float x2, float y2, float z) {
16472544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawRect(x1, y1, x2, y2, z);
16482544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16492544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16502544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawQuad(float x1, float y1, float z1,
16512544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                 float x2, float y2, float z2,
16522544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                 float x3, float y3, float z3,
16532544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                 float x4, float y4, float z4) {
16542544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16552544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    SC_DrawQuad(x1, y1, z1,
16562544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                x2, y2, z2,
16572544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                x3, y3, z3,
16582544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                x4, y4, z4);
16592544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16602544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16612544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
16622544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          float x2, float y2, float z2, float u2, float v2,
16632544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          float x3, float y3, float z3, float u3, float v3,
16642544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          float x4, float y4, float z4, float u4, float v4) {
16652544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16662544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return rsgDrawQuadTexCoords(x1, y1, z1, u1, v1,
16672544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                x2, y2, z2, u2, v2,
16682544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                x3, y3, z3, u3, v3,
16692544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                x4, y4, z4, u4, v4);
16702544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16712544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16722544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawSpriteScreenspace(float x, float y, float z, float w, float h) {
16732544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawSpriteScreenspace(x, y, z, w, h);
16742544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16752544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16762544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawMesh(::rs_mesh ism) {
16772544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawMesh((Mesh *) ism.p);
16782544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16792544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16802544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawMesh(::rs_mesh ism, uint primitiveIndex) {
16812544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawMeshPrimitive((Mesh *) ism.p, primitiveIndex);
16822544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16832544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16842544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawMesh(::rs_mesh ism, uint primitiveIndex, uint start, uint len) {
16852544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawMeshPrimitiveRange((Mesh *) ism.p, primitiveIndex, start, len);
16862544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16872544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16882544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid  rsgMeshComputeBoundingBox(::rs_mesh mesh,
16892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                float *minX, float *minY, float *minZ,
16902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                float *maxX, float *maxY, float *maxZ) {
16912544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16922544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_MeshComputeBoundingBox((Mesh *) mesh.p,
16932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                minX, minY, minZ,
16942544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                maxX, maxY, maxZ);
16952544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16962544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16972544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawPath(::rs_path p) {
16982544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawPath((Path *) p.p);
16992544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17002544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17012544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearColor(float r, float g, float b, float a) {
17022544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearColor(r, g, b, a);
17032544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17042544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17052544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearDepth(float value) {
17062544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearDepth(value);
17072544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17082544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17092544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawText(const char *text, int x, int y) {
17102544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawText(text, x, y);
17112544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17122544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17132544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawText(::rs_allocation a, int x, int y) {
17142544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawTextAlloc((Allocation *) a.p, x, y);
17152544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17162544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17172544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgMeasureText(const char *text, int *left, int *right,
17182544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    int *top, int *bottom) {
17192544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_MeasureText(text, left, right, top, bottom);
17202544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17212544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17222544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgMeasureText(::rs_allocation a, int *left, int *right,
17232544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    int *top, int *bottom) {
17242544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_MeasureTextAlloc((Allocation *) a.p, left, right, top, bottom);
17252544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17262544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17272544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindFont(::rs_font font) {
17282544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFont((Font *) font.p);
17292544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17302544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17312544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgFontColor(float r, float g, float b, float a) {
17322544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_FontColor(r, g, b, a);
17332544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17342544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17352544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindColorTarget(::rs_allocation a, uint slot) {
17362544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFrameBufferObjectColorTarget((Allocation *) a.p, slot);
17372544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17382544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17392544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindDepthTarget(::rs_allocation a) {
17402544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFrameBufferObjectDepthTarget((Allocation *) a.p);
17412544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17422544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17432544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearColorTarget(uint slot) {
17442544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearFrameBufferObjectColorTarget(slot);
17452544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17462544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17472544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearDepthTarget(void) {
17482544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearFrameBufferObjectDepthTarget(nullptr, nullptr);
17492544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17502544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17512544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearAllRenderTargets(void) {
17522544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearFrameBufferObjectTargets(nullptr, nullptr);
17532544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17542544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17552544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid color(float r, float g, float b, float a) {
17562544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_Color(r, g, b, a);
17572544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17582544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17592544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgFinish(void) {
17602544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_Finish();
17612544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17622544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17632544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar#endif
17642544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
1765d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray//////////////////////////////////////////////////////////////////////////////
1766d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray// Compatibility Library entry points
1767d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray//////////////////////////////////////////////////////////////////////////////
1768d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1769dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifndef __LP64__
1770dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#define IS_CLEAR_SET_OBJ(t, u, v) \
1771f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    bool rsIsObject(t src) { \
177244bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return src.p != nullptr; \
1773f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    } \
1774d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    void __attribute__((overloadable)) rsClearObject(t *dst) { \
1775f29edf80510d483b8663e9d8b859959e37361aeeJason Sams        return SC_ClearObject(reinterpret_cast<rs_object_base *>(dst)); \
1776d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    } \
1777d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    void __attribute__((overloadable)) rsSetObject(t *dst, t src) { \
1778dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        android::renderscript::rs_object_base cast; \
1779dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        cast.p = (ObjectBase *) src.p; \
1780dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return SC_SetObject(reinterpret_cast<rs_object_base *>(dst), cast);\
1781d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    }
1782dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1783dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#define IS_CLEAR_SET_OBJ(t, u, v) \
1784dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    extern "C" { bool u(t* src) { \
1785dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return src->p != nullptr; \
1786dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } }\
1787dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    void __attribute__((overloadable)) rsClearObject(t *dst) { \
1788dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return SC_ClearObject(reinterpret_cast<rs_object_base *>(dst)); \
1789dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } \
1790dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    extern "C" {\
1791dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar      void v (t *dst, t *src) { \
1792dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return SC_SetObject_ByRef(reinterpret_cast<rs_object_base *>(dst),\
1793dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                  reinterpret_cast<rs_object_base *>(src));\
1794dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } }
1795dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1796dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1797dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_element, _Z10rsIsObject10rs_element, _Z11rsSetObjectP10rs_elementS_)
1798dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_type, _Z10rsIsObject7rs_type, _Z11rsSetObjectP7rs_typeS_)
1799dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_allocation, _Z10rsIsObject13rs_allocation, _Z11rsSetObjectP13rs_allocationS_)
1800dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_sampler, _Z10rsIsObject10rs_sampler, _Z11rsSetObjectP10rs_samplerS_)
1801dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_script, _Z10rsIsObject9rs_script, _Z11rsSetObjectP9rs_scriptS_)
1802dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
18032544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_path, _Z10rsIsObject7rs_path, _Z11rsSetObjectP7rs_pathS_)
18042544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_mesh, _Z10rsIsObject7rs_mesh, _Z11rsSetObjectP7rs_meshS_)
18052544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_fragment, _Z10rsIsObject19rs_program_fragment, _Z11rsSetObjectP19rs_program_fragmentS_)
18062544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_vertex, _Z10rsIsObject17rs_program_vertex, _Z11rsSetObjectP17rs_program_vertexS_)
18072544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_raster, _Z10rsIsObject17rs_program_raster, _Z11rsSetObjectP17rs_program_rasterS_)
18082544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_store, _Z10rsIsObject16rs_program_store, _Z11rsSetObjectP16rs_program_storeS_)
18092544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_font, _Z10rsIsObject7rs_font, _Z11rsSetObjectP7rs_fontS_)
18102544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
1811d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1812f827cadde659212b266b9635128c98515a7dcb01Stephen Hines#undef IS_CLEAR_SET_OBJ
1813d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1814dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef RS_COMPATIBILITY_LIB
181547211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murraystatic const Allocation * SC_GetAllocation(const void *ptr) {
181647211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
181747211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    const Script *sc = RsdCpuReference::getTlsScript();
181847211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    return rsdScriptGetAllocationForPointer(rsc, sc, ptr);
181947211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray}
182047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray
1821d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayconst Allocation * rsGetAllocation(const void *ptr) {
1822d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return SC_GetAllocation(ptr);
1823d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1824d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1825dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1826dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarconst android::renderscript::rs_allocation rsGetAllocation(const void *ptr) {
1827dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef __i386__
1828dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    android::renderscript::rs_allocation obj;
1829dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    obj.p = (Allocation *) SC_GetAllocation(ptr);
1830dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return obj;
1831dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1832dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_GetAllocation(ptr);
1833dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1834dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
1835dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1836dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1837dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1838a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsAllocationIoSend(::rs_allocation a) {
183931729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_AllocationIoSend(RS_CAST(a));
18407a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
18417a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
1842a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsAllocationIoReceive(::rs_allocation a) {
184331729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_AllocationIoReceive(RS_CAST(a));
18447a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
18457a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
18467a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
18477a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinesvoid __attribute__((overloadable)) rsAllocationCopy1DRange(
1848a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation dstAlloc,
18497a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstOff, uint32_t dstMip, uint32_t count,
1850a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation srcAlloc,
18517a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcOff, uint32_t srcMip) {
185231729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_AllocationCopy1DRange(RS_CAST(dstAlloc), dstOff, dstMip, count,
185331729ad313f009d430255bfac8ef644db0c9215bYong Chen                             RS_CAST(srcAlloc), srcOff, srcMip);
18547a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
18557a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
18567a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinesvoid __attribute__((overloadable)) rsAllocationCopy2DRange(
1857a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation dstAlloc,
18587a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstXoff, uint32_t dstYoff,
18597a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstMip, rs_allocation_cubemap_face dstFace,
18607a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t width, uint32_t height,
1861a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation srcAlloc,
18627a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcXoff, uint32_t srcYoff,
18637a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcMip, rs_allocation_cubemap_face srcFace) {
186431729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_AllocationCopy2DRange(RS_CAST(dstAlloc), dstXoff, dstYoff,
18657a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines                             dstMip, dstFace, width, height,
186631729ad313f009d430255bfac8ef644db0c9215bYong Chen                             RS_CAST(srcAlloc), srcXoff, srcYoff,
18677a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines                             srcMip, srcFace);
18687a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
18697a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
1870a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1871a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1872a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1873d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const void *usr,
1874d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const rs_script_call *call) {
187531729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAAUS(RS_CAST(script), RS_CAST(in), RS_CAST(out), usr, (RsScriptCall*)call);
1876d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1877d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1878a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1879a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1880dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                             ::rs_allocation out,
1881dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                             const void *usr) {
188231729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAAU(RS_CAST(script), RS_CAST(in), RS_CAST(out), usr);
1883dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
1884dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1885dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1886dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                             ::rs_allocation in,
1887a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out) {
188831729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAA(RS_CAST(script), RS_CAST(in), RS_CAST(out));
1889276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1890276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1891447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar#ifndef __LP64__
1892a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1893a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1894a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1895276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines                                             const void *usr,
1896276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines                                             uint32_t usrLen) {
189731729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAAUL(RS_CAST(script), RS_CAST(in), RS_CAST(out), usr, usrLen);
1898276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1899276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1900a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1901a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1902a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1903d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const void *usr,
1904d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             uint32_t usrLen,
1905d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const rs_script_call *call) {
190631729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAAULS(RS_CAST(script), RS_CAST(in), RS_CAST(out), usr, usrLen, (RsScriptCall*)call);
1907d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1908447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar#endif
1909d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1910dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar// #if defined(RS_COMPATIBILITY_LIB) || !defined(__LP64__)
1911dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifndef __LP64__
1912d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayint rsTime(int *timer) {
1913d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return SC_Time(timer);
1914d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1915140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines
1916140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hinesrs_tm* rsLocaltime(rs_tm* local, const int *timer) {
1917140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines    return (rs_tm*)(SC_LocalTime((tm*)local, (time_t *)timer));
1918140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines}
1919dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1920dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainartime_t rsTime(time_t * timer) {
1921dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_Time(timer);
1922dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
1923d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1924dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarrs_tm* rsLocaltime(rs_tm* local, const time_t *timer) {
1925dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return (rs_tm*)(SC_LocalTime((tm*)local, (time_t *)timer));
1926d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1927140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines#endif // RS_COMPATIBILITY_LIB
1928d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1929d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayint64_t rsUptimeMillis() {
1930d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1931d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return rsrUptimeMillis(rsc);
1932d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1933d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1934cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hinesint64_t rsUptimeNanos() {
1935cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines    return SC_UptimeNanos();
1936cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines}
1937cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines
1938cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hinesfloat rsGetDt() {
1939cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines    return SC_GetDt();
1940cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines}
1941cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines
1942276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClient(int cmdID) {
1943276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClient(cmdID);
1944276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1945276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1946276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClient(int cmdID, const void *data, uint32_t len) {
1947276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClient2(cmdID, data, len);
1948d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1949d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
19500b575de8ed0b628d84d256f5846500b0385979bdTim Murrayuint32_t rsSendToClientBlocking(int cmdID) {
1951276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClientBlocking(cmdID);
1952276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1953276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1954276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClientBlocking(int cmdID, const void *data, uint32_t len) {
1955276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClientBlocking2(cmdID, data, len);
19560b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19570b575de8ed0b628d84d256f5846500b0385979bdTim Murray
19580b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF(const char *s, float f) {
19590b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %f, 0x%08x", s, f, *((int *) (&f)));
19600b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19610b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv2(const char *s, float f1, float f2) {
19620b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f}", s, f1, f2);
19630b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19640b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv3(const char *s, float f1, float f2, float f3) {
19650b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f}", s, f1, f2, f3);
19660b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19670b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) {
19680b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4);
19690b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19700b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF2(const char *s, float2 f) {
19710b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f}", s, f.x, f.y);
19720b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19730b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF3(const char *s, float3 f) {
19740b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f}", s, f.x, f.y, f.z);
19750b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19760b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF4(const char *s, float4 f) {
19770b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f}", s, f.x, f.y, f.z, f.w);
19780b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19790b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugD(const char *s, double d) {
19800b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d)));
19810b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19820b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM4v4(const char *s, const float *f) {
19830b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]);
19840b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]);
19850b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]);
19860b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]);
19870b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19880b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM3v3(const char *s, const float *f) {
19890b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]);
19900b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f", s, f[1], f[4], f[7]);
19910b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f}",s, f[2], f[5], f[8]);
19920b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19930b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM2v2(const char *s, const float *f) {
19940b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f", s, f[0], f[2]);
19950b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f}",s, f[1], f[3]);
19960b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19970b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI8(const char *s, char c) {
19980b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hhd  0x%hhx", s, c, (unsigned char)c);
19990b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20000b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC2(const char *s, char2 c) {
20010b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhd, %hhd}  0x%hhx 0x%hhx", s, c.x, c.y, (unsigned char)c.x, (unsigned char)c.y);
20020b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20030b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC3(const char *s, char3 c) {
20040b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20050b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20060b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC4(const char *s, char4 c) {
20070b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20080b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20090b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU8(const char *s, unsigned char c) {
20100b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hhu  0x%hhx", s, c, c);
20110b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20120b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC2(const char *s, uchar2 c) {
20130b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhu, %hhu}  0x%hhx 0x%hhx", s, c.x, c.y, c.x, c.y);
20140b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20150b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC3(const char *s, uchar3 c) {
20160b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20170b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20180b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC4(const char *s, uchar4 c) {
20190b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20200b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20210b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI16(const char *s, short c) {
20220b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hd  0x%hx", s, c, c);
20230b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20240b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS2(const char *s, short2 c) {
20250b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hd, %hd}  0x%hx 0x%hx", s, c.x, c.y, c.x, c.y);
20260b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20270b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS3(const char *s, short3 c) {
20280b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20290b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20300b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS4(const char *s, short4 c) {
20310b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20320b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20330b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU16(const char *s, unsigned short c) {
20340b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hu  0x%hx", s, c, c);
20350b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20360b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS2(const char *s, ushort2 c) {
20370b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hu, %hu}  0x%hx 0x%hx", s, c.x, c.y, c.x, c.y);
20380b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20390b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS3(const char *s, ushort3 c) {
20400b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20410b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20420b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS4(const char *s, ushort4 c) {
20430b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20440b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20450b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI32(const char *s, int32_t i) {
20460b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %d  0x%x", s, i, i);
20470b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20480b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI2(const char *s, int2 i) {
20490b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%d, %d}  0x%x 0x%x", s, i.x, i.y, i.x, i.y);
20500b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20510b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI3(const char *s, int3 i) {
20520b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20530b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20540b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI4(const char *s, int4 i) {
20550b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20560b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20570b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU32(const char *s, uint32_t i) {
20580b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %u  0x%x", s, i, i);
20590b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20600b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI2(const char *s, uint2 i) {
20610b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%u, %u}  0x%x 0x%x", s, i.x, i.y, i.x, i.y);
20620b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20630b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI3(const char *s, uint3 i) {
20640b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20650b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20660b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI4(const char *s, uint4 i) {
20670b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20680b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
2069127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2070127d51c1193f4055795da967d47a13bedd3cb951Miao Wangtemplate <typename T>
2071127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic inline long long LL(const T &x) {
2072127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    return static_cast<long long>(x);
2073127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
2074127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2075127d51c1193f4055795da967d47a13bedd3cb951Miao Wangtemplate <typename T>
2076127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic inline unsigned long long LLu(const T &x) {
2077127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    return static_cast<unsigned long long>(x);
2078127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
2079127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2080dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_debugLL64(const char *s, long long ll) {
2081dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    ALOGD("%s %lld  0x%llx", s, LL(ll), LL(ll));
2082dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
2083dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
20840b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL2(const char *s, long2 ll) {
2085127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%lld, %lld}  0x%llx 0x%llx", s, LL(ll.x), LL(ll.y), LL(ll.x), LL(ll.y));
20860b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20870b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL3(const char *s, long3 ll) {
2088127d51c1193f4055795da967d47a13bedd3cb951Miao 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));
20890b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20900b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL4(const char *s, long4 ll) {
2091127d51c1193f4055795da967d47a13bedd3cb951Miao 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));
20920b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20930b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugULL64(const char *s, unsigned long long ll) {
20940b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %llu  0x%llx", s, ll, ll);
20950b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20960b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL2(const char *s, ulong2 ll) {
2097127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%llu, %llu}  0x%llx 0x%llx", s, LLu(ll.x), LLu(ll.y), LLu(ll.x), LLu(ll.y));
20980b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20990b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL3(const char *s, ulong3 ll) {
2100127d51c1193f4055795da967d47a13bedd3cb951Miao 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));
21010b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21020b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL4(const char *s, ulong4 ll) {
2103127d51c1193f4055795da967d47a13bedd3cb951Miao 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));
21040b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
2105127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
21060b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugP(const char *s, const void *p) {
21070b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %p", s, p);
21080b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21090b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21100b575de8ed0b628d84d256f5846500b0385979bdTim Murray// TODO: allocation ops, messaging, time
21110b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21120b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f) {
21130b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugF(s, f);
21140b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21150b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21160b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2) {
21170b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv2(s, f1, f2);
21180b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21190b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21200b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2, float f3) {
21210b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv3(s, f1, f2, f3);
21220b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21230b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21240b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2, float f3, float f4) {
21250b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv4(s, f1, f2, f3, f4);
21260b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21270b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2128b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float2 *f) {
2129b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF2(s, *f);
21300b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21310b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2132b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float3 *f) {
2133b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF3(s, *f);
21340b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21350b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2136b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float4 *f) {
2137b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF4(s, *f);
21380b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21390b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21400b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, double d) {
21410b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugD(s, d);
21420b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21430b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2144b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix4x4 *m) {
21450b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFM4v4(s, (float *) m);
21460b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21470b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2148b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix3x3 *m) {
2149d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    SC_debugFM3v3(s, (float *) m);
21500b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21510b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2152b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix2x2 *m) {
2153d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    SC_debugFM2v2(s, (float *) m);
21540b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21550b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21560b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, char c) {
21570b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI8(s, c);
21580b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21590b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2160b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char2 *c) {
2161b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC2(s, *c);
21620b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21630b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2164b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char3 *c) {
2165b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC3(s, *c);
21660b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21670b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2168b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char4 *c) {
2169b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC4(s, *c);
21700b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21710b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21720b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned char c) {
21730b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU8(s, c);
21740b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21750b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2176b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar2 *c) {
2177b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC2(s, *c);
21780b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21790b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2180b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar3 *c) {
2181b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC3(s, *c);
21820b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21830b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2184b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar4 *c) {
2185b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC4(s, *c);
21860b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21870b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21880b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, short c) {
21890b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI16(s, c);
21900b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21910b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2192b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short2 *c) {
2193b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS2(s, *c);
21940b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21950b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2196b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short3 *c) {
2197b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS3(s, *c);
21980b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21990b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2200b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short4 *c) {
2201b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS4(s, *c);
22020b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22030b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22040b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned short c) {
22050b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU16(s, c);
22060b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22070b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2208b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort2 *c) {
2209b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS2(s, *c);
22100b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22110b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2212b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort3 *c) {
2213b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS3(s, *c);
22140b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22150b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2216b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort4 *c) {
2217b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS4(s, *c);
22180b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22190b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22200b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, int c) {
22210b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI32(s, c);
22220b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22230b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2224b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int2 *c) {
2225b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI2(s, *c);
22260b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22270b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2228b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int3 *c) {
2229b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI3(s, *c);
22300b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22310b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2232b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int4 *c) {
2233b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI4(s, *c);
22340b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22350b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22360b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned int c) {
22370b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU32(s, c);
22380b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22390b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2240b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint2 *c) {
2241b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI2(s, *c);
22420b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22430b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2244b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint3 *c) {
2245b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI3(s, *c);
22460b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22470b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2248b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint4 *c) {
2249b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI4(s, *c);
22500b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22510b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22520b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, long c) {
22530b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugLL64(s, c);
22540b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22550b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22560b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, long long c) {
22570b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugLL64(s, c);
22580b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22590b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2260b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long2 *c) {
2261b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL2(s, *c);
22620b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22630b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2264b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long3 *c) {
2265b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL3(s, *c);
22660b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22670b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2268b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long4 *c) {
2269b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL4(s, *c);
22700b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22710b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22720b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned long c) {
22730b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugULL64(s, c);
22740b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22750b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22760b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned long long c) {
22770b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugULL64(s, c);
22780b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22790b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2280b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong2 *c) {
2281b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL2(s, *c);
22820b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22830b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2284b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong3 *c) {
2285b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL3(s, *c);
22860b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22870b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2288b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong4 *c) {
2289b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL4(s, *c);
22900b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22910b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2292a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// FIXME: We need to export these function signatures for the compatibility
2293a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// library. The C++ name mangling that LLVM uses for ext_vector_type requires
2294a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// different versions for "long" vs. "long long". Note that the called
2295a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// functions are still using the appropriate 64-bit sizes.
2296127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2297127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#ifndef __LP64__
2298a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l2 __attribute__((ext_vector_type(2)));
2299a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l3 __attribute__((ext_vector_type(3)));
2300a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l4 __attribute__((ext_vector_type(4)));
2301a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul2 __attribute__((ext_vector_type(2)));
2302a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul3 __attribute__((ext_vector_type(3)));
2303a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul4 __attribute__((ext_vector_type(4)));
2304a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2305a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l2 *c) {
2306a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL2(s, *(const long2 *)c);
2307a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2308a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2309a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l3 *c) {
2310a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL3(s, *(const long3 *)c);
2311a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2312a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2313a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l4 *c) {
2314a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL4(s, *(const long4 *)c);
2315a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2316a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2317a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul2 *c) {
2318a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL2(s, *(const ulong2 *)c);
2319a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2320a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2321a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul3 *c) {
2322a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL3(s, *(const ulong3 *)c);
2323a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2324a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2325a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul4 *c) {
2326a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL4(s, *(const ulong4 *)c);
2327a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2328127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#endif
2329a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
23309f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const long2 c) {
23319f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugL2(s, c);
23329f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23339f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23349f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const long3 c) {
23359f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugL3(s, c);
23369f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23379f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23389f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const long4 c) {
23399f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugL4(s, c);
23409f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23419f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23429f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const ulong2 c) {
23439f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugUL2(s, c);
23449f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23459f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23469f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const ulong3 c) {
23479f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugUL3(s, c);
23489f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23499f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23509f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const ulong4 c) {
23519f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugUL4(s, c);
23529f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23539f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23549f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23550b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, const void *p) {
23560b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugP(s, p);
23570b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
235887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2359709a0978ae141198018ca9769f8d96292a8928e6Jason Samsextern const RsdCpuReference::CpuSymbol * rsdLookupRuntimeStub(Context * pContext, char const* name) {
236087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    ScriptC *s = (ScriptC *)pContext;
2361709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const RsdCpuReference::CpuSymbol *syms = gSyms;
236244bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    const RsdCpuReference::CpuSymbol *sym = nullptr;
236387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
236487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    if (!sym) {
2365709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        while (syms->fnPtr) {
2366709a0978ae141198018ca9769f8d96292a8928e6Jason Sams            if (!strcmp(syms->name, name)) {
2367709a0978ae141198018ca9769f8d96292a8928e6Jason Sams                return syms;
236887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            }
236987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            syms++;
237087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams        }
237187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    }
237287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
237344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return nullptr;
237487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
2375