rsdRuntimeStubs.cpp revision 6ba05171a84a7444df01b9f81a7233b17e1f120a
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
27b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams#include "rsdAllocation.h"
28414a46166126da6864258bd25ff183f9a3c6261dStephen Hines#include "rsdShaderCache.h"
29414a46166126da6864258bd25ff183f9a3c6261dStephen Hines#include "rsdVertexArray.h"
3087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include <time.h>
3287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android;
3487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsusing namespace android::renderscript;
3587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float2 __attribute__((ext_vector_type(2)));
37a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float3 __attribute__((ext_vector_type(3)));
38a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef float float4 __attribute__((ext_vector_type(4)));
395261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef double double2 __attribute__((ext_vector_type(2)));
405261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef double double3 __attribute__((ext_vector_type(3)));
415261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef double double4 __attribute__((ext_vector_type(4)));
42a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char2 __attribute__((ext_vector_type(2)));
43a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char3 __attribute__((ext_vector_type(3)));
44a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef char char4 __attribute__((ext_vector_type(4)));
45a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar2 __attribute__((ext_vector_type(2)));
46a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar3 __attribute__((ext_vector_type(3)));
47a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef unsigned char uchar4 __attribute__((ext_vector_type(4)));
48d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int16_t short2 __attribute__((ext_vector_type(2)));
49d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int16_t short3 __attribute__((ext_vector_type(3)));
50d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int16_t short4 __attribute__((ext_vector_type(4)));
51d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint16_t ushort2 __attribute__((ext_vector_type(2)));
52d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint16_t ushort3 __attribute__((ext_vector_type(3)));
53d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint16_t ushort4 __attribute__((ext_vector_type(4)));
54a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int2 __attribute__((ext_vector_type(2)));
55a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int3 __attribute__((ext_vector_type(3)));
56a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef int32_t int4 __attribute__((ext_vector_type(4)));
57a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint2 __attribute__((ext_vector_type(2)));
58a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint3 __attribute__((ext_vector_type(3)));
59a1dd74c5ce4db0991020a4836be24fc35af4f301Rajeev Sharmatypedef uint32_t uint4 __attribute__((ext_vector_type(4)));
60d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int64_t long2 __attribute__((ext_vector_type(2)));
61d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int64_t long3 __attribute__((ext_vector_type(3)));
62d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef int64_t long4 __attribute__((ext_vector_type(4)));
63d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint64_t ulong2 __attribute__((ext_vector_type(2)));
64d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint64_t ulong3 __attribute__((ext_vector_type(3)));
65d8b8f8a16415496acc9844a89599ce7f377bd04dJason Samstypedef uint64_t ulong4 __attribute__((ext_vector_type(4)));
6687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
675261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint8_t uchar;
685261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint16_t ushort;
695261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint32_t uint;
700b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_SERVER
715261a5ea546ff358edd5aac7602fc4132434f481Jason Samstypedef uint64_t ulong;
720b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
7387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
74127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#ifndef __LP64__
75d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#define OPAQUETYPE(t) \
76d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    typedef struct { const int* const p; } __attribute__((packed, aligned(4))) t;
77127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#else
78127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#define OPAQUETYPE(t) \
79127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    typedef struct { const void* p; const void* r; const void* v1; const void* v2; } t;
80127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#endif
81d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
82d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_element)
83d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_type)
84d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_allocation)
85d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_sampler)
86d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_script)
87d6f1f46b2929ed56c73ba32357cde31b82972fbeTim MurrayOPAQUETYPE(rs_script_call)
882544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_program_fragment);
902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_program_store);
912544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_program_vertex);
922544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_program_raster);
932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
942544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_mesh);
952544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarOPAQUETYPE(rs_font);
962544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
97d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#undef OPAQUETYPE
98d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
997a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinestypedef enum {
1007a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines    // Empty to avoid conflicting definitions with RsAllocationCubemapFace
1017a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines} rs_allocation_cubemap_face;
1027a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
103d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murraytypedef struct {
104d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_sec;     ///< seconds
105d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_min;     ///< minutes
106d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_hour;    ///< hours
107d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_mday;    ///< day of the month
108d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_mon;     ///< month
109d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_year;    ///< year
110d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_wday;    ///< day of the week
111d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_yday;    ///< day of the year
112d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    int tm_isdst;   ///< daylight savings time
113d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray} rs_tm;
114d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
11531729ad313f009d430255bfac8ef644db0c9215bYong Chen#ifndef __LP64__
11631729ad313f009d430255bfac8ef644db0c9215bYong Chentypedef android::renderscript::rs_script RS_TY_SCRIPT;
11731729ad313f009d430255bfac8ef644db0c9215bYong Chentypedef android::renderscript::rs_allocation RS_TY_ALLOC;
11831729ad313f009d430255bfac8ef644db0c9215bYong Chen
11931729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline Script* rsGetObjPtr(RS_TY_SCRIPT s) {
12031729ad313f009d430255bfac8ef644db0c9215bYong Chen    return const_cast<Script*>(s.p);
12131729ad313f009d430255bfac8ef644db0c9215bYong Chen}
12231729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline Allocation* rsGetObjPtr(RS_TY_ALLOC a) {
12331729ad313f009d430255bfac8ef644db0c9215bYong Chen    return const_cast<Allocation*>(a.p);
12431729ad313f009d430255bfac8ef644db0c9215bYong Chen}
12531729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline RS_TY_SCRIPT rsTyCast(::rs_script s) {
12631729ad313f009d430255bfac8ef644db0c9215bYong Chen    RS_TY_SCRIPT cast;
12731729ad313f009d430255bfac8ef644db0c9215bYong Chen    cast.p = (const Script*)s.p;
12831729ad313f009d430255bfac8ef644db0c9215bYong Chen    return cast;
12931729ad313f009d430255bfac8ef644db0c9215bYong Chen}
13031729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline RS_TY_ALLOC rsTyCast(::rs_allocation a) {
13131729ad313f009d430255bfac8ef644db0c9215bYong Chen    RS_TY_ALLOC cast;
13231729ad313f009d430255bfac8ef644db0c9215bYong Chen    cast.p = (const Allocation*)a.p;
13331729ad313f009d430255bfac8ef644db0c9215bYong Chen    return cast;
13431729ad313f009d430255bfac8ef644db0c9215bYong Chen}
13531729ad313f009d430255bfac8ef644db0c9215bYong Chen#define RS_CAST(a)  rsTyCast(a)
13631729ad313f009d430255bfac8ef644db0c9215bYong Chen
13731729ad313f009d430255bfac8ef644db0c9215bYong Chen#else
13831729ad313f009d430255bfac8ef644db0c9215bYong Chen
13931729ad313f009d430255bfac8ef644db0c9215bYong Chentypedef android::renderscript::rs_script* RS_TY_SCRIPT;
14031729ad313f009d430255bfac8ef644db0c9215bYong Chentypedef android::renderscript::rs_allocation* RS_TY_ALLOC;
14131729ad313f009d430255bfac8ef644db0c9215bYong Chen
14231729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline Script* rsGetObjPtr(RS_TY_SCRIPT s) {
14331729ad313f009d430255bfac8ef644db0c9215bYong Chen    return const_cast<Script*>(s->p);
14431729ad313f009d430255bfac8ef644db0c9215bYong Chen}
14531729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline Allocation* rsGetObjPtr(RS_TY_ALLOC a) {
14631729ad313f009d430255bfac8ef644db0c9215bYong Chen    return const_cast<Allocation*>(a->p);
14731729ad313f009d430255bfac8ef644db0c9215bYong Chen}
14831729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline RS_TY_SCRIPT rsTyCast(::rs_script *s) {
14931729ad313f009d430255bfac8ef644db0c9215bYong Chen    return reinterpret_cast<RS_TY_SCRIPT>(s);
15031729ad313f009d430255bfac8ef644db0c9215bYong Chen}
15131729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic inline RS_TY_ALLOC rsTyCast(::rs_allocation *a) {
15231729ad313f009d430255bfac8ef644db0c9215bYong Chen    return reinterpret_cast<RS_TY_ALLOC>(a);
15331729ad313f009d430255bfac8ef644db0c9215bYong Chen}
15431729ad313f009d430255bfac8ef644db0c9215bYong Chen#define RS_CAST(a)  rsTyCast(&(a))
15531729ad313f009d430255bfac8ef644db0c9215bYong Chen
15631729ad313f009d430255bfac8ef644db0c9215bYong Chen#endif
15731729ad313f009d430255bfac8ef644db0c9215bYong Chen
1587153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar// Some RS functions are not threadsafe but can be called from an invoke
1597153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar// function.  Instead of summarily marking scripts that call these functions as
1607153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar// not-threadable we detect calls to them in the driver and sends a fatal error
1617153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar// message.
1627153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainarstatic bool failIfInKernel(Context *rsc, const char *funcName) {
1637153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    RsdHal *dc = (RsdHal *)rsc->mHal.drv;
1647153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    RsdCpuReference *impl = (RsdCpuReference *) dc->mCpuRef;
1657153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
1667153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (impl->getInForEach()) {
1677153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        char buf[256];
1687153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        sprintf(buf, "Error: Call to unsupported function %s "
1697153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar                         "in kernel", funcName);
1707153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        rsc->setError(RS_ERROR_FATAL_DRIVER, buf);
1717153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return true;
1727153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    }
1737153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    return false;
1747153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar}
1757153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
17687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
17787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Allocation
17887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
17987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
18087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
18131729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationSyncAll2(RS_TY_ALLOC a, RsAllocationUsageType source) {
182709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
18331729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationSyncAll(rsc, rsGetObjPtr(a), source);
18487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
18587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
18631729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationSyncAll(RS_TY_ALLOC a) {
187709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
18831729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationSyncAll(rsc, rsGetObjPtr(a), RS_ALLOCATION_USAGE_SCRIPT);
18987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
19087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1911aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#ifndef RS_COMPATIBILITY_LIB
1921aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
19331729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationCopy1DRange(RS_TY_ALLOC dstAlloc,
19474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstOff,
19574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip,
19674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t count,
19731729ad313f009d430255bfac8ef644db0c9215bYong Chen                                     RS_TY_ALLOC srcAlloc,
19874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcOff, uint32_t srcMip) {
199709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
2007153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationCopy1DRange"))
2017153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2027153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
20331729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationCopy1DRange(rsc, rsGetObjPtr(dstAlloc), dstOff, dstMip, count,
20431729ad313f009d430255bfac8ef644db0c9215bYong Chen                             rsGetObjPtr(srcAlloc), srcOff, srcMip);
20574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
20674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
20731729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationCopy2DRange(RS_TY_ALLOC dstAlloc,
20874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstXoff, uint32_t dstYoff,
20974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t dstMip, uint32_t dstFace,
21074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t width, uint32_t height,
21131729ad313f009d430255bfac8ef644db0c9215bYong Chen                                     RS_TY_ALLOC srcAlloc,
21274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcXoff, uint32_t srcYoff,
21374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                                     uint32_t srcMip, uint32_t srcFace) {
214709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
2157153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationCopy2DRange"))
2167153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2177153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
21831729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationCopy2DRange(rsc, rsGetObjPtr(dstAlloc),
219a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             dstXoff, dstYoff, dstMip, dstFace,
22031729ad313f009d430255bfac8ef644db0c9215bYong Chen                             width, height, rsGetObjPtr(srcAlloc),
221a94952436aeb251f587c1bccdf94c7f75285dfe2Alex Sakhartchouk                             srcXoff, srcYoff, srcMip, srcFace);
22274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk}
22374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
22431729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationIoSend(RS_TY_ALLOC alloc) {
2251aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
2267153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationIoSend"))
2277153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2287153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
22931729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationIoSend(rsc, rsGetObjPtr(alloc));
2301aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
2311aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
2321aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
23331729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationIoReceive(RS_TY_ALLOC alloc) {
2341aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
2357153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationIoReceive"))
2367153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2377153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
23831729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationIoReceive(rsc, rsGetObjPtr(alloc));
2391aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
2401aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
2411aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#else
2421aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
24331729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationCopy1DRange(RS_TY_ALLOC dstAlloc,
2441aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstOff,
2451aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstMip,
2461aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t count,
24731729ad313f009d430255bfac8ef644db0c9215bYong Chen                                     RS_TY_ALLOC srcAlloc,
2481aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcOff, uint32_t srcMip) {
2491aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
2507153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationCopy1DRange"))
2517153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2527153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
25331729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationCopy1DRange(rsc, rsGetObjPtr(dstAlloc), dstOff, dstMip, count,
25431729ad313f009d430255bfac8ef644db0c9215bYong Chen                             rsGetObjPtr(srcAlloc), srcOff, srcMip);
2551aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
2561aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
25731729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationCopy2DRange(RS_TY_ALLOC dstAlloc,
2581aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstXoff, uint32_t dstYoff,
2591aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t dstMip, uint32_t dstFace,
2601aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t width, uint32_t height,
26131729ad313f009d430255bfac8ef644db0c9215bYong Chen                                     RS_TY_ALLOC srcAlloc,
2621aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcXoff, uint32_t srcYoff,
2631aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                                     uint32_t srcMip, uint32_t srcFace) {
2641aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
2657153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationCopy2DRange"))
2667153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2677153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
26831729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationCopy2DRange(rsc, rsGetObjPtr(dstAlloc),
2691aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             dstXoff, dstYoff, dstMip, dstFace,
2701aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             width, height,
27131729ad313f009d430255bfac8ef644db0c9215bYong Chen                             rsGetObjPtr(srcAlloc),
2721aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray                             srcXoff, srcYoff, srcMip, srcFace);
2731aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
2741aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
27531729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationIoSend(RS_TY_ALLOC alloc) {
276709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
2777153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationIoSend"))
2787153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2797153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
28031729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationIoSend(rsc, rsGetObjPtr(alloc));
281b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
282b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
283b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
28431729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_AllocationIoReceive(RS_TY_ALLOC alloc) {
285709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
2867153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar    if (failIfInKernel(rsc, "rsAllocationIoReceive"))
2877153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar        return;
2887153e1c8232882ee2bd7b975791a21e1ed9732fdPirama Arumuga Nainar
28931729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrAllocationIoReceive(rsc, rsGetObjPtr(alloc));
290b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams}
291b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams
2921aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif
2931aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
2947a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines#ifndef RS_COMPATIBILITY_LIB
29574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
29687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
29787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context
29887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
29987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
30087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) {
301709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
302709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindTexture(rsc, pf, slot, a);
30387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
30487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
305a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindVertexConstant(ProgramVertex *pv, uint32_t slot, Allocation *a) {
306709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
307709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pv, slot, a);
308a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
309a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
310a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukstatic void SC_BindFragmentConstant(ProgramFragment *pf, uint32_t slot, Allocation *a) {
311709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
312709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindConstant(rsc, pf, slot, a);
313a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk}
314a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk
31587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) {
316709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
317709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindSampler(rsc, pf, slot, s);
31887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
31987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
32087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramStore(ProgramStore *ps) {
321709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
322709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramStore(rsc, ps);
32387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
32487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
32587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramFragment(ProgramFragment *pf) {
326709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
327709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramFragment(rsc, pf);
32887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
32987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
33087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramVertex(ProgramVertex *pv) {
331709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
332709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramVertex(rsc, pv);
33387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
33487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
33587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindProgramRaster(ProgramRaster *pr) {
336709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
337709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindProgramRaster(rsc, pr);
33887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
33987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
34087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) {
341709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
342709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectColorTarget(rsc, a, slot);
34387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
34487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
34587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFrameBufferObjectDepthTarget(Allocation *a) {
346709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
347709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFrameBufferObjectDepthTarget(rsc, a);
34887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
34987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
35087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) {
351709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
352709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectColorTarget(rsc, slot);
35387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
35487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
35587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) {
356709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
357709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectDepthTarget(rsc);
35887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
35987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearFrameBufferObjectTargets(Context *, Script *) {
361709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
362709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrClearFrameBufferObjectTargets(rsc);
36387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
36487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
36687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
36787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP
36887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
36987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
37087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) {
371709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
372709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadProjectionMatrix(rsc, m);
37387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
37487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
37587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadModelMatrix(const rsc_Matrix *m) {
376709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
377709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadModelMatrix(rsc, m);
37887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
37987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpLoadTextureMatrix(const rsc_Matrix *m) {
381709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
382709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpLoadTextureMatrix(rsc, m);
38387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
38487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
38587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) {
386709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
387709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPfConstantColor(rsc, pf, r, g, b, a);
38887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
38987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_VpGetProjectionMatrix(rsc_Matrix *m) {
391709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
392709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrVpGetProjectionMatrix(rsc, m);
39387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
39487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
39687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
39787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing
39887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
39987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
40087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
40187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x2, float y2, float z2, float u2, float v2,
40287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x3, float y3, float z3, float u3, float v3,
40387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                 float x4, float y4, float z4, float u4, float v4) {
404709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
405414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
406414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!rsc->setupCheck()) {
407414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
408414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
409414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
410414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdHal *dc = (RsdHal *)rsc->mHal.drv;
411414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    if (!dc->gl.shaderCache->setup(rsc)) {
412414a46166126da6864258bd25ff183f9a3c6261dStephen Hines        return;
413414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    }
414414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
415414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("Quad");
416414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x1, y1, z1);
417414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x2, y2, z2);
418414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x3, y3, z3);
419414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //ALOGE("%4.2f, %4.2f, %4.2f", x4, y4, z4);
420414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
421414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    float vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4};
422414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    const float tex[] = {u1,v1, u2,v2, u3,v3, u4,v4};
423414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
424414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray::Attrib attribs[2];
425e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray    attribs[0].set(GL_FLOAT, 3, 12, false, (size_t)vtx, "ATTRIB_position");
426e195a3f57ace3b66d313a6ee88c6e93d5c9d87f4Tim Murray    attribs[1].set(GL_FLOAT, 2, 8, false, (size_t)tex, "ATTRIB_texture0");
427414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
428414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RsdVertexArray va(attribs, 2);
429414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    va.setup(rsc);
430414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
431414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    RSD_CALL_GL(glDrawArrays, GL_TRIANGLE_FAN, 0, 4);
43287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
43387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
43487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawQuad(float x1, float y1, float z1,
43587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x2, float y2, float z2,
43687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x3, float y3, float z3,
43787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float x4, float y4, float z4) {
438414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuadTexCoords(x1, y1, z1, 0, 1,
439414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x2, y2, z2, 1, 1,
440414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x3, y3, z3, 1, 0,
441414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                         x4, y4, z4, 0, 0);
44287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
44387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
44487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) {
445709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
446414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
447414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    ObjectBaseRef<const ProgramVertex> tmp(rsc->getProgramVertex());
448414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    rsc->setProgramVertex(rsc->getDefaultProgramVertex());
449414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //rsc->setupCheck();
450414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
451414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    //GLint crop[4] = {0, h, w, -h};
452414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
453414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    float sh = rsc->getHeight();
454414a46166126da6864258bd25ff183f9a3c6261dStephen Hines
455414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuad(x,   sh - y,     z,
456414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x+w, sh - y,     z,
457414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x+w, sh - (y+h), z,
458414a46166126da6864258bd25ff183f9a3c6261dStephen Hines                x,   sh - (y+h), z);
459414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    rsc->setProgramVertex((ProgramVertex *)tmp.get());
46087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
46187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
46287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawRect(float x1, float y1, float x2, float y2, float z) {
463414a46166126da6864258bd25ff183f9a3c6261dStephen Hines    SC_DrawQuad(x1, y2, z, x2, y2, z, x2, y1, z, x1, y1, z);
46487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
46587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
46687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMesh(Mesh *m) {
467709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
468709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMesh(rsc, m);
46987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
47087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) {
472709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
473709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitive(rsc, m, primIndex);
47487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
47587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
47687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) {
477709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
478709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawMeshPrimitiveRange(rsc, m, primIndex, start, len);
47987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
48087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
48187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeshComputeBoundingBox(Mesh *m,
48287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *minX, float *minY, float *minZ,
48387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *maxX, float *maxY, float *maxZ) {
484709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
485709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeshComputeBoundingBox(rsc, m, minX, minY, minZ, maxX, maxY, maxZ);
48687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
48787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
48887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
48987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
49087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
49187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
49287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
49387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
49487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
49587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Color(float r, float g, float b, float a) {
496709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
497709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrColor(rsc, r, g, b, a);
49887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
49987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
50087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_Finish() {
501709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
502653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLFinish(rsc);
50387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
50487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
50587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearColor(float r, float g, float b, float a) {
506709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
507709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
508653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearColor(rsc, r, g, b, a);
50987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
51087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
51187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_ClearDepth(float v) {
512709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
513709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrPrepareClear(rsc);
514653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchouk    rsdGLClearDepth(rsc, v);
51587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
51687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
51787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetWidth() {
518709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
519709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetWidth(rsc);
52087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
52187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_GetHeight() {
523709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
524709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrGetHeight(rsc);
52587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
52687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawTextAlloc(Allocation *a, int x, int y) {
528709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
529709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawTextAlloc(rsc, a, x, y);
53087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
53187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
53287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_DrawText(const char *text, int x, int y) {
533709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
534709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrDrawText(rsc, text, x, y);
53587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
53687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
53787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureTextAlloc(Allocation *a,
53887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                         int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
539709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
540709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureTextAlloc(rsc, a, left, right, top, bottom);
54187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
54287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
54387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_MeasureText(const char *text,
54487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                    int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
545709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
546709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrMeasureText(rsc, text, left, right, top, bottom);
54787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
54887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
54987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_BindFont(Font *f) {
550709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
551709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrBindFont(rsc, f);
55287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
55387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
55487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic void SC_FontColor(float r, float g, float b, float a) {
555709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
556709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    rsrFontColor(rsc, r, g, b, a);
55787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
558110f181b7966212a36ef18016f9b81c7322d0a2fJason Sams#endif
55987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
56087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
56187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
56287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
56387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
56487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5651aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_ClearObject(rs_object_base *dst) {
5661aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
5671aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrClearObject(rsc, dst);
5681aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
569dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
5701aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic void SC_SetObject(rs_object_base *dst, rs_object_base  src) {
571a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    //    ALOGE("SC_SetObject: dst = %p, src = %p", dst, src.p);
572a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    //    ALOGE("SC_SetObject: dst[0] = %p", dst[0]);
573a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5741aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    rsrSetObject(rsc, dst, (ObjectBase*)src.p);
57587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
57687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5771aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murraystatic bool SC_IsObject(rs_object_base o) {
578709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
5791aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray    return rsrIsObject(rsc, o);
5801aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray}
581444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
582127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#ifdef __LP64__
583127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic void SC_SetObject_ByRef(rs_object_base *dst, rs_object_base *src) {
58431729ad313f009d430255bfac8ef644db0c9215bYong Chen    //    ALOGE("SC_SetObject_ByRef: dst = %p, src = %p", dst, src->p);
585127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    Context *rsc = RsdCpuReference::getTlsContext();
586127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    rsrSetObject(rsc, dst, (ObjectBase*)src->p);
587127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
588127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
589127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic bool SC_IsObject_ByRef(rs_object_base *o) {
590127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    Context *rsc = RsdCpuReference::getTlsContext();
591127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    return rsrIsObject(rsc, *o);
592127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
593127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#endif
594127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
595240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray
59647211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#ifndef RS_COMPATIBILITY_LIB
59747211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#ifndef __LP64__
598240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray
599240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray// i386 has different struct return passing to ARM; emulate with void*
600240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray#ifdef __i386__
601240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murraystatic const void* SC_GetAllocation(const void *ptr) {
602240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    Context *rsc = RsdCpuReference::getTlsContext();
603240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    const Script *sc = RsdCpuReference::getTlsScript();
604240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    Allocation* alloc = rsdScriptGetAllocationForPointer(rsc, sc, ptr);
605240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    android::renderscript::rs_allocation obj = {0};
606240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    alloc->callUpdateCacheObject(rsc, &obj);
607240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray    return (void*)obj.p;
608240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray}
609240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray#else
610240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray// ARMv7/MIPS
61147211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murraystatic const android::renderscript::rs_allocation SC_GetAllocation(const void *ptr) {
612709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
613709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
61447211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Allocation* alloc = rsdScriptGetAllocationForPointer(rsc, sc, ptr);
61547211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    android::renderscript::rs_allocation obj = {0};
61647211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    alloc->callUpdateCacheObject(rsc, &obj);
61747211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    return obj;
61847211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray}
619240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray#endif
62047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#else
621240a6c96eb94734a84eed53349fb0928d3ce6d19Tim Murray// AArch64/x86_64/MIPS64
62247211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murraystatic const android::renderscript::rs_allocation SC_GetAllocation(const void *ptr) {
62347211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
62447211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    const Script *sc = RsdCpuReference::getTlsScript();
62547211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Allocation* alloc = rsdScriptGetAllocationForPointer(rsc, sc, ptr);
62647211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    android::renderscript::rs_allocation obj = {0, 0, 0, 0};
62747211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    alloc->callUpdateCacheObject(rsc, &obj);
62847211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    return obj;
62987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
63047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#endif
63147211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray#endif
63287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
633dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
63431729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAA(RS_TY_SCRIPT target, RS_TY_ALLOC in, RS_TY_ALLOC out) {
635447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar    Context *rsc = RsdCpuReference::getTlsContext();
63631729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), nullptr, 0, nullptr);
637447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar}
638c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
63931729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAAU(RS_TY_SCRIPT target, RS_TY_ALLOC in,
64031729ad313f009d430255bfac8ef644db0c9215bYong Chen                            RS_TY_ALLOC out, const void *usr) {
641709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
64231729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), usr, 0, nullptr);
64387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
64487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
64531729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAAUS(RS_TY_SCRIPT target, RS_TY_ALLOC in,
64631729ad313f009d430255bfac8ef644db0c9215bYong Chen                             RS_TY_ALLOC out, const void *usr, const RsScriptCall *call) {
647447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar    Context *rsc = RsdCpuReference::getTlsContext();
64831729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), usr, 0, call);
649447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar}
65087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
6512f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray// These functions are only supported in 32-bit.
652444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
65331729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAAUL(RS_TY_SCRIPT target, RS_TY_ALLOC in,
65431729ad313f009d430255bfac8ef644db0c9215bYong Chen                             RS_TY_ALLOC out, const void *usr, uint32_t usrLen) {
655447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar    Context *rsc = RsdCpuReference::getTlsContext();
65631729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), usr, usrLen, nullptr);
657447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar}
658dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
65931729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_ForEach_SAAULS(RS_TY_SCRIPT target, RS_TY_ALLOC in, RS_TY_ALLOC out,
66031729ad313f009d430255bfac8ef644db0c9215bYong Chen                              const void *usr, uint32_t usrLen, const RsScriptCall *call) {
661447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar    Context *rsc = RsdCpuReference::getTlsContext();
66231729ad313f009d430255bfac8ef644db0c9215bYong Chen    rsrForEach(rsc, rsGetObjPtr(target), rsGetObjPtr(in), rsGetObjPtr(out), usr, usrLen, call);
663447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar}
6641aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif
66587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
66687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
66787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
66887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines
66987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
67087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
67187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic float SC_GetDt() {
672709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
673709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const Script *sc = RsdCpuReference::getTlsScript();
67487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    return rsrGetDt(rsc, sc);
67587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
67687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
677dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar// #if !defined(RS_COMPATIBILITY_LIB) && defined(__LP64__)
678dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef __LP64__
67987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t SC_Time(time_t *timer) {
680709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
681709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrTime(rsc, timer);
68287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
683d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#else
684d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murraystatic int SC_Time(int *timer) {
685d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
686d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return rsrTime(rsc, (long*)timer);
687d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
688d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray#endif
68987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
69087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* SC_LocalTime(tm *local, time_t *timer) {
691709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
692709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrLocalTime(rsc, local, timer);
69387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
69487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
69587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeMillis() {
696709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
697709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeMillis(rsc);
69887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
69987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
70087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t SC_UptimeNanos() {
701709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
702709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrUptimeNanos(rsc);
70387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
70487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
70587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
70687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines
70787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
70887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
709276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesstatic uint32_t SC_ToClient2(int cmdID, const void *data, uint32_t len) {
710709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
711709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClient(rsc, cmdID, data, len);
71287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
71387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
71487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClient(int cmdID) {
715709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
71644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return rsrToClient(rsc, cmdID, (const void *)nullptr, 0);
71787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
71887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
719276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesstatic uint32_t SC_ToClientBlocking2(int cmdID, const void *data, uint32_t len) {
720709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
721709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    return rsrToClientBlocking(rsc, cmdID, data, len);
72287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
72387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
72487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstatic uint32_t SC_ToClientBlocking(int cmdID) {
725709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
72644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return rsrToClientBlocking(rsc, cmdID, (const void *)nullptr, 0);
72787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
72887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
72987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
7305261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt1D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x) {
7315261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
7325261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
7335261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
7345261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7355261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
7365261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
7375261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
738cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
73944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7405261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7415261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
742d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
743d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
744d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
745cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
74644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
747d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
748d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
749d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
750d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
751cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
75244bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
753d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7545261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7555261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7565261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
7575261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
7585261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x)];
7595261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
7605261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7615261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt2D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y) {
7625261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
7635261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
7645261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
7655261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7665261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
7675261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
7685261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
769cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
77044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7725261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7735261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
7745261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
775cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
77644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
7775261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7785261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
779d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
780d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
781d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
782cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
78344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
784d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
785d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
786d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
787d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
788cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
78944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
790d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
7915261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
7925261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7935261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
7945261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
7955261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
7965261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
7975261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
7985261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
7995261a5ea546ff358edd5aac7602fc4132434f481Jason Samsstatic void * ElementAt3D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y, uint32_t z) {
8005261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    Context *rsc = RsdCpuReference::getTlsContext();
8015261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Type *t = a->getType();
8025261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const Element *e = t->getElement();
8035261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8045261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    char buf[256];
8055261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (x >= t->getLODDimX(0)) {
8065261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0));
807cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
80844bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
8095261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
8105261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8115261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (y >= t->getLODDimY(0)) {
8125261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0));
813cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
81444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
8155261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
8165261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8175261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    if (z >= t->getLODDimZ(0)) {
8185261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        sprintf(buf, "Out range ElementAt Z %i of %i", z, t->getLODDimZ(0));
819cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines        rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
82044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return nullptr;
8215261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
8225261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
823d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    if (vecSize > 0) {
824d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (vecSize != e->getVectorSize()) {
825d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize());
826cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
82744bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
828d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
829d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
830d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        if (dt != e->getType()) {
831d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams            sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType());
832cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines            rsc->setError(RS_ERROR_FATAL_DEBUG, buf);
83344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes            return nullptr;
834d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        }
8355261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }
8365261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
8375261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr;
8385261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t eSize = e->getSizeBytes();
8395261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    const uint32_t stride = a->mHal.drvState.lod[0].stride;
8405261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    return &p[(eSize * x) + (y * stride)];
8415261a5ea546ff358edd5aac7602fc4132434f481Jason Sams}
8425261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
84331729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic const void * SC_GetElementAt1D(RS_TY_ALLOC a, uint32_t x) {
84431729ad313f009d430255bfac8ef644db0c9215bYong Chen    return ElementAt1D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x);
845d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
84631729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic const void * SC_GetElementAt2D(RS_TY_ALLOC a, uint32_t x, uint32_t y) {
84731729ad313f009d430255bfac8ef644db0c9215bYong Chen    return ElementAt2D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x, y);
848d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
84931729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic const void * SC_GetElementAt3D(RS_TY_ALLOC a, uint32_t x, uint32_t y, uint32_t z) {
85031729ad313f009d430255bfac8ef644db0c9215bYong Chen    return ElementAt3D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x, y, z);
851d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
852d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
85331729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_SetElementAt1D(RS_TY_ALLOC a, const void *ptr, uint32_t x) {
85431729ad313f009d430255bfac8ef644db0c9215bYong Chen    const Type *t = rsGetObjPtr(a)->getType();
855d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
85631729ad313f009d430255bfac8ef644db0c9215bYong Chen    void *tmp = ElementAt1D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x);
85744bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (tmp != nullptr) {
858d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
859d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
860d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
86131729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_SetElementAt2D(RS_TY_ALLOC a, const void *ptr, uint32_t x, uint32_t y) {
86231729ad313f009d430255bfac8ef644db0c9215bYong Chen    const Type *t = rsGetObjPtr(a)->getType();
863d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
86431729ad313f009d430255bfac8ef644db0c9215bYong Chen    void *tmp = ElementAt2D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x, y);
86544bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (tmp != nullptr) {
866d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
867d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
868d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
86931729ad313f009d430255bfac8ef644db0c9215bYong Chenstatic void SC_SetElementAt3D(RS_TY_ALLOC a, const void *ptr, uint32_t x, uint32_t y, uint32_t z) {
87031729ad313f009d430255bfac8ef644db0c9215bYong Chen    const Type *t = rsGetObjPtr(a)->getType();
871d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    const Element *e = t->getElement();
87231729ad313f009d430255bfac8ef644db0c9215bYong Chen    void *tmp = ElementAt3D(rsGetObjPtr(a), RS_TYPE_UNSIGNED_8, 0, x, y, z);
87344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    if (tmp != nullptr) {
874d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams        memcpy(tmp, ptr, e->getSizeBytes());
875d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    }
876d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams}
877d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
8782544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarconst void *rsGetElementAt(::rs_allocation a, uint32_t x) {
87931729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_GetElementAt1D(RS_CAST(a), x);
880dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
881dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8822544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarconst void *rsGetElementAt(::rs_allocation a, uint32_t x, uint32_t y) {
88331729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_GetElementAt2D(RS_CAST(a), x, y);
884dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
885dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8862544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarconst void *rsGetElementAt(::rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {
88731729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_GetElementAt3D(RS_CAST(a), x, y, z);
888dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
889dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsSetElementAt(::rs_allocation a, const void *ptr, uint32_t x) {
89131729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_SetElementAt1D(RS_CAST(a), ptr, x);
892dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
893dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8942544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsSetElementAt(::rs_allocation a, const void *ptr, uint32_t x, uint32_t y) {
89531729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_SetElementAt2D(RS_CAST(a), ptr, x, y);
896dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
897dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
8982544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsSetElementAt(::rs_allocation a, const void *ptr, uint32_t x, uint32_t y, uint32_t z) {
89931729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_SetElementAt3D(RS_CAST(a), ptr, x, y, z);
900dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
901dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
902dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
90331729ad313f009d430255bfac8ef644db0c9215bYong Chen#define ELEMENT_AT(T, DT, VS)                                           \
90431729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_SetElementAt1_##T(RS_TY_ALLOC a, const T *val, uint32_t x) { \
90531729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt1D(rsGetObjPtr(a), DT, VS, x);               \
90644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) ((T *)r)[0] = *val;                           \
9075261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
9085261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
90931729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_SetElementAt2_##T(RS_TY_ALLOC a, const T * val, uint32_t x, uint32_t y) { \
91031729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt2D(rsGetObjPtr(a), DT, VS, x, y);            \
91144bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) ((T *)r)[0] = *val;                           \
9125261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
9135261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
91431729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_SetElementAt3_##T(RS_TY_ALLOC a, const T * val, uint32_t x, uint32_t y, uint32_t z) { \
91531729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt3D(rsGetObjPtr(a), DT, VS, x, y, z);         \
91644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) ((T *)r)[0] = *val;                           \
9175261a5ea546ff358edd5aac7602fc4132434f481Jason Sams        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
9185261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
91931729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_GetElementAt1_##T(RS_TY_ALLOC a, T *val, uint32_t x) { \
92031729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt1D(rsGetObjPtr(a), DT, VS, x);               \
92131729ad313f009d430255bfac8ef644db0c9215bYong Chen        if (r != nullptr) *val = ((T *)r)[0];                           \
92231729ad313f009d430255bfac8ef644db0c9215bYong Chen        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
92331729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
92431729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_GetElementAt2_##T(RS_TY_ALLOC a, T *val, uint32_t x, uint32_t y) { \
92531729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt2D(rsGetObjPtr(a), DT, VS, x, y);            \
92631729ad313f009d430255bfac8ef644db0c9215bYong Chen        if (r != nullptr) *val = ((T *)r)[0];                           \
92731729ad313f009d430255bfac8ef644db0c9215bYong Chen        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
92831729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
92931729ad313f009d430255bfac8ef644db0c9215bYong Chen    static void SC_GetElementAt3_##T(RS_TY_ALLOC a, T *val, uint32_t x, uint32_t y, uint32_t z) { \
93031729ad313f009d430255bfac8ef644db0c9215bYong Chen        void *r = ElementAt3D(rsGetObjPtr(a), DT, VS, x, y, z);         \
93144bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        if (r != nullptr) *val = ((T *)r)[0];                           \
93244bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        else ALOGE("Error from %s", __PRETTY_FUNCTION__);               \
9335261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    }                                                                   \
934dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const T *val, uint32_t x) { \
93531729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt1_##T(RS_CAST(a), val, x);                       \
93631729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
9372544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const T *val, uint32_t x, uint32_t y) { \
93831729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt2_##T(RS_CAST(a), val, x, y);                    \
93931729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
940dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const T *val, uint32_t x, uint32_t y, uint32_t z) { \
94131729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt3_##T(RS_CAST(a), val, x, y, z);                 \
94231729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
94331729ad313f009d430255bfac8ef644db0c9215bYong Chen    void rsGetElementAt_##T(::rs_allocation a, T *val, uint32_t x) {    \
94431729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt1_##T(RS_CAST(a), val, x);                       \
94531729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
9462544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, T *val, uint32_t x, uint32_t y) { \
94731729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt2_##T(RS_CAST(a), val, x, y);                    \
94831729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
9492544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, T *val, uint32_t x, uint32_t y, uint32_t z) { \
95031729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt3_##T(RS_CAST(a), val, x, y, z);                 \
95131729ad313f009d430255bfac8ef644db0c9215bYong Chen    }                                                                   \
9525261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9535261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char, RS_TYPE_SIGNED_8, 1)
9545261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char2, RS_TYPE_SIGNED_8, 2)
9555261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char3, RS_TYPE_SIGNED_8, 3)
9565261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(char4, RS_TYPE_SIGNED_8, 4)
9575261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar, RS_TYPE_UNSIGNED_8, 1)
9585261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar2, RS_TYPE_UNSIGNED_8, 2)
9595261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar3, RS_TYPE_UNSIGNED_8, 3)
9605261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uchar4, RS_TYPE_UNSIGNED_8, 4)
9615261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short, RS_TYPE_SIGNED_16, 1)
9625261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short2, RS_TYPE_SIGNED_16, 2)
9635261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short3, RS_TYPE_SIGNED_16, 3)
9645261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(short4, RS_TYPE_SIGNED_16, 4)
9655261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort, RS_TYPE_UNSIGNED_16, 1)
9665261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort2, RS_TYPE_UNSIGNED_16, 2)
9675261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort3, RS_TYPE_UNSIGNED_16, 3)
9685261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ushort4, RS_TYPE_UNSIGNED_16, 4)
9695261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int, RS_TYPE_SIGNED_32, 1)
9705261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int2, RS_TYPE_SIGNED_32, 2)
9715261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int3, RS_TYPE_SIGNED_32, 3)
9725261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(int4, RS_TYPE_SIGNED_32, 4)
9735261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint, RS_TYPE_UNSIGNED_32, 1)
9745261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint2, RS_TYPE_UNSIGNED_32, 2)
9755261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint3, RS_TYPE_UNSIGNED_32, 3)
9765261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(uint4, RS_TYPE_UNSIGNED_32, 4)
9775261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long, RS_TYPE_SIGNED_64, 1)
9785261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long2, RS_TYPE_SIGNED_64, 2)
9795261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long3, RS_TYPE_SIGNED_64, 3)
9805261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(long4, RS_TYPE_SIGNED_64, 4)
9815261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong, RS_TYPE_UNSIGNED_64, 1)
9825261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong2, RS_TYPE_UNSIGNED_64, 2)
9835261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong3, RS_TYPE_UNSIGNED_64, 3)
9845261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(ulong4, RS_TYPE_UNSIGNED_64, 4)
9855261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float, RS_TYPE_FLOAT_32, 1)
9865261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float2, RS_TYPE_FLOAT_32, 2)
9875261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float3, RS_TYPE_FLOAT_32, 3)
9885261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(float4, RS_TYPE_FLOAT_32, 4)
9895261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double, RS_TYPE_FLOAT_64, 1)
9905261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double2, RS_TYPE_FLOAT_64, 2)
9915261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double3, RS_TYPE_FLOAT_64, 3)
9925261a5ea546ff358edd5aac7602fc4132434f481Jason SamsELEMENT_AT(double4, RS_TYPE_FLOAT_64, 4)
9935261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
9945261a5ea546ff358edd5aac7602fc4132434f481Jason Sams#undef ELEMENT_AT
99587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
996709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar#ifndef __LP64__
997709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar/*
998709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * We miss some symbols for rs{Get,Set}Element_long,ulong variants because 64
999709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * bit integer values are 'long' in RS-land but might be 'long long' in the
1000709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * driver.  Define native_long* and native_ulong* types to be vectors of
1001709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * 'long' as seen by the driver and define overloaded versions of
1002709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * rsSetElementAt_* and rsGetElementAt_*.  This should get us the correct
1003709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar * mangled names in the driver.
1004709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar */
1005709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1006709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef long native_long2 __attribute__((ext_vector_type(2)));
1007709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef long native_long3 __attribute__((ext_vector_type(3)));
1008709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef long native_long4 __attribute__((ext_vector_type(4)));
1009709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef unsigned long native_ulong2 __attribute__((ext_vector_type(2)));
1010709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef unsigned long native_ulong3 __attribute__((ext_vector_type(3)));
1011709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainartypedef unsigned long native_ulong4 __attribute__((ext_vector_type(4)));
1012709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1013709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar#define ELEMENT_AT_OVERLOADS(T, U) \
1014709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const U *val, uint32_t x) { \
101531729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt1_##T(RS_CAST(a), (T *) val, x); \
1016709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1017709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const U *val, uint32_t x, uint32_t y) { \
101831729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt2_##T(RS_CAST(a), (T *) val, x, y); \
1019709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1020709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsSetElementAt_##T(::rs_allocation a, const U *val, uint32_t x, uint32_t y, uint32_t z) { \
102131729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_SetElementAt3_##T(RS_CAST(a), (T *) val, x, y, z); \
1022709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1023709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, U *val, uint32_t x) { \
102431729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt1_##T(RS_CAST(a), (T *) val, x); \
1025709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1026709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, U *val, uint32_t x, uint32_t y) { \
102731729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt2_##T(RS_CAST(a), (T *) val, x, y); \
1028709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1029709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    void rsGetElementAt_##T(::rs_allocation a, U *val, uint32_t x, uint32_t y, uint32_t z) { \
103031729ad313f009d430255bfac8ef644db0c9215bYong Chen        SC_GetElementAt3_##T(RS_CAST(a), (T *) val, x, y, z); \
1031709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar    } \
1032709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1033709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(long2, native_long2)
1034709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(long3, native_long3)
1035709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(long4, native_long4)
1036709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(ulong, unsigned long)
1037709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(ulong2, native_ulong2)
1038709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(ulong3, native_ulong3)
1039709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(ulong4, native_ulong4)
1040709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1041709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar// We also need variants of rs{Get,Set}ElementAt_long that take 'long long *' as
1042709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar// we might have this overloaded variant in old APKs.
1043709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga NainarELEMENT_AT_OVERLOADS(long, long long)
1044709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1045709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar#undef ELEMENT_AT_OVERLOADS
1046709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar#endif
1047709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
1048709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
104987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
105087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Stub implementation
105187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
105287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
105387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// llvm name mangling ref
105487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//  <builtin-type> ::= v  # void
105587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= b  # bool
105687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= c  # char
105787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= a  # signed char
105887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= h  # unsigned char
105987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= s  # short
106087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= t  # unsigned short
106187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= i  # int
106287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= j  # unsigned int
106387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= l  # long
106487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= m  # unsigned long
106587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= x  # long long, __int64
106687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= y  # unsigned long long, __int64
106787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= f  # float
106887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//                 ::= d  # double
106987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1070709a0978ae141198018ca9769f8d96292a8928e6Jason Samsstatic RsdCpuReference::CpuSymbol gSyms[] = {
10715261a5ea546ff358edd5aac7602fc4132434f481Jason Sams    // Debug runtime
1072d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationj", (void *)&SC_GetElementAt1D, true },
1073d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationjj", (void *)&SC_GetElementAt2D, true },
1074d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsGetElementAt13rs_allocationjjj", (void *)&SC_GetElementAt3D, true },
1075d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvj", (void *)&SC_SetElementAt1D, true },
1076d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvjj", (void *)&SC_SetElementAt2D, true },
1077d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z14rsSetElementAt13rs_allocationPKvjjj", (void *)&SC_SetElementAt3D, true },
1078d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1079d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1080d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhj", (void *)&SC_GetElementAt1_uchar, true },
1081d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hj", (void *)&SC_GetElementAt1_uchar2, true },
1082d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hj", (void *)&SC_GetElementAt1_uchar3, true },
1083d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hj", (void *)&SC_GetElementAt1_uchar4, true },
1084d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhjj", (void *)&SC_GetElementAt2_uchar, true },
1085d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hjj", (void *)&SC_GetElementAt2_uchar2, true },
1086d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hjj", (void *)&SC_GetElementAt2_uchar3, true },
1087d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hjj", (void *)&SC_GetElementAt2_uchar4, true },
1088d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uchar13rs_allocationPhjjj", (void *)&SC_GetElementAt3_uchar, true },
1089d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar213rs_allocationPDv2_hjjj", (void *)&SC_GetElementAt3_uchar2, true },
1090d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar313rs_allocationPDv3_hjjj", (void *)&SC_GetElementAt3_uchar3, true },
1091d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_uchar413rs_allocationPDv4_hjjj", (void *)&SC_GetElementAt3_uchar4, true },
1092d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1093d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcj", (void *)&SC_GetElementAt1_char, true },
1094d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cj", (void *)&SC_GetElementAt1_char2, true },
1095d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cj", (void *)&SC_GetElementAt1_char3, true },
1096d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cj", (void *)&SC_GetElementAt1_char4, true },
1097d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcjj", (void *)&SC_GetElementAt2_char, true },
1098d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cjj", (void *)&SC_GetElementAt2_char2, true },
1099d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cjj", (void *)&SC_GetElementAt2_char3, true },
1100d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cjj", (void *)&SC_GetElementAt2_char4, true },
1101d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_char13rs_allocationPcjjj", (void *)&SC_GetElementAt3_char, true },
1102d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char213rs_allocationPDv2_cjjj", (void *)&SC_GetElementAt3_char2, true },
1103d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char313rs_allocationPDv3_cjjj", (void *)&SC_GetElementAt3_char3, true },
1104d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_char413rs_allocationPDv4_cjjj", (void *)&SC_GetElementAt3_char4, true },
1105d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1106d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtj", (void *)&SC_GetElementAt1_ushort, true },
1107d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tj", (void *)&SC_GetElementAt1_ushort2, true },
1108d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tj", (void *)&SC_GetElementAt1_ushort3, true },
1109d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tj", (void *)&SC_GetElementAt1_ushort4, true },
1110d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtjj", (void *)&SC_GetElementAt2_ushort, true },
1111d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tjj", (void *)&SC_GetElementAt2_ushort2, true },
1112d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tjj", (void *)&SC_GetElementAt2_ushort3, true },
1113d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tjj", (void *)&SC_GetElementAt2_ushort4, true },
1114d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ushort13rs_allocationPtjjj", (void *)&SC_GetElementAt3_ushort, true },
1115d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort213rs_allocationPDv2_tjjj", (void *)&SC_GetElementAt3_ushort2, true },
1116d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort313rs_allocationPDv3_tjjj", (void *)&SC_GetElementAt3_ushort3, true },
1117d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_ushort413rs_allocationPDv4_tjjj", (void *)&SC_GetElementAt3_ushort4, true },
1118d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1119d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsj", (void *)&SC_GetElementAt1_short, true },
1120d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sj", (void *)&SC_GetElementAt1_short2, true },
1121d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sj", (void *)&SC_GetElementAt1_short3, true },
1122d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sj", (void *)&SC_GetElementAt1_short4, true },
1123d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsjj", (void *)&SC_GetElementAt2_short, true },
1124d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sjj", (void *)&SC_GetElementAt2_short2, true },
1125d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sjj", (void *)&SC_GetElementAt2_short3, true },
1126d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sjj", (void *)&SC_GetElementAt2_short4, true },
1127d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_short13rs_allocationPsjjj", (void *)&SC_GetElementAt3_short, true },
1128d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short213rs_allocationPDv2_sjjj", (void *)&SC_GetElementAt3_short2, true },
1129d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short313rs_allocationPDv3_sjjj", (void *)&SC_GetElementAt3_short3, true },
1130d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_short413rs_allocationPDv4_sjjj", (void *)&SC_GetElementAt3_short4, true },
1131d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1132d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjj", (void *)&SC_GetElementAt1_uint, true },
1133d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jj", (void *)&SC_GetElementAt1_uint2, true },
1134d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jj", (void *)&SC_GetElementAt1_uint3, true },
1135d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jj", (void *)&SC_GetElementAt1_uint4, true },
1136d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjjj", (void *)&SC_GetElementAt2_uint, true },
1137d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jjj", (void *)&SC_GetElementAt2_uint2, true },
1138d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jjj", (void *)&SC_GetElementAt2_uint3, true },
1139d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jjj", (void *)&SC_GetElementAt2_uint4, true },
1140d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_uint13rs_allocationPjjjj", (void *)&SC_GetElementAt3_uint, true },
1141d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint213rs_allocationPDv2_jjjj", (void *)&SC_GetElementAt3_uint2, true },
1142d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint313rs_allocationPDv3_jjjj", (void *)&SC_GetElementAt3_uint3, true },
1143d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_uint413rs_allocationPDv4_jjjj", (void *)&SC_GetElementAt3_uint4, true },
1144d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1145d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPij", (void *)&SC_GetElementAt1_int, true },
1146d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ij", (void *)&SC_GetElementAt1_int2, true },
1147d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ij", (void *)&SC_GetElementAt1_int3, true },
1148d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ij", (void *)&SC_GetElementAt1_int4, true },
1149d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPijj", (void *)&SC_GetElementAt2_int, true },
1150d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ijj", (void *)&SC_GetElementAt2_int2, true },
1151d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ijj", (void *)&SC_GetElementAt2_int3, true },
1152d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ijj", (void *)&SC_GetElementAt2_int4, true },
1153d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsGetElementAt_int13rs_allocationPijjj", (void *)&SC_GetElementAt3_int, true },
1154d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int213rs_allocationPDv2_ijjj", (void *)&SC_GetElementAt3_int2, true },
1155d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int313rs_allocationPDv3_ijjj", (void *)&SC_GetElementAt3_int3, true },
1156d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_int413rs_allocationPDv4_ijjj", (void *)&SC_GetElementAt3_int4, true },
1157d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1158d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmj", (void *)&SC_GetElementAt1_ulong, true },
1159d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mj", (void *)&SC_GetElementAt1_ulong2, true },
1160d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mj", (void *)&SC_GetElementAt1_ulong3, true },
1161d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mj", (void *)&SC_GetElementAt1_ulong4, true },
1162d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmjj", (void *)&SC_GetElementAt2_ulong, true },
1163d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mjj", (void *)&SC_GetElementAt2_ulong2, true },
1164d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mjj", (void *)&SC_GetElementAt2_ulong3, true },
1165d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mjj", (void *)&SC_GetElementAt2_ulong4, true },
1166d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_ulong13rs_allocationPmjjj", (void *)&SC_GetElementAt3_ulong, true },
1167d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong213rs_allocationPDv2_mjjj", (void *)&SC_GetElementAt3_ulong2, true },
1168d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong313rs_allocationPDv3_mjjj", (void *)&SC_GetElementAt3_ulong3, true },
1169d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_ulong413rs_allocationPDv4_mjjj", (void *)&SC_GetElementAt3_ulong4, true },
1170d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1171d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPlj", (void *)&SC_GetElementAt1_long, true },
1172d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_lj", (void *)&SC_GetElementAt1_long2, true },
1173d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_lj", (void *)&SC_GetElementAt1_long3, true },
1174d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_lj", (void *)&SC_GetElementAt1_long4, true },
1175d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPljj", (void *)&SC_GetElementAt2_long, true },
1176d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_ljj", (void *)&SC_GetElementAt2_long2, true },
1177d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_ljj", (void *)&SC_GetElementAt2_long3, true },
1178d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_ljj", (void *)&SC_GetElementAt2_long4, true },
1179d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsGetElementAt_long13rs_allocationPljjj", (void *)&SC_GetElementAt3_long, true },
1180d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long213rs_allocationPDv2_ljjj", (void *)&SC_GetElementAt3_long2, true },
1181d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long313rs_allocationPDv3_ljjj", (void *)&SC_GetElementAt3_long3, true },
1182d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_long413rs_allocationPDv4_ljjj", (void *)&SC_GetElementAt3_long4, true },
1183d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1184d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfj", (void *)&SC_GetElementAt1_float, true },
1185d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fj", (void *)&SC_GetElementAt1_float2, true },
1186d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fj", (void *)&SC_GetElementAt1_float3, true },
1187d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fj", (void *)&SC_GetElementAt1_float4, true },
1188d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfjj", (void *)&SC_GetElementAt2_float, true },
1189d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fjj", (void *)&SC_GetElementAt2_float2, true },
1190d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fjj", (void *)&SC_GetElementAt2_float3, true },
1191d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fjj", (void *)&SC_GetElementAt2_float4, true },
1192d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsGetElementAt_float13rs_allocationPfjjj", (void *)&SC_GetElementAt3_float, true },
1193d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float213rs_allocationPDv2_fjjj", (void *)&SC_GetElementAt3_float2, true },
1194d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float313rs_allocationPDv3_fjjj", (void *)&SC_GetElementAt3_float3, true },
1195d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_float413rs_allocationPDv4_fjjj", (void *)&SC_GetElementAt3_float4, true },
1196d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1197d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdj", (void *)&SC_GetElementAt1_double, true },
1198d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_dj", (void *)&SC_GetElementAt1_double2, true },
1199d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_dj", (void *)&SC_GetElementAt1_double3, true },
1200d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_dj", (void *)&SC_GetElementAt1_double4, true },
1201d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdjj", (void *)&SC_GetElementAt2_double, true },
1202d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_djj", (void *)&SC_GetElementAt2_double2, true },
1203d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_djj", (void *)&SC_GetElementAt2_double3, true },
1204d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_djj", (void *)&SC_GetElementAt2_double4, true },
1205d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsGetElementAt_double13rs_allocationPdjjj", (void *)&SC_GetElementAt3_double, true },
1206d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double213rs_allocationPDv2_djjj", (void *)&SC_GetElementAt3_double2, true },
1207d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double313rs_allocationPDv3_djjj", (void *)&SC_GetElementAt3_double3, true },
1208d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsGetElementAt_double413rs_allocationPDv4_djjj", (void *)&SC_GetElementAt3_double4, true },
1209d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1210d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1211d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1212d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhj", (void *)&SC_SetElementAt1_uchar, true },
1213d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hj", (void *)&SC_SetElementAt1_uchar2, true },
1214d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hj", (void *)&SC_SetElementAt1_uchar3, true },
1215d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hj", (void *)&SC_SetElementAt1_uchar4, true },
1216d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhjj", (void *)&SC_SetElementAt2_uchar, true },
1217d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hjj", (void *)&SC_SetElementAt2_uchar2, true },
1218d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hjj", (void *)&SC_SetElementAt2_uchar3, true },
1219d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hjj", (void *)&SC_SetElementAt2_uchar4, true },
1220d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uchar13rs_allocationPKhjjj", (void *)&SC_SetElementAt3_uchar, true },
1221d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar213rs_allocationPKDv2_hjjj", (void *)&SC_SetElementAt3_uchar2, true },
1222d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar313rs_allocationPKDv3_hjjj", (void *)&SC_SetElementAt3_uchar3, true },
1223d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_uchar413rs_allocationPKDv4_hjjj", (void *)&SC_SetElementAt3_uchar4, true },
1224d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1225d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcj", (void *)&SC_SetElementAt1_char, true },
1226d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cj", (void *)&SC_SetElementAt1_char2, true },
1227d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cj", (void *)&SC_SetElementAt1_char3, true },
1228d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cj", (void *)&SC_SetElementAt1_char4, true },
1229d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcjj", (void *)&SC_SetElementAt2_char, true },
1230d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cjj", (void *)&SC_SetElementAt2_char2, true },
1231d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cjj", (void *)&SC_SetElementAt2_char3, true },
1232d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cjj", (void *)&SC_SetElementAt2_char4, true },
1233d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_char13rs_allocationPKcjjj", (void *)&SC_SetElementAt3_char, true },
1234d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char213rs_allocationPKDv2_cjjj", (void *)&SC_SetElementAt3_char2, true },
1235d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char313rs_allocationPKDv3_cjjj", (void *)&SC_SetElementAt3_char3, true },
1236d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_char413rs_allocationPKDv4_cjjj", (void *)&SC_SetElementAt3_char4, true },
1237d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
123840db7a2a344bf56c82c62f481a57f9ff59f93c91Stephen Hines    { "_Z21rsSetElementAt_ushort13rs_allocationPKtj", (void *)&SC_SetElementAt1_ushort, true },
1239d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tj", (void *)&SC_SetElementAt1_ushort2, true },
1240d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tj", (void *)&SC_SetElementAt1_ushort3, true },
1241d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tj", (void *)&SC_SetElementAt1_ushort4, true },
1242d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationPKtjj", (void *)&SC_SetElementAt2_ushort, true },
1243d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tjj", (void *)&SC_SetElementAt2_ushort2, true },
1244d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tjj", (void *)&SC_SetElementAt2_ushort3, true },
1245d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tjj", (void *)&SC_SetElementAt2_ushort4, true },
1246d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ushort13rs_allocationPKtjjj", (void *)&SC_SetElementAt3_ushort, true },
1247d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort213rs_allocationPKDv2_tjjj", (void *)&SC_SetElementAt3_ushort2, true },
1248d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort313rs_allocationPKDv3_tjjj", (void *)&SC_SetElementAt3_ushort3, true },
1249d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_ushort413rs_allocationPKDv4_tjjj", (void *)&SC_SetElementAt3_ushort4, true },
1250d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1251d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsj", (void *)&SC_SetElementAt1_short, true },
1252d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sj", (void *)&SC_SetElementAt1_short2, true },
1253d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sj", (void *)&SC_SetElementAt1_short3, true },
1254d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sj", (void *)&SC_SetElementAt1_short4, true },
1255d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsjj", (void *)&SC_SetElementAt2_short, true },
1256d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sjj", (void *)&SC_SetElementAt2_short2, true },
1257d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sjj", (void *)&SC_SetElementAt2_short3, true },
1258d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sjj", (void *)&SC_SetElementAt2_short4, true },
1259d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_short13rs_allocationPKsjjj", (void *)&SC_SetElementAt3_short, true },
1260d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short213rs_allocationPKDv2_sjjj", (void *)&SC_SetElementAt3_short2, true },
1261d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short313rs_allocationPKDv3_sjjj", (void *)&SC_SetElementAt3_short3, true },
1262d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_short413rs_allocationPKDv4_sjjj", (void *)&SC_SetElementAt3_short4, true },
1263d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1264d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjj", (void *)&SC_SetElementAt1_uint, true },
1265d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jj", (void *)&SC_SetElementAt1_uint2, true },
1266d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jj", (void *)&SC_SetElementAt1_uint3, true },
1267d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jj", (void *)&SC_SetElementAt1_uint4, true },
1268d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjjj", (void *)&SC_SetElementAt2_uint, true },
1269d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jjj", (void *)&SC_SetElementAt2_uint2, true },
1270d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jjj", (void *)&SC_SetElementAt2_uint3, true },
1271d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jjj", (void *)&SC_SetElementAt2_uint4, true },
1272d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_uint13rs_allocationPKjjjj", (void *)&SC_SetElementAt3_uint, true },
1273d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint213rs_allocationPKDv2_jjjj", (void *)&SC_SetElementAt3_uint2, true },
1274d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint313rs_allocationPKDv3_jjjj", (void *)&SC_SetElementAt3_uint3, true },
1275d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_uint413rs_allocationPKDv4_jjjj", (void *)&SC_SetElementAt3_uint4, true },
1276d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1277cca3d6ca444bef3b6d75431ec19bd07bfe40a733Stephen Hines    { "_Z18rsSetElementAt_int13rs_allocationPKij", (void *)&SC_SetElementAt1_int, true },
1278d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ij", (void *)&SC_SetElementAt1_int2, true },
1279d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ij", (void *)&SC_SetElementAt1_int3, true },
1280d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ij", (void *)&SC_SetElementAt1_int4, true },
1281d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsSetElementAt_int13rs_allocationPKijj", (void *)&SC_SetElementAt2_int, true },
1282d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ijj", (void *)&SC_SetElementAt2_int2, true },
1283d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ijj", (void *)&SC_SetElementAt2_int3, true },
1284d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ijj", (void *)&SC_SetElementAt2_int4, true },
1285d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z18rsSetElementAt_int13rs_allocationPKijjj", (void *)&SC_SetElementAt3_int, true },
1286d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int213rs_allocationPKDv2_ijjj", (void *)&SC_SetElementAt3_int2, true },
1287d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int313rs_allocationPKDv3_ijjj", (void *)&SC_SetElementAt3_int3, true },
1288d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_int413rs_allocationPKDv4_ijjj", (void *)&SC_SetElementAt3_int4, true },
1289d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1290cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKmj", (void *)&SC_SetElementAt1_ulong, true },
1291d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mj", (void *)&SC_SetElementAt1_ulong2, true },
1292d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mj", (void *)&SC_SetElementAt1_ulong3, true },
1293d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mj", (void *)&SC_SetElementAt1_ulong4, true },
1294d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationPKmjj", (void *)&SC_SetElementAt2_ulong, true },
1295d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mjj", (void *)&SC_SetElementAt2_ulong2, true },
1296d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mjj", (void *)&SC_SetElementAt2_ulong3, true },
1297d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mjj", (void *)&SC_SetElementAt2_ulong4, true },
1298d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_ulong13rs_allocationPKmjjj", (void *)&SC_SetElementAt3_ulong, true },
1299d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_mjjj", (void *)&SC_SetElementAt3_ulong2, true },
1300d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_mjjj", (void *)&SC_SetElementAt3_ulong3, true },
1301d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_mjjj", (void *)&SC_SetElementAt3_ulong4, true },
1302d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1303cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    // Pre-21 compatibility path
1304cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKyj", (void *)&SC_SetElementAt1_ulong, true },
1305cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_yj", (void *)&SC_SetElementAt1_ulong2, true },
1306cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_yj", (void *)&SC_SetElementAt1_ulong3, true },
1307cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_yj", (void *)&SC_SetElementAt1_ulong4, true },
1308cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKyjj", (void *)&SC_SetElementAt2_ulong, true },
1309cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_yjj", (void *)&SC_SetElementAt2_ulong2, true },
1310cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_yjj", (void *)&SC_SetElementAt2_ulong3, true },
1311cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_yjj", (void *)&SC_SetElementAt2_ulong4, true },
1312cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_ulong13rs_allocationPKyjjj", (void *)&SC_SetElementAt3_ulong, true },
1313cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong213rs_allocationPKDv2_yjjj", (void *)&SC_SetElementAt3_ulong2, true },
1314cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong313rs_allocationPKDv3_yjjj", (void *)&SC_SetElementAt3_ulong3, true },
1315cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z21rsSetElementAt_ulong413rs_allocationPKDv4_yjjj", (void *)&SC_SetElementAt3_ulong4, true },
1316cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray
1317d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKlj", (void *)&SC_SetElementAt1_long, true },
1318d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_lj", (void *)&SC_SetElementAt1_long2, true },
1319d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_lj", (void *)&SC_SetElementAt1_long3, true },
1320d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_lj", (void *)&SC_SetElementAt1_long4, true },
1321d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKljj", (void *)&SC_SetElementAt2_long, true },
1322d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_ljj", (void *)&SC_SetElementAt2_long2, true },
1323d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_ljj", (void *)&SC_SetElementAt2_long3, true },
1324d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_ljj", (void *)&SC_SetElementAt2_long4, true },
1325d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z19rsSetElementAt_long13rs_allocationPKljjj", (void *)&SC_SetElementAt3_long, true },
1326d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_ljjj", (void *)&SC_SetElementAt3_long2, true },
1327d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_ljjj", (void *)&SC_SetElementAt3_long3, true },
1328d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_ljjj", (void *)&SC_SetElementAt3_long4, true },
1329d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
1330cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    // Pre-21 compatibility path
1331cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z19rsSetElementAt_long13rs_allocationPKxj", (void *)&SC_SetElementAt1_long, true },
1332cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_xj", (void *)&SC_SetElementAt1_long2, true },
1333cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_xj", (void *)&SC_SetElementAt1_long3, true },
1334cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_xj", (void *)&SC_SetElementAt1_long4, true },
1335cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z19rsSetElementAt_long13rs_allocationPKxjj", (void *)&SC_SetElementAt2_long, true },
1336cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_xjj", (void *)&SC_SetElementAt2_long2, true },
1337cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_xjj", (void *)&SC_SetElementAt2_long3, true },
1338cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_xjj", (void *)&SC_SetElementAt2_long4, true },
1339cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z19rsSetElementAt_long13rs_allocationPKxjjj", (void *)&SC_SetElementAt3_long, true },
1340cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long213rs_allocationPKDv2_xjjj", (void *)&SC_SetElementAt3_long2, true },
1341cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long313rs_allocationPKDv3_xjjj", (void *)&SC_SetElementAt3_long3, true },
1342cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray    { "_Z20rsSetElementAt_long413rs_allocationPKDv4_xjjj", (void *)&SC_SetElementAt3_long4, true },
1343cbdb6480528fc374144df1ae9c604c9100d33268Tim Murray
134440db7a2a344bf56c82c62f481a57f9ff59f93c91Stephen Hines    { "_Z20rsSetElementAt_float13rs_allocationPKfj", (void *)&SC_SetElementAt1_float, true },
1345d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fj", (void *)&SC_SetElementAt1_float2, true },
1346d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fj", (void *)&SC_SetElementAt1_float3, true },
1347d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fj", (void *)&SC_SetElementAt1_float4, true },
1348d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_float13rs_allocationPKfjj", (void *)&SC_SetElementAt2_float, true },
1349d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fjj", (void *)&SC_SetElementAt2_float2, true },
1350d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fjj", (void *)&SC_SetElementAt2_float3, true },
1351d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fjj", (void *)&SC_SetElementAt2_float4, true },
1352d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z20rsSetElementAt_float13rs_allocationPKfjjj", (void *)&SC_SetElementAt3_float, true },
1353d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float213rs_allocationPKDv2_fjjj", (void *)&SC_SetElementAt3_float2, true },
1354d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float313rs_allocationPKDv3_fjjj", (void *)&SC_SetElementAt3_float3, true },
1355d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_float413rs_allocationPKDv4_fjjj", (void *)&SC_SetElementAt3_float4, true },
1356d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams
135740db7a2a344bf56c82c62f481a57f9ff59f93c91Stephen Hines    { "_Z21rsSetElementAt_double13rs_allocationPKdj", (void *)&SC_SetElementAt1_double, true },
1358d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_dj", (void *)&SC_SetElementAt1_double2, true },
1359d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_dj", (void *)&SC_SetElementAt1_double3, true },
1360d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_dj", (void *)&SC_SetElementAt1_double4, true },
1361d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_double13rs_allocationPKdjj", (void *)&SC_SetElementAt2_double, true },
1362d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_djj", (void *)&SC_SetElementAt2_double2, true },
1363d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_djj", (void *)&SC_SetElementAt2_double3, true },
1364d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_djj", (void *)&SC_SetElementAt2_double4, true },
1365d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z21rsSetElementAt_double13rs_allocationPKdjjj", (void *)&SC_SetElementAt3_double, true },
1366d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double213rs_allocationPKDv2_djjj", (void *)&SC_SetElementAt3_double2, true },
1367d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double313rs_allocationPKDv3_djjj", (void *)&SC_SetElementAt3_double3, true },
1368d09b9d667438c82e00c83cd21f693f32e3cf9f4bJason Sams    { "_Z22rsSetElementAt_double413rs_allocationPKDv4_djjj", (void *)&SC_SetElementAt3_double4, true },
13695261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
13705261a5ea546ff358edd5aac7602fc4132434f481Jason Sams
137187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Refcounting
1372444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#ifndef __LP64__
137387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true },
137487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true },
137587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
137687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true },
137787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true },
137887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
137987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true },
138087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true },
138187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true },
138387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true },
138487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
138587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true },
138687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true },
1387444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#else
1388444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject_ByRef, true },
1389444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject_ByRef, true },
1390444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1391444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject_ByRef, true },
1392444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject_ByRef, true },
1393444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1394444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject_ByRef, true },
1395444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject_ByRef, true },
1396444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1397444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject_ByRef, true },
1398444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject_ByRef, true },
1399444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen
1400444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject_ByRef, true },
1401444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject_ByRef, true },
1402444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen#endif
1403444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true },
1404444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true },
1405444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true },
1406444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true },
1407444bd208b4f129bd8e4c0cce4cf6d709c8900891Yong Chen    { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true },
140887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
14099e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams
141087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true },
141187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true },
141287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true },
141387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
141487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true },
141587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true },
141687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true },
141787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
141887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true },
141987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true },
142087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true },
142187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
142287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true },
142387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true },
142487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true },
142587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
142687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true },
142787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true },
142887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true },
142987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
143087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true },
143187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true },
143287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true },
143387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
143487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Allocation ops
143587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true },
143687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false },
143787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false },
143874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false },
14390b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
144047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true },
1441b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z18rsAllocationIoSend13rs_allocation", (void *)&SC_AllocationIoSend, false },
1442b322033c13487a174bb9c26466e9684d1ff4de8dJason Sams    { "_Z21rsAllocationIoReceive13rs_allocation", (void *)&SC_AllocationIoReceive, false },
14430b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
144474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false },
144574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false },
144687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
144787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // Messaging
144887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
144987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClienti", (void *)&SC_ToClient, false },
145087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false },
145187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false },
145287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false },
14530b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
145487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false },
145587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false },
145687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false },
145787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false },
145887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false },
145987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false },
1460a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant19rs_program_fragmentj13rs_allocation", (void *)&SC_BindFragmentConstant, false },
1461a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchouk    { "_Z15rsgBindConstant17rs_program_vertexj13rs_allocation", (void *)&SC_BindVertexConstant, false },
146287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
146387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false },
146487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false },
146587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false },
146687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
146787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false },
146887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
146987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false },
147087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
147187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false },
147287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false },
147387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
147487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
147587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false },
147687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false },
147787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false },
147887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false },
147987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
148087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false },
148187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false },
148287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false },
148387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false },
148487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
148587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false },
148687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false },
148787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
148887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false },
148987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false },
149087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false },
149187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false },
149287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
149387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false },
149487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false },
149587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
149687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false },
149787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false },
149887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false },
149987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false },
150087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false },
15011aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray
150287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1503aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true },
1504aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true },
1505f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK14rs_script_call", (void *)&SC_ForEach_SAAUS, true },
15062f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray
15072f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray    //rsForEach with usrdata is not supported in 64-bit
15082f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray#ifndef __LP64__
1509aa152101cc4d04597d9aefc3e5a1454eaf39d2ccJason Sams    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true },
1510f598811a60088236222bb1879503842094ca378bStephen Hines    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK14rs_script_call", (void *)&SC_ForEach_SAAULS, true },
15112f6dc8469a45fa2dafcb772c76009565d0c3885fTim Murray#endif
15121aa9dfc002f6b763d34d75d9f47abb4aa70584a2Tim Murray#endif // RS_COMPATIBILITY_LIB
151387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
151464147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#ifndef __LP64__
151587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // time
151687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z6rsTimePi", (void *)&SC_Time, true },
151787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true },
151864147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#else
151964147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    // time
152064147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    { "_Z6rsTimePl", (void *)&SC_Time, true },
152164147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray    { "_Z11rsLocaltimeP5rs_tmPKl", (void *)&SC_LocalTime, true },
152264147ebf4f0b1c23d2caf2cf7c1675d27de97d99Tim Murray#endif
152387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true },
152487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true },
152587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z7rsGetDtv", (void*)&SC_GetDt, false },
152687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
152787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    // misc
15280b575de8ed0b628d84d256f5846500b0385979bdTim Murray#ifndef RS_COMPATIBILITY_LIB
152987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z5colorffff", (void *)&SC_Color, false },
153087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    { "_Z9rsgFinishv", (void *)&SC_Finish, false },
15310b575de8ed0b628d84d256f5846500b0385979bdTim Murray#endif
153287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
153344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    { nullptr, nullptr, false }
153487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams};
153587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
15362544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar#ifndef RS_COMPATIBILITY_LIB
15372544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15382544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainartypedef struct { unsigned int val; } rs_allocation_usage_type;
15392544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
1540709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainarvoid rsAllocationMarkDirty(::rs_allocation a) {
154131729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_AllocationSyncAll(RS_CAST(a));
1542709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar}
1543709a1894c9c265433dc657878cba7b1be2514040Pirama Arumuga Nainar
15442544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgAllocationSyncAll(::rs_allocation a) {
154531729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_AllocationSyncAll(RS_CAST(a));
15462544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15472544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15482544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgAllocationSyncAll(::rs_allocation a,
15492544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          unsigned int usage) {
155031729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_AllocationSyncAll2(RS_CAST(a), (RsAllocationUsageType) usage);
15512544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15522544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgAllocationSyncAll(::rs_allocation a,
15532544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          rs_allocation_usage_type source) {
155431729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_AllocationSyncAll2(RS_CAST(a), (RsAllocationUsageType) source.val);
15552544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15562544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15572544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramFragment(::rs_program_fragment pf) {
15582544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramFragment((ProgramFragment *) pf.p);
15592544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15602544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15612544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramStore(::rs_program_store ps) {
15622544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramStore((ProgramStore *) ps.p);
15632544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15642544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15652544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramVertex(::rs_program_vertex pv) {
15662544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramVertex((ProgramVertex *) pv.p);
15672544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15682544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15692544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindProgramRaster(::rs_program_raster pr) {
15702544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindProgramRaster((ProgramRaster *) pr.p);
15712544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15722544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15732544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindSampler(::rs_program_fragment pf,
15742544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    uint32_t slot,
15752544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    ::rs_sampler s) {
15762544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindSampler((ProgramFragment *) pf.p, slot, (Sampler *) s.p);
15772544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15782544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15792544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindTexture(::rs_program_fragment pf,
15802544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    uint32_t slot,
15812544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    ::rs_allocation a) {
15822544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindTexture((ProgramFragment *) pf.p,
15832544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          slot,
15842544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          (Allocation *) a.p);
15852544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15862544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15872544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindConstant(::rs_program_fragment pf,
15882544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     uint32_t slot,
15892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     ::rs_allocation a) {
15902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFragmentConstant((ProgramFragment *) pf.p,
15912544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                   slot,
15922544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                   (Allocation *) a.p);
15932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
15942544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
15952544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindConstant(::rs_program_vertex pv,
15962544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     uint32_t slot,
15972544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                     ::rs_allocation a) {
15982544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindVertexConstant((ProgramVertex *) pv.p,
15992544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                 slot,
16002544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                 (Allocation *) a.p);
16012544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16022544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16032544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexLoadProjectionMatrix(const rs_matrix4x4 *m) {
16042544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpLoadProjectionMatrix((const rsc_Matrix *) m);
16052544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16062544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16072544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexLoadModelMatrix(const rs_matrix4x4 *m) {
16082544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpLoadModelMatrix((const rsc_Matrix *) m);
16092544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16102544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16112544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexLoadTextureMatrix(const rs_matrix4x4 *m) {
16122544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpLoadTextureMatrix((const rsc_Matrix *) m);
16132544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16142544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16152544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramVertexGetProjectionMatrix(rs_matrix4x4 *m) {
16162544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_VpGetProjectionMatrix((rsc_Matrix *) m);
16172544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16182544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16192544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgProgramFragmentConstantColor(::rs_program_fragment pf,
16202544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                     float r, float g,
16212544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                     float b, float a) {
16222544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16232544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_PfConstantColor((ProgramFragment *) pf.p, r, g, b, a);
16242544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16252544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16262544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainaruint32_t rsgGetWidth(void) {
16272544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_GetWidth();
16282544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16292544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16302544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainaruint32_t rsgGetHeight(void) {
16312544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_GetHeight();
16322544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16332544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16342544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawRect(float x1, float y1, float x2, float y2, float z) {
16352544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawRect(x1, y1, x2, y2, z);
16362544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16372544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16382544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawQuad(float x1, float y1, float z1,
16392544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                 float x2, float y2, float z2,
16402544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                 float x3, float y3, float z3,
16412544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                 float x4, float y4, float z4) {
16422544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16432544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    SC_DrawQuad(x1, y1, z1,
16442544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                x2, y2, z2,
16452544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                x3, y3, z3,
16462544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                x4, y4, z4);
16472544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16482544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16492544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
16502544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          float x2, float y2, float z2, float u2, float v2,
16512544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          float x3, float y3, float z3, float u3, float v3,
16522544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                          float x4, float y4, float z4, float u4, float v4) {
16532544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16542544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return rsgDrawQuadTexCoords(x1, y1, z1, u1, v1,
16552544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                x2, y2, z2, u2, v2,
16562544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                x3, y3, z3, u3, v3,
16572544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                x4, y4, z4, u4, v4);
16582544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16592544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16602544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawSpriteScreenspace(float x, float y, float z, float w, float h) {
16612544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawSpriteScreenspace(x, y, z, w, h);
16622544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16632544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16642544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawMesh(::rs_mesh ism) {
16652544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawMesh((Mesh *) ism.p);
16662544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16672544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16682544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawMesh(::rs_mesh ism, uint primitiveIndex) {
16692544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawMeshPrimitive((Mesh *) ism.p, primitiveIndex);
16702544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16712544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16722544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawMesh(::rs_mesh ism, uint primitiveIndex, uint start, uint len) {
16732544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawMeshPrimitiveRange((Mesh *) ism.p, primitiveIndex, start, len);
16742544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16752544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16762544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid  rsgMeshComputeBoundingBox(::rs_mesh mesh,
16772544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                float *minX, float *minY, float *minZ,
16782544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                float *maxX, float *maxY, float *maxZ) {
16792544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16802544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_MeshComputeBoundingBox((Mesh *) mesh.p,
16812544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                minX, minY, minZ,
16822544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                                maxX, maxY, maxZ);
16832544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16842544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16852544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearColor(float r, float g, float b, float a) {
16862544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearColor(r, g, b, a);
16872544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16882544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearDepth(float value) {
16902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearDepth(value);
16912544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16922544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawText(const char *text, int x, int y) {
16942544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawText(text, x, y);
16952544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
16962544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
16972544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgDrawText(::rs_allocation a, int x, int y) {
16982544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_DrawTextAlloc((Allocation *) a.p, x, y);
16992544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17002544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17012544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgMeasureText(const char *text, int *left, int *right,
17022544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    int *top, int *bottom) {
17032544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_MeasureText(text, left, right, top, bottom);
17042544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17052544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17062544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgMeasureText(::rs_allocation a, int *left, int *right,
17072544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar                    int *top, int *bottom) {
17082544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_MeasureTextAlloc((Allocation *) a.p, left, right, top, bottom);
17092544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17102544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17112544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindFont(::rs_font font) {
17122544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFont((Font *) font.p);
17132544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17142544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17152544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgFontColor(float r, float g, float b, float a) {
17162544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_FontColor(r, g, b, a);
17172544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17182544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17192544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindColorTarget(::rs_allocation a, uint slot) {
17202544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFrameBufferObjectColorTarget((Allocation *) a.p, slot);
17212544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17222544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17232544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgBindDepthTarget(::rs_allocation a) {
17242544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_BindFrameBufferObjectDepthTarget((Allocation *) a.p);
17252544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17262544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17272544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearColorTarget(uint slot) {
17282544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearFrameBufferObjectColorTarget(slot);
17292544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17302544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17312544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearDepthTarget(void) {
17322544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearFrameBufferObjectDepthTarget(nullptr, nullptr);
17332544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17342544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17352544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgClearAllRenderTargets(void) {
17362544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_ClearFrameBufferObjectTargets(nullptr, nullptr);
17372544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17382544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17392544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid color(float r, float g, float b, float a) {
17402544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_Color(r, g, b, a);
17412544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17422544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17432544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainarvoid rsgFinish(void) {
17442544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar    return SC_Finish();
17452544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar}
17462544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
17472544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar#endif
17482544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
1749d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray//////////////////////////////////////////////////////////////////////////////
1750d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray// Compatibility Library entry points
1751d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray//////////////////////////////////////////////////////////////////////////////
1752d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1753dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifndef __LP64__
1754dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#define IS_CLEAR_SET_OBJ(t, u, v) \
1755f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    bool rsIsObject(t src) { \
175644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes        return src.p != nullptr; \
1757f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    } \
1758d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    void __attribute__((overloadable)) rsClearObject(t *dst) { \
1759f29edf80510d483b8663e9d8b859959e37361aeeJason Sams        return SC_ClearObject(reinterpret_cast<rs_object_base *>(dst)); \
1760d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    } \
1761d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    void __attribute__((overloadable)) rsSetObject(t *dst, t src) { \
1762dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        android::renderscript::rs_object_base cast; \
1763dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        cast.p = (ObjectBase *) src.p; \
1764dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return SC_SetObject(reinterpret_cast<rs_object_base *>(dst), cast);\
1765d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    }
1766dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1767dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#define IS_CLEAR_SET_OBJ(t, u, v) \
1768dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    extern "C" { bool u(t* src) { \
1769dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return src->p != nullptr; \
1770dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } }\
1771dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    void __attribute__((overloadable)) rsClearObject(t *dst) { \
1772dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return SC_ClearObject(reinterpret_cast<rs_object_base *>(dst)); \
1773dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } \
1774dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    extern "C" {\
1775dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar      void v (t *dst, t *src) { \
1776dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar        return SC_SetObject_ByRef(reinterpret_cast<rs_object_base *>(dst),\
1777dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                  reinterpret_cast<rs_object_base *>(src));\
1778dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    } }
1779dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1780dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1781dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_element, _Z10rsIsObject10rs_element, _Z11rsSetObjectP10rs_elementS_)
1782dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_type, _Z10rsIsObject7rs_type, _Z11rsSetObjectP7rs_typeS_)
1783dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_allocation, _Z10rsIsObject13rs_allocation, _Z11rsSetObjectP13rs_allocationS_)
1784dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_sampler, _Z10rsIsObject10rs_sampler, _Z11rsSetObjectP10rs_samplerS_)
1785dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_script, _Z10rsIsObject9rs_script, _Z11rsSetObjectP9rs_scriptS_)
1786dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
17872544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_mesh, _Z10rsIsObject7rs_mesh, _Z11rsSetObjectP7rs_meshS_)
17882544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_fragment, _Z10rsIsObject19rs_program_fragment, _Z11rsSetObjectP19rs_program_fragmentS_)
17892544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_vertex, _Z10rsIsObject17rs_program_vertex, _Z11rsSetObjectP17rs_program_vertexS_)
17902544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_raster, _Z10rsIsObject17rs_program_raster, _Z11rsSetObjectP17rs_program_rasterS_)
17912544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_program_store, _Z10rsIsObject16rs_program_store, _Z11rsSetObjectP16rs_program_storeS_)
17922544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga NainarIS_CLEAR_SET_OBJ(::rs_font, _Z10rsIsObject7rs_font, _Z11rsSetObjectP7rs_fontS_)
17932544371624a3dd21ae2355e8fea870e29009332aPirama Arumuga Nainar
1794d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1795f827cadde659212b266b9635128c98515a7dcb01Stephen Hines#undef IS_CLEAR_SET_OBJ
1796d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1797dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef RS_COMPATIBILITY_LIB
179847211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murraystatic const Allocation * SC_GetAllocation(const void *ptr) {
179947211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
180047211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    const Script *sc = RsdCpuReference::getTlsScript();
180147211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray    return rsdScriptGetAllocationForPointer(rsc, sc, ptr);
180247211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray}
180347211dca5b2fc1aa5680ddebe5c4270c08c06e5dTim Murray
1804d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayconst Allocation * rsGetAllocation(const void *ptr) {
1805d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return SC_GetAllocation(ptr);
1806d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1807d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1808dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1809dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarconst android::renderscript::rs_allocation rsGetAllocation(const void *ptr) {
1810dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifdef __i386__
1811dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    android::renderscript::rs_allocation obj;
1812dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    obj.p = (Allocation *) SC_GetAllocation(ptr);
1813dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return obj;
1814dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1815dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_GetAllocation(ptr);
1816dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1817dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
1818dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#endif
1819dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1820dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1821a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsAllocationIoSend(::rs_allocation a) {
182231729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_AllocationIoSend(RS_CAST(a));
18237a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
18247a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
1825a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsAllocationIoReceive(::rs_allocation a) {
182631729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_AllocationIoReceive(RS_CAST(a));
18277a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
18287a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
18297a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
18307a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinesvoid __attribute__((overloadable)) rsAllocationCopy1DRange(
1831a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation dstAlloc,
18327a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstOff, uint32_t dstMip, uint32_t count,
1833a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation srcAlloc,
18347a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcOff, uint32_t srcMip) {
183531729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_AllocationCopy1DRange(RS_CAST(dstAlloc), dstOff, dstMip, count,
183631729ad313f009d430255bfac8ef644db0c9215bYong Chen                             RS_CAST(srcAlloc), srcOff, srcMip);
18377a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
18387a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
18397a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hinesvoid __attribute__((overloadable)) rsAllocationCopy2DRange(
1840a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation dstAlloc,
18417a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstXoff, uint32_t dstYoff,
18427a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t dstMip, rs_allocation_cubemap_face dstFace,
18437a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t width, uint32_t height,
1844a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams        ::rs_allocation srcAlloc,
18457a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcXoff, uint32_t srcYoff,
18467a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        uint32_t srcMip, rs_allocation_cubemap_face srcFace) {
184731729ad313f009d430255bfac8ef644db0c9215bYong Chen    SC_AllocationCopy2DRange(RS_CAST(dstAlloc), dstXoff, dstYoff,
18487a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines                             dstMip, dstFace, width, height,
184931729ad313f009d430255bfac8ef644db0c9215bYong Chen                             RS_CAST(srcAlloc), srcXoff, srcYoff,
18507a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines                             srcMip, srcFace);
18517a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines}
18527a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
1853a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1854a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1855a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1856d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const void *usr,
1857d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const rs_script_call *call) {
185831729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAAUS(RS_CAST(script), RS_CAST(in), RS_CAST(out), usr, (RsScriptCall*)call);
1859d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1860d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1861a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1862a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1863dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                             ::rs_allocation out,
1864dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                             const void *usr) {
186531729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAAU(RS_CAST(script), RS_CAST(in), RS_CAST(out), usr);
1866dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
1867dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
1868dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1869dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar                                             ::rs_allocation in,
1870a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out) {
187131729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAA(RS_CAST(script), RS_CAST(in), RS_CAST(out));
1872276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1873276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1874447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar#ifndef __LP64__
1875a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1876a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1877a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1878276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines                                             const void *usr,
1879276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines                                             uint32_t usrLen) {
188031729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAAUL(RS_CAST(script), RS_CAST(in), RS_CAST(out), usr, usrLen);
1881276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1882276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1883a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Samsvoid __attribute__((overloadable)) rsForEach(::rs_script script,
1884a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation in,
1885a36c50a6ab87f4c9049318d4c6c8ec7b0a1e6e12Jason Sams                                             ::rs_allocation out,
1886d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const void *usr,
1887d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             uint32_t usrLen,
1888d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray                                             const rs_script_call *call) {
188931729ad313f009d430255bfac8ef644db0c9215bYong Chen    return SC_ForEach_SAAULS(RS_CAST(script), RS_CAST(in), RS_CAST(out), usr, usrLen, (RsScriptCall*)call);
1890d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1891447e8362fc760b3d2789dbfe1eec33f1fc6b1c0ePirama Arumuga Nainar#endif
1892d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1893dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar// #if defined(RS_COMPATIBILITY_LIB) || !defined(__LP64__)
1894dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#ifndef __LP64__
1895d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayint rsTime(int *timer) {
1896d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return SC_Time(timer);
1897d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1898140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines
1899140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hinesrs_tm* rsLocaltime(rs_tm* local, const int *timer) {
1900140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines    return (rs_tm*)(SC_LocalTime((tm*)local, (time_t *)timer));
1901140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines}
1902dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar#else
1903dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainartime_t rsTime(time_t * timer) {
1904dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return SC_Time(timer);
1905dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
1906d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1907dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarrs_tm* rsLocaltime(rs_tm* local, const time_t *timer) {
1908dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    return (rs_tm*)(SC_LocalTime((tm*)local, (time_t *)timer));
1909d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1910140a8eb2ffc08af5d7aec4f7f701720235703677Stephen Hines#endif // RS_COMPATIBILITY_LIB
1911d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1912d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murrayint64_t rsUptimeMillis() {
1913d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    Context *rsc = RsdCpuReference::getTlsContext();
1914d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    return rsrUptimeMillis(rsc);
1915d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1916d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
1917cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hinesint64_t rsUptimeNanos() {
1918cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines    return SC_UptimeNanos();
1919cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines}
1920cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines
1921cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hinesfloat rsGetDt() {
1922cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines    return SC_GetDt();
1923cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines}
1924cadee38f6940e5584d3ec3398a21bd2a494361e2Stephen Hines
1925276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClient(int cmdID) {
1926276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClient(cmdID);
1927276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1928276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1929276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClient(int cmdID, const void *data, uint32_t len) {
1930276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClient2(cmdID, data, len);
1931d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray}
1932d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray
19330b575de8ed0b628d84d256f5846500b0385979bdTim Murrayuint32_t rsSendToClientBlocking(int cmdID) {
1934276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClientBlocking(cmdID);
1935276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines}
1936276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines
1937276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsSendToClientBlocking(int cmdID, const void *data, uint32_t len) {
1938276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hines    return SC_ToClientBlocking2(cmdID, data, len);
19390b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19400b575de8ed0b628d84d256f5846500b0385979bdTim Murray
19410b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF(const char *s, float f) {
19420b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %f, 0x%08x", s, f, *((int *) (&f)));
19430b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19440b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv2(const char *s, float f1, float f2) {
19450b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f}", s, f1, f2);
19460b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19470b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv3(const char *s, float f1, float f2, float f3) {
19480b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f}", s, f1, f2, f3);
19490b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19500b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFv4(const char *s, float f1, float f2, float f3, float f4) {
19510b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f}", s, f1, f2, f3, f4);
19520b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19530b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF2(const char *s, float2 f) {
19540b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f}", s, f.x, f.y);
19550b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19560b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF3(const char *s, float3 f) {
19570b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f}", s, f.x, f.y, f.z);
19580b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19590b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugF4(const char *s, float4 f) {
19600b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f}", s, f.x, f.y, f.z, f.w);
19610b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19620b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugD(const char *s, double d) {
19630b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d)));
19640b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19656ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouilletstatic void SC_debugD2(const char *s, double2 d) {
19666ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet    ALOGD("%s {%f, %f}", s, d.x, d.y);
19676ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet}
19686ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouilletstatic void SC_debugD3(const char *s, double3 d) {
19696ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet    ALOGD("%s {%f, %f, %f}", s, d.x, d.y, d.z);
19706ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet}
19716ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouilletstatic void SC_debugD4(const char *s, double4 d) {
19726ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet    ALOGD("%s {%f, %f, %f, %f}", s, d.x, d.y, d.z, d.w);
19736ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet}
19740b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM4v4(const char *s, const float *f) {
19750b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]);
19760b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]);
19770b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f", s, f[2], f[6], f[10], f[14]);
19780b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f, %f}", s, f[3], f[7], f[11], f[15]);
19790b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19800b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM3v3(const char *s, const float *f) {
19810b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f, %f", s, f[0], f[3], f[6]);
19820b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f", s, f[1], f[4], f[7]);
19830b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f, %f}",s, f[2], f[5], f[8]);
19840b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19850b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugFM2v2(const char *s, const float *f) {
19860b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%f, %f", s, f[0], f[2]);
19870b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s  %f, %f}",s, f[1], f[3]);
19880b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19890b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI8(const char *s, char c) {
19900b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hhd  0x%hhx", s, c, (unsigned char)c);
19910b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19920b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC2(const char *s, char2 c) {
19930b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhd, %hhd}  0x%hhx 0x%hhx", s, c.x, c.y, (unsigned char)c.x, (unsigned char)c.y);
19940b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19950b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC3(const char *s, char3 c) {
19960b575de8ed0b628d84d256f5846500b0385979bdTim 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);
19970b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
19980b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugC4(const char *s, char4 c) {
19990b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20000b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20010b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU8(const char *s, unsigned char c) {
20020b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hhu  0x%hhx", s, c, c);
20030b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20040b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC2(const char *s, uchar2 c) {
20050b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hhu, %hhu}  0x%hhx 0x%hhx", s, c.x, c.y, c.x, c.y);
20060b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20070b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC3(const char *s, uchar3 c) {
20080b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20090b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20100b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUC4(const char *s, uchar4 c) {
20110b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20120b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20130b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI16(const char *s, short c) {
20140b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hd  0x%hx", s, c, c);
20150b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20160b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS2(const char *s, short2 c) {
20170b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hd, %hd}  0x%hx 0x%hx", s, c.x, c.y, c.x, c.y);
20180b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20190b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS3(const char *s, short3 c) {
20200b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20210b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20220b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugS4(const char *s, short4 c) {
20230b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20240b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20250b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU16(const char *s, unsigned short c) {
20260b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %hu  0x%hx", s, c, c);
20270b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20280b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS2(const char *s, ushort2 c) {
20290b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%hu, %hu}  0x%hx 0x%hx", s, c.x, c.y, c.x, c.y);
20300b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20310b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS3(const char *s, ushort3 c) {
20320b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20330b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20340b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUS4(const char *s, ushort4 c) {
20350b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20360b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20370b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI32(const char *s, int32_t i) {
20380b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %d  0x%x", s, i, i);
20390b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20400b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI2(const char *s, int2 i) {
20410b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%d, %d}  0x%x 0x%x", s, i.x, i.y, i.x, i.y);
20420b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20430b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI3(const char *s, int3 i) {
20440b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20450b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20460b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugI4(const char *s, int4 i) {
20470b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20480b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20490b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugU32(const char *s, uint32_t i) {
20500b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %u  0x%x", s, i, i);
20510b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20520b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI2(const char *s, uint2 i) {
20530b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s {%u, %u}  0x%x 0x%x", s, i.x, i.y, i.x, i.y);
20540b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20550b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI3(const char *s, uint3 i) {
20560b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20570b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20580b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUI4(const char *s, uint4 i) {
20590b575de8ed0b628d84d256f5846500b0385979bdTim 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);
20600b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
2061127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2062127d51c1193f4055795da967d47a13bedd3cb951Miao Wangtemplate <typename T>
2063127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic inline long long LL(const T &x) {
2064127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    return static_cast<long long>(x);
2065127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
2066127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2067127d51c1193f4055795da967d47a13bedd3cb951Miao Wangtemplate <typename T>
2068127d51c1193f4055795da967d47a13bedd3cb951Miao Wangstatic inline unsigned long long LLu(const T &x) {
2069127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    return static_cast<unsigned long long>(x);
2070127d51c1193f4055795da967d47a13bedd3cb951Miao Wang}
2071127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2072dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainarstatic void SC_debugLL64(const char *s, long long ll) {
2073dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar    ALOGD("%s %lld  0x%llx", s, LL(ll), LL(ll));
2074dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar}
2075dc0d8f7c0f1f43f25c34fbc04656ad578f6e953bPirama Arumuga Nainar
20760b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL2(const char *s, long2 ll) {
2077127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%lld, %lld}  0x%llx 0x%llx", s, LL(ll.x), LL(ll.y), LL(ll.x), LL(ll.y));
20780b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20790b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL3(const char *s, long3 ll) {
2080127d51c1193f4055795da967d47a13bedd3cb951Miao 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));
20810b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20820b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugL4(const char *s, long4 ll) {
2083127d51c1193f4055795da967d47a13bedd3cb951Miao 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));
20840b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20850b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugULL64(const char *s, unsigned long long ll) {
20860b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %llu  0x%llx", s, ll, ll);
20870b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20880b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL2(const char *s, ulong2 ll) {
2089127d51c1193f4055795da967d47a13bedd3cb951Miao Wang    ALOGD("%s {%llu, %llu}  0x%llx 0x%llx", s, LLu(ll.x), LLu(ll.y), LLu(ll.x), LLu(ll.y));
20900b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20910b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL3(const char *s, ulong3 ll) {
2092127d51c1193f4055795da967d47a13bedd3cb951Miao 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));
20930b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
20940b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugUL4(const char *s, ulong4 ll) {
2095127d51c1193f4055795da967d47a13bedd3cb951Miao 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));
20960b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
2097127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
20980b575de8ed0b628d84d256f5846500b0385979bdTim Murraystatic void SC_debugP(const char *s, const void *p) {
20990b575de8ed0b628d84d256f5846500b0385979bdTim Murray    ALOGD("%s %p", s, p);
21000b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21010b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21020b575de8ed0b628d84d256f5846500b0385979bdTim Murray// TODO: allocation ops, messaging, time
21030b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21040b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f) {
21050b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugF(s, f);
21060b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21070b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21080b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2) {
21090b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv2(s, f1, f2);
21100b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21110b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21120b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2, float f3) {
21130b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv3(s, f1, f2, f3);
21140b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21150b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21160b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, float f1, float f2, float f3, float f4) {
21170b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFv4(s, f1, f2, f3, f4);
21180b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21190b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2120b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float2 *f) {
2121b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF2(s, *f);
21220b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21230b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2124b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float3 *f) {
2125b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF3(s, *f);
21260b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21270b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2128b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const float4 *f) {
2129b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugF4(s, *f);
21300b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21310b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21320b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, double d) {
21330b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugD(s, d);
21340b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21350b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21366ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouilletvoid rsDebug(const char *s, const double2 *d) {
21376ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet    SC_debugD2(s, *d);
21386ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet}
21396ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet
21406ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouilletvoid rsDebug(const char *s, const double3 *d) {
21416ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet    SC_debugD3(s, *d);
21426ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet}
21436ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet
21446ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouilletvoid rsDebug(const char *s, const double4 *d) {
21456ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet    SC_debugD4(s, *d);
21466ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet}
21476ba05171a84a7444df01b9f81a7233b17e1f120aJean-Luc Brouillet
2148b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix4x4 *m) {
21490b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugFM4v4(s, (float *) m);
21500b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21510b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2152b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix3x3 *m) {
2153d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    SC_debugFM3v3(s, (float *) m);
21540b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21550b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2156b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const rs_matrix2x2 *m) {
2157d6f1f46b2929ed56c73ba32357cde31b82972fbeTim Murray    SC_debugFM2v2(s, (float *) m);
21580b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21590b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21600b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, char c) {
21610b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI8(s, c);
21620b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21630b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2164b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char2 *c) {
2165b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC2(s, *c);
21660b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21670b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2168b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char3 *c) {
2169b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC3(s, *c);
21700b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21710b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2172b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const char4 *c) {
2173b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugC4(s, *c);
21740b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21750b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21760b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned char c) {
21770b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU8(s, c);
21780b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21790b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2180b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar2 *c) {
2181b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC2(s, *c);
21820b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21830b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2184b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar3 *c) {
2185b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC3(s, *c);
21860b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21870b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2188b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uchar4 *c) {
2189b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUC4(s, *c);
21900b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21910b575de8ed0b628d84d256f5846500b0385979bdTim Murray
21920b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, short c) {
21930b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI16(s, c);
21940b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21950b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2196b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short2 *c) {
2197b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS2(s, *c);
21980b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
21990b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2200b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short3 *c) {
2201b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS3(s, *c);
22020b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22030b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2204b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const short4 *c) {
2205b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugS4(s, *c);
22060b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22070b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22080b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned short c) {
22090b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU16(s, c);
22100b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22110b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2212b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort2 *c) {
2213b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS2(s, *c);
22140b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22150b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2216b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort3 *c) {
2217b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS3(s, *c);
22180b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22190b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2220b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ushort4 *c) {
2221b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUS4(s, *c);
22220b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22230b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22240b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, int c) {
22250b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugI32(s, c);
22260b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22270b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2228b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int2 *c) {
2229b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI2(s, *c);
22300b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22310b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2232b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int3 *c) {
2233b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI3(s, *c);
22340b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22350b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2236b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const int4 *c) {
2237b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugI4(s, *c);
22380b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22390b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22400b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned int c) {
22410b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugU32(s, c);
22420b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22430b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2244b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint2 *c) {
2245b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI2(s, *c);
22460b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22470b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2248b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint3 *c) {
2249b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI3(s, *c);
22500b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22510b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2252b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const uint4 *c) {
2253b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUI4(s, *c);
22540b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22550b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22560b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, long c) {
22570b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugLL64(s, c);
22580b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22590b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22600b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, long long c) {
22610b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugLL64(s, c);
22620b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22630b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2264b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long2 *c) {
2265b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL2(s, *c);
22660b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22670b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2268b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long3 *c) {
2269b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL3(s, *c);
22700b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22710b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2272b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const long4 *c) {
2273b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugL4(s, *c);
22740b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22750b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22760b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned long c) {
22770b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugULL64(s, c);
22780b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22790b575de8ed0b628d84d256f5846500b0385979bdTim Murray
22800b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, unsigned long long c) {
22810b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugULL64(s, c);
22820b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22830b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2284b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong2 *c) {
2285b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL2(s, *c);
22860b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22870b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2288b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong3 *c) {
2289b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL3(s, *c);
22900b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22910b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2292b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hinesvoid rsDebug(const char *s, const ulong4 *c) {
2293b0934b67b95cc27e2358c2aa4db5f7c1067c8f9bStephen Hines    SC_debugUL4(s, *c);
22940b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
22950b575de8ed0b628d84d256f5846500b0385979bdTim Murray
2296a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// FIXME: We need to export these function signatures for the compatibility
2297a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// library. The C++ name mangling that LLVM uses for ext_vector_type requires
2298a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// different versions for "long" vs. "long long". Note that the called
2299a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines// functions are still using the appropriate 64-bit sizes.
2300127d51c1193f4055795da967d47a13bedd3cb951Miao Wang
2301127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#ifndef __LP64__
2302a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l2 __attribute__((ext_vector_type(2)));
2303a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l3 __attribute__((ext_vector_type(3)));
2304a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef long l4 __attribute__((ext_vector_type(4)));
2305a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul2 __attribute__((ext_vector_type(2)));
2306a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul3 __attribute__((ext_vector_type(3)));
2307a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinestypedef unsigned long ul4 __attribute__((ext_vector_type(4)));
2308a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2309a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l2 *c) {
2310a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL2(s, *(const long2 *)c);
2311a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2312a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2313a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l3 *c) {
2314a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL3(s, *(const long3 *)c);
2315a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2316a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2317a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const l4 *c) {
2318a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugL4(s, *(const long4 *)c);
2319a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2320a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2321a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul2 *c) {
2322a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL2(s, *(const ulong2 *)c);
2323a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2324a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2325a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul3 *c) {
2326a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL3(s, *(const ulong3 *)c);
2327a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2328a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
2329a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hinesvoid rsDebug(const char *s, const ul4 *c) {
2330a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines    SC_debugUL4(s, *(const ulong4 *)c);
2331a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines}
2332127d51c1193f4055795da967d47a13bedd3cb951Miao Wang#endif
2333a5d9bef6b53ba394087c7c7b9cc60d3aaa7f121bStephen Hines
23349f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const long2 c) {
23359f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugL2(s, c);
23369f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23379f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23389f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const long3 c) {
23399f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugL3(s, c);
23409f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23419f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23429f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const long4 c) {
23439f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugL4(s, c);
23449f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23459f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23469f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const ulong2 c) {
23479f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugUL2(s, c);
23489f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23499f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23509f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const ulong3 c) {
23519f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugUL3(s, c);
23529f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23539f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23549f39aaf0145e9607200141e4716b73319055e6d7Tim Murrayvoid rsDebug(const char *s, const ulong4 c) {
23559f39aaf0145e9607200141e4716b73319055e6d7Tim Murray    SC_debugUL4(s, c);
23569f39aaf0145e9607200141e4716b73319055e6d7Tim Murray}
23579f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23589f39aaf0145e9607200141e4716b73319055e6d7Tim Murray
23590b575de8ed0b628d84d256f5846500b0385979bdTim Murrayvoid rsDebug(const char *s, const void *p) {
23600b575de8ed0b628d84d256f5846500b0385979bdTim Murray    SC_debugP(s, p);
23610b575de8ed0b628d84d256f5846500b0385979bdTim Murray}
236287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2363709a0978ae141198018ca9769f8d96292a8928e6Jason Samsextern const RsdCpuReference::CpuSymbol * rsdLookupRuntimeStub(Context * pContext, char const* name) {
236487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    ScriptC *s = (ScriptC *)pContext;
2365709a0978ae141198018ca9769f8d96292a8928e6Jason Sams    const RsdCpuReference::CpuSymbol *syms = gSyms;
236644bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    const RsdCpuReference::CpuSymbol *sym = nullptr;
236787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
236887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    if (!sym) {
2369709a0978ae141198018ca9769f8d96292a8928e6Jason Sams        while (syms->fnPtr) {
2370709a0978ae141198018ca9769f8d96292a8928e6Jason Sams            if (!strcmp(syms->name, name)) {
2371709a0978ae141198018ca9769f8d96292a8928e6Jason Sams                return syms;
237287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            }
237387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams            syms++;
237487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams        }
237587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    }
237687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
237744bef6fba6244292b751387f3d6c31cca96c28adChris Wailes    return nullptr;
237887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
2379