rsdRuntimeStubs.cpp revision 110f181b7966212a36ef18016f9b81c7322d0a2f
1/* 2 * Copyright (C) 2011-2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#include "rsContext.h" 18#include "rsScriptC.h" 19#include "rsMatrix4x4.h" 20#include "rsMatrix3x3.h" 21#include "rsMatrix2x2.h" 22#include "rsRuntime.h" 23 24#include "utils/Timers.h" 25#include "rsdCore.h" 26#include "rsdBcc.h" 27 28#include "rsdPath.h" 29#include "rsdAllocation.h" 30#include "rsdShaderCache.h" 31#include "rsdVertexArray.h" 32 33#include <time.h> 34 35using namespace android; 36using namespace android::renderscript; 37 38typedef float float2 __attribute__((ext_vector_type(2))); 39typedef float float3 __attribute__((ext_vector_type(3))); 40typedef float float4 __attribute__((ext_vector_type(4))); 41typedef double double2 __attribute__((ext_vector_type(2))); 42typedef double double3 __attribute__((ext_vector_type(3))); 43typedef double double4 __attribute__((ext_vector_type(4))); 44typedef char char2 __attribute__((ext_vector_type(2))); 45typedef char char3 __attribute__((ext_vector_type(3))); 46typedef char char4 __attribute__((ext_vector_type(4))); 47typedef unsigned char uchar2 __attribute__((ext_vector_type(2))); 48typedef unsigned char uchar3 __attribute__((ext_vector_type(3))); 49typedef unsigned char uchar4 __attribute__((ext_vector_type(4))); 50typedef short short2 __attribute__((ext_vector_type(2))); 51typedef short short3 __attribute__((ext_vector_type(3))); 52typedef short short4 __attribute__((ext_vector_type(4))); 53typedef unsigned short ushort2 __attribute__((ext_vector_type(2))); 54typedef unsigned short ushort3 __attribute__((ext_vector_type(3))); 55typedef unsigned short ushort4 __attribute__((ext_vector_type(4))); 56typedef int32_t int2 __attribute__((ext_vector_type(2))); 57typedef int32_t int3 __attribute__((ext_vector_type(3))); 58typedef int32_t int4 __attribute__((ext_vector_type(4))); 59typedef uint32_t uint2 __attribute__((ext_vector_type(2))); 60typedef uint32_t uint3 __attribute__((ext_vector_type(3))); 61typedef uint32_t uint4 __attribute__((ext_vector_type(4))); 62typedef long long long2 __attribute__((ext_vector_type(2))); 63typedef long long long3 __attribute__((ext_vector_type(3))); 64typedef long long long4 __attribute__((ext_vector_type(4))); 65typedef unsigned long long ulong2 __attribute__((ext_vector_type(2))); 66typedef unsigned long long ulong3 __attribute__((ext_vector_type(3))); 67typedef unsigned long long ulong4 __attribute__((ext_vector_type(4))); 68 69typedef uint8_t uchar; 70typedef uint16_t ushort; 71typedef uint32_t uint; 72typedef uint64_t ulong; 73 74////////////////////////////////////////////////////////////////////////////// 75// Allocation 76////////////////////////////////////////////////////////////////////////////// 77 78 79static void SC_AllocationSyncAll2(Allocation *a, RsAllocationUsageType source) { 80 Context *rsc = RsdCpuReference::getTlsContext(); 81 rsrAllocationSyncAll(rsc, a, source); 82} 83 84static void SC_AllocationSyncAll(Allocation *a) { 85 Context *rsc = RsdCpuReference::getTlsContext(); 86 rsrAllocationSyncAll(rsc, a, RS_ALLOCATION_USAGE_SCRIPT); 87} 88 89static void SC_AllocationCopy1DRange(Allocation *dstAlloc, 90 uint32_t dstOff, 91 uint32_t dstMip, 92 uint32_t count, 93 Allocation *srcAlloc, 94 uint32_t srcOff, uint32_t srcMip) { 95 Context *rsc = RsdCpuReference::getTlsContext(); 96 rsrAllocationCopy1DRange(rsc, dstAlloc, dstOff, dstMip, count, 97 srcAlloc, srcOff, srcMip); 98} 99 100static void SC_AllocationCopy2DRange(Allocation *dstAlloc, 101 uint32_t dstXoff, uint32_t dstYoff, 102 uint32_t dstMip, uint32_t dstFace, 103 uint32_t width, uint32_t height, 104 Allocation *srcAlloc, 105 uint32_t srcXoff, uint32_t srcYoff, 106 uint32_t srcMip, uint32_t srcFace) { 107 Context *rsc = RsdCpuReference::getTlsContext(); 108 rsrAllocationCopy2DRange(rsc, dstAlloc, 109 dstXoff, dstYoff, dstMip, dstFace, 110 width, height, 111 srcAlloc, 112 srcXoff, srcYoff, srcMip, srcFace); 113} 114 115#ifndef RS_COMPATIBILITY_LIB 116static void SC_AllocationIoSend(Allocation *alloc) { 117 Context *rsc = RsdCpuReference::getTlsContext(); 118 rsdAllocationIoSend(rsc, alloc); 119} 120 121 122static void SC_AllocationIoReceive(Allocation *alloc) { 123 Context *rsc = RsdCpuReference::getTlsContext(); 124 rsdAllocationIoReceive(rsc, alloc); 125} 126 127 128 129////////////////////////////////////////////////////////////////////////////// 130// Context 131////////////////////////////////////////////////////////////////////////////// 132 133static void SC_BindTexture(ProgramFragment *pf, uint32_t slot, Allocation *a) { 134 Context *rsc = RsdCpuReference::getTlsContext(); 135 rsrBindTexture(rsc, pf, slot, a); 136} 137 138static void SC_BindVertexConstant(ProgramVertex *pv, uint32_t slot, Allocation *a) { 139 Context *rsc = RsdCpuReference::getTlsContext(); 140 rsrBindConstant(rsc, pv, slot, a); 141} 142 143static void SC_BindFragmentConstant(ProgramFragment *pf, uint32_t slot, Allocation *a) { 144 Context *rsc = RsdCpuReference::getTlsContext(); 145 rsrBindConstant(rsc, pf, slot, a); 146} 147 148static void SC_BindSampler(ProgramFragment *pf, uint32_t slot, Sampler *s) { 149 Context *rsc = RsdCpuReference::getTlsContext(); 150 rsrBindSampler(rsc, pf, slot, s); 151} 152 153static void SC_BindProgramStore(ProgramStore *ps) { 154 Context *rsc = RsdCpuReference::getTlsContext(); 155 rsrBindProgramStore(rsc, ps); 156} 157 158static void SC_BindProgramFragment(ProgramFragment *pf) { 159 Context *rsc = RsdCpuReference::getTlsContext(); 160 rsrBindProgramFragment(rsc, pf); 161} 162 163static void SC_BindProgramVertex(ProgramVertex *pv) { 164 Context *rsc = RsdCpuReference::getTlsContext(); 165 rsrBindProgramVertex(rsc, pv); 166} 167 168static void SC_BindProgramRaster(ProgramRaster *pr) { 169 Context *rsc = RsdCpuReference::getTlsContext(); 170 rsrBindProgramRaster(rsc, pr); 171} 172 173static void SC_BindFrameBufferObjectColorTarget(Allocation *a, uint32_t slot) { 174 Context *rsc = RsdCpuReference::getTlsContext(); 175 rsrBindFrameBufferObjectColorTarget(rsc, a, slot); 176} 177 178static void SC_BindFrameBufferObjectDepthTarget(Allocation *a) { 179 Context *rsc = RsdCpuReference::getTlsContext(); 180 rsrBindFrameBufferObjectDepthTarget(rsc, a); 181} 182 183static void SC_ClearFrameBufferObjectColorTarget(uint32_t slot) { 184 Context *rsc = RsdCpuReference::getTlsContext(); 185 rsrClearFrameBufferObjectColorTarget(rsc, slot); 186} 187 188static void SC_ClearFrameBufferObjectDepthTarget(Context *, Script *) { 189 Context *rsc = RsdCpuReference::getTlsContext(); 190 rsrClearFrameBufferObjectDepthTarget(rsc); 191} 192 193static void SC_ClearFrameBufferObjectTargets(Context *, Script *) { 194 Context *rsc = RsdCpuReference::getTlsContext(); 195 rsrClearFrameBufferObjectTargets(rsc); 196} 197 198 199////////////////////////////////////////////////////////////////////////////// 200// VP 201////////////////////////////////////////////////////////////////////////////// 202 203static void SC_VpLoadProjectionMatrix(const rsc_Matrix *m) { 204 Context *rsc = RsdCpuReference::getTlsContext(); 205 rsrVpLoadProjectionMatrix(rsc, m); 206} 207 208static void SC_VpLoadModelMatrix(const rsc_Matrix *m) { 209 Context *rsc = RsdCpuReference::getTlsContext(); 210 rsrVpLoadModelMatrix(rsc, m); 211} 212 213static void SC_VpLoadTextureMatrix(const rsc_Matrix *m) { 214 Context *rsc = RsdCpuReference::getTlsContext(); 215 rsrVpLoadTextureMatrix(rsc, m); 216} 217 218static void SC_PfConstantColor(ProgramFragment *pf, float r, float g, float b, float a) { 219 Context *rsc = RsdCpuReference::getTlsContext(); 220 rsrPfConstantColor(rsc, pf, r, g, b, a); 221} 222 223static void SC_VpGetProjectionMatrix(rsc_Matrix *m) { 224 Context *rsc = RsdCpuReference::getTlsContext(); 225 rsrVpGetProjectionMatrix(rsc, m); 226} 227 228 229////////////////////////////////////////////////////////////////////////////// 230// Drawing 231////////////////////////////////////////////////////////////////////////////// 232 233static void SC_DrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, 234 float x2, float y2, float z2, float u2, float v2, 235 float x3, float y3, float z3, float u3, float v3, 236 float x4, float y4, float z4, float u4, float v4) { 237 Context *rsc = RsdCpuReference::getTlsContext(); 238 239 if (!rsc->setupCheck()) { 240 return; 241 } 242 243 RsdHal *dc = (RsdHal *)rsc->mHal.drv; 244 if (!dc->gl.shaderCache->setup(rsc)) { 245 return; 246 } 247 248 //ALOGE("Quad"); 249 //ALOGE("%4.2f, %4.2f, %4.2f", x1, y1, z1); 250 //ALOGE("%4.2f, %4.2f, %4.2f", x2, y2, z2); 251 //ALOGE("%4.2f, %4.2f, %4.2f", x3, y3, z3); 252 //ALOGE("%4.2f, %4.2f, %4.2f", x4, y4, z4); 253 254 float vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4}; 255 const float tex[] = {u1,v1, u2,v2, u3,v3, u4,v4}; 256 257 RsdVertexArray::Attrib attribs[2]; 258 attribs[0].set(GL_FLOAT, 3, 12, false, (uint32_t)vtx, "ATTRIB_position"); 259 attribs[1].set(GL_FLOAT, 2, 8, false, (uint32_t)tex, "ATTRIB_texture0"); 260 261 RsdVertexArray va(attribs, 2); 262 va.setup(rsc); 263 264 RSD_CALL_GL(glDrawArrays, GL_TRIANGLE_FAN, 0, 4); 265} 266 267static void SC_DrawQuad(float x1, float y1, float z1, 268 float x2, float y2, float z2, 269 float x3, float y3, float z3, 270 float x4, float y4, float z4) { 271 SC_DrawQuadTexCoords(x1, y1, z1, 0, 1, 272 x2, y2, z2, 1, 1, 273 x3, y3, z3, 1, 0, 274 x4, y4, z4, 0, 0); 275} 276 277static void SC_DrawSpriteScreenspace(float x, float y, float z, float w, float h) { 278 Context *rsc = RsdCpuReference::getTlsContext(); 279 280 ObjectBaseRef<const ProgramVertex> tmp(rsc->getProgramVertex()); 281 rsc->setProgramVertex(rsc->getDefaultProgramVertex()); 282 //rsc->setupCheck(); 283 284 //GLint crop[4] = {0, h, w, -h}; 285 286 float sh = rsc->getHeight(); 287 288 SC_DrawQuad(x, sh - y, z, 289 x+w, sh - y, z, 290 x+w, sh - (y+h), z, 291 x, sh - (y+h), z); 292 rsc->setProgramVertex((ProgramVertex *)tmp.get()); 293} 294 295static void SC_DrawRect(float x1, float y1, float x2, float y2, float z) { 296 SC_DrawQuad(x1, y2, z, x2, y2, z, x2, y1, z, x1, y1, z); 297} 298 299static void SC_DrawPath(Path *p) { 300 Context *rsc = RsdCpuReference::getTlsContext(); 301 rsdPathDraw(rsc, p); 302} 303 304static void SC_DrawMesh(Mesh *m) { 305 Context *rsc = RsdCpuReference::getTlsContext(); 306 rsrDrawMesh(rsc, m); 307} 308 309static void SC_DrawMeshPrimitive(Mesh *m, uint32_t primIndex) { 310 Context *rsc = RsdCpuReference::getTlsContext(); 311 rsrDrawMeshPrimitive(rsc, m, primIndex); 312} 313 314static void SC_DrawMeshPrimitiveRange(Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len) { 315 Context *rsc = RsdCpuReference::getTlsContext(); 316 rsrDrawMeshPrimitiveRange(rsc, m, primIndex, start, len); 317} 318 319static void SC_MeshComputeBoundingBox(Mesh *m, 320 float *minX, float *minY, float *minZ, 321 float *maxX, float *maxY, float *maxZ) { 322 Context *rsc = RsdCpuReference::getTlsContext(); 323 rsrMeshComputeBoundingBox(rsc, m, minX, minY, minZ, maxX, maxY, maxZ); 324} 325 326 327 328////////////////////////////////////////////////////////////////////////////// 329// 330////////////////////////////////////////////////////////////////////////////// 331 332 333static void SC_Color(float r, float g, float b, float a) { 334 Context *rsc = RsdCpuReference::getTlsContext(); 335 rsrColor(rsc, r, g, b, a); 336} 337 338static void SC_Finish() { 339 Context *rsc = RsdCpuReference::getTlsContext(); 340 rsdGLFinish(rsc); 341} 342 343static void SC_ClearColor(float r, float g, float b, float a) { 344 Context *rsc = RsdCpuReference::getTlsContext(); 345 rsrPrepareClear(rsc); 346 rsdGLClearColor(rsc, r, g, b, a); 347} 348 349static void SC_ClearDepth(float v) { 350 Context *rsc = RsdCpuReference::getTlsContext(); 351 rsrPrepareClear(rsc); 352 rsdGLClearDepth(rsc, v); 353} 354 355static uint32_t SC_GetWidth() { 356 Context *rsc = RsdCpuReference::getTlsContext(); 357 return rsrGetWidth(rsc); 358} 359 360static uint32_t SC_GetHeight() { 361 Context *rsc = RsdCpuReference::getTlsContext(); 362 return rsrGetHeight(rsc); 363} 364 365static void SC_DrawTextAlloc(Allocation *a, int x, int y) { 366 Context *rsc = RsdCpuReference::getTlsContext(); 367 rsrDrawTextAlloc(rsc, a, x, y); 368} 369 370static void SC_DrawText(const char *text, int x, int y) { 371 Context *rsc = RsdCpuReference::getTlsContext(); 372 rsrDrawText(rsc, text, x, y); 373} 374 375static void SC_MeasureTextAlloc(Allocation *a, 376 int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 377 Context *rsc = RsdCpuReference::getTlsContext(); 378 rsrMeasureTextAlloc(rsc, a, left, right, top, bottom); 379} 380 381static void SC_MeasureText(const char *text, 382 int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) { 383 Context *rsc = RsdCpuReference::getTlsContext(); 384 rsrMeasureText(rsc, text, left, right, top, bottom); 385} 386 387static void SC_BindFont(Font *f) { 388 Context *rsc = RsdCpuReference::getTlsContext(); 389 rsrBindFont(rsc, f); 390} 391 392static void SC_FontColor(float r, float g, float b, float a) { 393 Context *rsc = RsdCpuReference::getTlsContext(); 394 rsrFontColor(rsc, r, g, b, a); 395} 396#endif 397 398 399////////////////////////////////////////////////////////////////////////////// 400// 401////////////////////////////////////////////////////////////////////////////// 402 403static void SC_SetObject(ObjectBase **dst, ObjectBase * src) { 404 Context *rsc = RsdCpuReference::getTlsContext(); 405 rsrSetObject(rsc, dst, src); 406} 407 408static void SC_ClearObject(ObjectBase **dst) { 409 Context *rsc = RsdCpuReference::getTlsContext(); 410 rsrClearObject(rsc, dst); 411} 412 413static bool SC_IsObject(const ObjectBase *src) { 414 Context *rsc = RsdCpuReference::getTlsContext(); 415 return rsrIsObject(rsc, src); 416} 417 418 419 420 421static const Allocation * SC_GetAllocation(const void *ptr) { 422 Context *rsc = RsdCpuReference::getTlsContext(); 423 const Script *sc = RsdCpuReference::getTlsScript(); 424 return rsdScriptGetAllocationForPointer(rsc, sc, ptr); 425} 426 427static void SC_ForEach_SAA(Script *target, 428 Allocation *in, 429 Allocation *out) { 430 Context *rsc = RsdCpuReference::getTlsContext(); 431 rsrForEach(rsc, target, in, out, NULL, 0, NULL); 432} 433 434static void SC_ForEach_SAAU(Script *target, 435 Allocation *in, 436 Allocation *out, 437 const void *usr) { 438 Context *rsc = RsdCpuReference::getTlsContext(); 439 rsrForEach(rsc, target, in, out, usr, 0, NULL); 440} 441 442static void SC_ForEach_SAAUS(Script *target, 443 Allocation *in, 444 Allocation *out, 445 const void *usr, 446 const RsScriptCall *call) { 447 Context *rsc = RsdCpuReference::getTlsContext(); 448 rsrForEach(rsc, target, in, out, usr, 0, call); 449} 450 451static void SC_ForEach_SAAUL(Script *target, 452 Allocation *in, 453 Allocation *out, 454 const void *usr, 455 uint32_t usrLen) { 456 Context *rsc = RsdCpuReference::getTlsContext(); 457 rsrForEach(rsc, target, in, out, usr, usrLen, NULL); 458} 459 460static void SC_ForEach_SAAULS(Script *target, 461 Allocation *in, 462 Allocation *out, 463 const void *usr, 464 uint32_t usrLen, 465 const RsScriptCall *call) { 466 Context *rsc = RsdCpuReference::getTlsContext(); 467 rsrForEach(rsc, target, in, out, usr, usrLen, call); 468} 469 470 471 472////////////////////////////////////////////////////////////////////////////// 473// Time routines 474////////////////////////////////////////////////////////////////////////////// 475 476static float SC_GetDt() { 477 Context *rsc = RsdCpuReference::getTlsContext(); 478 const Script *sc = RsdCpuReference::getTlsScript(); 479 return rsrGetDt(rsc, sc); 480} 481 482time_t SC_Time(time_t *timer) { 483 Context *rsc = RsdCpuReference::getTlsContext(); 484 return rsrTime(rsc, timer); 485} 486 487tm* SC_LocalTime(tm *local, time_t *timer) { 488 Context *rsc = RsdCpuReference::getTlsContext(); 489 return rsrLocalTime(rsc, local, timer); 490} 491 492int64_t SC_UptimeMillis() { 493 Context *rsc = RsdCpuReference::getTlsContext(); 494 return rsrUptimeMillis(rsc); 495} 496 497int64_t SC_UptimeNanos() { 498 Context *rsc = RsdCpuReference::getTlsContext(); 499 return rsrUptimeNanos(rsc); 500} 501 502////////////////////////////////////////////////////////////////////////////// 503// Message routines 504////////////////////////////////////////////////////////////////////////////// 505 506static uint32_t SC_ToClient2(int cmdID, void *data, int len) { 507 Context *rsc = RsdCpuReference::getTlsContext(); 508 return rsrToClient(rsc, cmdID, data, len); 509} 510 511static uint32_t SC_ToClient(int cmdID) { 512 Context *rsc = RsdCpuReference::getTlsContext(); 513 return rsrToClient(rsc, cmdID, NULL, 0); 514} 515 516static uint32_t SC_ToClientBlocking2(int cmdID, void *data, int len) { 517 Context *rsc = RsdCpuReference::getTlsContext(); 518 return rsrToClientBlocking(rsc, cmdID, data, len); 519} 520 521static uint32_t SC_ToClientBlocking(int cmdID) { 522 Context *rsc = RsdCpuReference::getTlsContext(); 523 return rsrToClientBlocking(rsc, cmdID, NULL, 0); 524} 525 526 527static void * ElementAt1D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x) { 528 Context *rsc = RsdCpuReference::getTlsContext(); 529 const Type *t = a->getType(); 530 const Element *e = t->getElement(); 531 532 char buf[256]; 533 if (x >= t->getLODDimX(0)) { 534 sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0)); 535 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 536 return NULL; 537 } 538 539 if (vecSize != e->getVectorSize()) { 540 sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize()); 541 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 542 return NULL; 543 } 544 545 if (dt != e->getType()) { 546 sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType()); 547 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 548 return NULL; 549 } 550 551 uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr; 552 const uint32_t eSize = e->getSizeBytes(); 553 return &p[(eSize * x)]; 554} 555 556static void * ElementAt2D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y) { 557 Context *rsc = RsdCpuReference::getTlsContext(); 558 const Type *t = a->getType(); 559 const Element *e = t->getElement(); 560 561 char buf[256]; 562 if (x >= t->getLODDimX(0)) { 563 sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0)); 564 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 565 return NULL; 566 } 567 568 if (y >= t->getLODDimY(0)) { 569 sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0)); 570 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 571 return NULL; 572 } 573 574 if (vecSize != e->getVectorSize()) { 575 sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize()); 576 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 577 return NULL; 578 } 579 580 if (dt != e->getType()) { 581 sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType()); 582 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 583 return NULL; 584 } 585 586 uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr; 587 const uint32_t eSize = e->getSizeBytes(); 588 const uint32_t stride = a->mHal.drvState.lod[0].stride; 589 return &p[(eSize * x) + (y * stride)]; 590} 591 592static void * ElementAt3D(Allocation *a, RsDataType dt, uint32_t vecSize, uint32_t x, uint32_t y, uint32_t z) { 593 Context *rsc = RsdCpuReference::getTlsContext(); 594 const Type *t = a->getType(); 595 const Element *e = t->getElement(); 596 597 char buf[256]; 598 if (x >= t->getLODDimX(0)) { 599 sprintf(buf, "Out range ElementAt X %i of %i", x, t->getLODDimX(0)); 600 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 601 return NULL; 602 } 603 604 if (y >= t->getLODDimY(0)) { 605 sprintf(buf, "Out range ElementAt Y %i of %i", y, t->getLODDimY(0)); 606 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 607 return NULL; 608 } 609 610 if (z >= t->getLODDimZ(0)) { 611 sprintf(buf, "Out range ElementAt Z %i of %i", z, t->getLODDimZ(0)); 612 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 613 return NULL; 614 } 615 616 if (vecSize != e->getVectorSize()) { 617 sprintf(buf, "Vector size mismatch for ElementAt %i of %i", vecSize, e->getVectorSize()); 618 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 619 return NULL; 620 } 621 622 if (dt != e->getType()) { 623 sprintf(buf, "Data type mismatch for ElementAt %i of %i", dt, e->getType()); 624 rsc->setError(RS_ERROR_FATAL_UNKNOWN, buf); 625 return NULL; 626 } 627 628 uint8_t *p = (uint8_t *)a->mHal.drvState.lod[0].mallocPtr; 629 const uint32_t eSize = e->getSizeBytes(); 630 const uint32_t stride = a->mHal.drvState.lod[0].stride; 631 return &p[(eSize * x) + (y * stride)]; 632} 633 634#define ELEMENT_AT(T, DT, VS) \ 635 static void SC_SetElementAt1_##T(Allocation *a, T val, uint32_t x) { \ 636 void *r = ElementAt1D(a, DT, VS, x); \ 637 if (r != NULL) ((T *)r)[0] = val; \ 638 else ALOGE("Error from %s", __PRETTY_FUNCTION__); \ 639 } \ 640 static void SC_SetElementAt2_##T(Allocation * a, T val, uint32_t x, uint32_t y) { \ 641 void *r = ElementAt2D(a, DT, VS, x, y); \ 642 if (r != NULL) ((T *)r)[0] = val; \ 643 else ALOGE("Error from %s", __PRETTY_FUNCTION__); \ 644 } \ 645 static void SC_SetElementAt3_##T(Allocation * a, T val, uint32_t x, uint32_t y, uint32_t z) { \ 646 void *r = ElementAt3D(a, DT, VS, x, y, z); \ 647 if (r != NULL) ((T *)r)[0] = val; \ 648 else ALOGE("Error from %s", __PRETTY_FUNCTION__); \ 649 } \ 650 static T SC_GetElementAt1_##T(Allocation * a, uint32_t x) { \ 651 void *r = ElementAt1D(a, DT, VS, x); \ 652 if (r != NULL) return ((T *)r)[0]; \ 653 ALOGE("Error from %s", __PRETTY_FUNCTION__); \ 654 return 0; \ 655 } \ 656 static T SC_GetElementAt2_##T(Allocation * a, uint32_t x, uint32_t y) { \ 657 void *r = ElementAt2D(a, DT, VS, x, y); \ 658 if (r != NULL) return ((T *)r)[0]; \ 659 ALOGE("Error from %s", __PRETTY_FUNCTION__); \ 660 return 0; \ 661 } \ 662 static T SC_GetElementAt3_##T(Allocation * a, uint32_t x, uint32_t y, uint32_t z) { \ 663 void *r = ElementAt3D(a, DT, VS, x, y, z); \ 664 if (r != NULL) return ((T *)r)[0]; \ 665 ALOGE("Error from %s", __PRETTY_FUNCTION__); \ 666 return 0; \ 667 } 668 669ELEMENT_AT(char, RS_TYPE_SIGNED_8, 1) 670ELEMENT_AT(char2, RS_TYPE_SIGNED_8, 2) 671ELEMENT_AT(char3, RS_TYPE_SIGNED_8, 3) 672ELEMENT_AT(char4, RS_TYPE_SIGNED_8, 4) 673ELEMENT_AT(uchar, RS_TYPE_UNSIGNED_8, 1) 674ELEMENT_AT(uchar2, RS_TYPE_UNSIGNED_8, 2) 675ELEMENT_AT(uchar3, RS_TYPE_UNSIGNED_8, 3) 676ELEMENT_AT(uchar4, RS_TYPE_UNSIGNED_8, 4) 677ELEMENT_AT(short, RS_TYPE_SIGNED_16, 1) 678ELEMENT_AT(short2, RS_TYPE_SIGNED_16, 2) 679ELEMENT_AT(short3, RS_TYPE_SIGNED_16, 3) 680ELEMENT_AT(short4, RS_TYPE_SIGNED_16, 4) 681ELEMENT_AT(ushort, RS_TYPE_UNSIGNED_16, 1) 682ELEMENT_AT(ushort2, RS_TYPE_UNSIGNED_16, 2) 683ELEMENT_AT(ushort3, RS_TYPE_UNSIGNED_16, 3) 684ELEMENT_AT(ushort4, RS_TYPE_UNSIGNED_16, 4) 685ELEMENT_AT(int, RS_TYPE_SIGNED_32, 1) 686ELEMENT_AT(int2, RS_TYPE_SIGNED_32, 2) 687ELEMENT_AT(int3, RS_TYPE_SIGNED_32, 3) 688ELEMENT_AT(int4, RS_TYPE_SIGNED_32, 4) 689ELEMENT_AT(uint, RS_TYPE_UNSIGNED_32, 1) 690ELEMENT_AT(uint2, RS_TYPE_UNSIGNED_32, 2) 691ELEMENT_AT(uint3, RS_TYPE_UNSIGNED_32, 3) 692ELEMENT_AT(uint4, RS_TYPE_UNSIGNED_32, 4) 693ELEMENT_AT(long, RS_TYPE_SIGNED_64, 1) 694ELEMENT_AT(long2, RS_TYPE_SIGNED_64, 2) 695ELEMENT_AT(long3, RS_TYPE_SIGNED_64, 3) 696ELEMENT_AT(long4, RS_TYPE_SIGNED_64, 4) 697ELEMENT_AT(ulong, RS_TYPE_UNSIGNED_64, 1) 698ELEMENT_AT(ulong2, RS_TYPE_UNSIGNED_64, 2) 699ELEMENT_AT(ulong3, RS_TYPE_UNSIGNED_64, 3) 700ELEMENT_AT(ulong4, RS_TYPE_UNSIGNED_64, 4) 701ELEMENT_AT(float, RS_TYPE_FLOAT_32, 1) 702ELEMENT_AT(float2, RS_TYPE_FLOAT_32, 2) 703ELEMENT_AT(float3, RS_TYPE_FLOAT_32, 3) 704ELEMENT_AT(float4, RS_TYPE_FLOAT_32, 4) 705ELEMENT_AT(double, RS_TYPE_FLOAT_64, 1) 706ELEMENT_AT(double2, RS_TYPE_FLOAT_64, 2) 707ELEMENT_AT(double3, RS_TYPE_FLOAT_64, 3) 708ELEMENT_AT(double4, RS_TYPE_FLOAT_64, 4) 709 710#undef ELEMENT_AT 711 712////////////////////////////////////////////////////////////////////////////// 713// Stub implementation 714////////////////////////////////////////////////////////////////////////////// 715 716// llvm name mangling ref 717// <builtin-type> ::= v # void 718// ::= b # bool 719// ::= c # char 720// ::= a # signed char 721// ::= h # unsigned char 722// ::= s # short 723// ::= t # unsigned short 724// ::= i # int 725// ::= j # unsigned int 726// ::= l # long 727// ::= m # unsigned long 728// ::= x # long long, __int64 729// ::= y # unsigned long long, __int64 730// ::= f # float 731// ::= d # double 732 733static RsdCpuReference::CpuSymbol gSyms[] = { 734 // Debug runtime 735 { "_Z20rsGetElementAt_uchar13rs_allocationcj", (void *)&SC_GetElementAt1_uchar, true }, 736 { "_Z21rsGetElementAt_uchar213rs_allocationj", (void *)&SC_GetElementAt1_uchar2, true }, 737 { "_Z21rsGetElementAt_uchar313rs_allocationj", (void *)&SC_GetElementAt1_uchar3, true }, 738 { "_Z21rsGetElementAt_uchar413rs_allocationj", (void *)&SC_GetElementAt1_uchar4, true }, 739 { "_Z20rsGetElementAt_uchar13rs_allocationjj", (void *)&SC_GetElementAt2_uchar, true }, 740 { "_Z21rsGetElementAt_uchar213rs_allocationjj", (void *)&SC_GetElementAt2_uchar2, true }, 741 { "_Z21rsGetElementAt_uchar313rs_allocationjj", (void *)&SC_GetElementAt2_uchar3, true }, 742 { "_Z21rsGetElementAt_uchar413rs_allocationjj", (void *)&SC_GetElementAt2_uchar4, true }, 743 { "_Z20rsGetElementAt_uchar13rs_allocationjjj", (void *)&SC_GetElementAt3_uchar, true }, 744 { "_Z21rsGetElementAt_uchar213rs_allocationjjj", (void *)&SC_GetElementAt3_uchar2, true }, 745 { "_Z21rsGetElementAt_uchar313rs_allocationjjj", (void *)&SC_GetElementAt3_uchar3, true }, 746 { "_Z21rsGetElementAt_uchar413rs_allocationjjj", (void *)&SC_GetElementAt3_uchar4, true }, 747 748 { "_Z19rsGetElementAt_char13rs_allocationj", (void *)&SC_GetElementAt1_char, true }, 749 { "_Z20rsGetElementAt_char213rs_allocationj", (void *)&SC_GetElementAt1_char2, true }, 750 { "_Z20rsGetElementAt_char313rs_allocationj", (void *)&SC_GetElementAt1_char3, true }, 751 { "_Z20rsGetElementAt_char413rs_allocationj", (void *)&SC_GetElementAt1_char4, true }, 752 { "_Z19rsGetElementAt_char13rs_allocationjj", (void *)&SC_GetElementAt2_char, true }, 753 { "_Z20rsGetElementAt_char213rs_allocationjj", (void *)&SC_GetElementAt2_char2, true }, 754 { "_Z20rsGetElementAt_char313rs_allocationjj", (void *)&SC_GetElementAt2_char3, true }, 755 { "_Z20rsGetElementAt_char413rs_allocationjj", (void *)&SC_GetElementAt2_char4, true }, 756 { "_Z19rsGetElementAt_char13rs_allocationjjj", (void *)&SC_GetElementAt3_char, true }, 757 { "_Z20rsGetElementAt_char213rs_allocationjjj", (void *)&SC_GetElementAt3_char2, true }, 758 { "_Z20rsGetElementAt_char313rs_allocationjjj", (void *)&SC_GetElementAt3_char3, true }, 759 { "_Z20rsGetElementAt_char413rs_allocationjjj", (void *)&SC_GetElementAt3_char4, true }, 760 761 { "_Z21rsGetElementAt_ushort13rs_allocationcj", (void *)&SC_GetElementAt1_ushort, true }, 762 { "_Z22rsGetElementAt_ushort213rs_allocationj", (void *)&SC_GetElementAt1_ushort2, true }, 763 { "_Z22rsGetElementAt_ushort313rs_allocationj", (void *)&SC_GetElementAt1_ushort3, true }, 764 { "_Z22rsGetElementAt_ushort413rs_allocationj", (void *)&SC_GetElementAt1_ushort4, true }, 765 { "_Z21rsGetElementAt_ushort13rs_allocationjj", (void *)&SC_GetElementAt2_ushort, true }, 766 { "_Z22rsGetElementAt_ushort213rs_allocationjj", (void *)&SC_GetElementAt2_ushort2, true }, 767 { "_Z22rsGetElementAt_ushort313rs_allocationjj", (void *)&SC_GetElementAt2_ushort3, true }, 768 { "_Z22rsGetElementAt_ushort413rs_allocationjj", (void *)&SC_GetElementAt2_ushort4, true }, 769 { "_Z21rsGetElementAt_ushort13rs_allocationjjj", (void *)&SC_GetElementAt3_ushort, true }, 770 { "_Z22rsGetElementAt_ushort213rs_allocationjjj", (void *)&SC_GetElementAt3_ushort2, true }, 771 { "_Z22rsGetElementAt_ushort313rs_allocationjjj", (void *)&SC_GetElementAt3_ushort3, true }, 772 { "_Z22rsGetElementAt_ushort413rs_allocationjjj", (void *)&SC_GetElementAt3_ushort4, true }, 773 774 { "_Z20rsGetElementAt_short13rs_allocationj", (void *)&SC_GetElementAt1_short, true }, 775 { "_Z21rsGetElementAt_short213rs_allocationj", (void *)&SC_GetElementAt1_short2, true }, 776 { "_Z21rsGetElementAt_short313rs_allocationj", (void *)&SC_GetElementAt1_short3, true }, 777 { "_Z21rsGetElementAt_short413rs_allocationj", (void *)&SC_GetElementAt1_short4, true }, 778 { "_Z20rsGetElementAt_short13rs_allocationjj", (void *)&SC_GetElementAt2_short, true }, 779 { "_Z21rsGetElementAt_short213rs_allocationjj", (void *)&SC_GetElementAt2_short2, true }, 780 { "_Z21rsGetElementAt_short313rs_allocationjj", (void *)&SC_GetElementAt2_short3, true }, 781 { "_Z21rsGetElementAt_short413rs_allocationjj", (void *)&SC_GetElementAt2_short4, true }, 782 { "_Z20rsGetElementAt_short13rs_allocationjjj", (void *)&SC_GetElementAt3_short, true }, 783 { "_Z21rsGetElementAt_short213rs_allocationjjj", (void *)&SC_GetElementAt3_short2, true }, 784 { "_Z21rsGetElementAt_short313rs_allocationjjj", (void *)&SC_GetElementAt3_short3, true }, 785 { "_Z21rsGetElementAt_short413rs_allocationjjj", (void *)&SC_GetElementAt3_short4, true }, 786 787 { "_Z19rsGetElementAt_uint13rs_allocationcj", (void *)&SC_GetElementAt1_uint, true }, 788 { "_Z20rsGetElementAt_uint213rs_allocationj", (void *)&SC_GetElementAt1_uint2, true }, 789 { "_Z20rsGetElementAt_uint313rs_allocationj", (void *)&SC_GetElementAt1_uint3, true }, 790 { "_Z20rsGetElementAt_uint413rs_allocationj", (void *)&SC_GetElementAt1_uint4, true }, 791 { "_Z19rsGetElementAt_uint13rs_allocationjj", (void *)&SC_GetElementAt2_uint, true }, 792 { "_Z20rsGetElementAt_uint213rs_allocationjj", (void *)&SC_GetElementAt2_uint2, true }, 793 { "_Z20rsGetElementAt_uint313rs_allocationjj", (void *)&SC_GetElementAt2_uint3, true }, 794 { "_Z20rsGetElementAt_uint413rs_allocationjj", (void *)&SC_GetElementAt2_uint4, true }, 795 { "_Z19rsGetElementAt_uint13rs_allocationjjj", (void *)&SC_GetElementAt3_uint, true }, 796 { "_Z20rsGetElementAt_uint213rs_allocationjjj", (void *)&SC_GetElementAt3_uint2, true }, 797 { "_Z20rsGetElementAt_uint313rs_allocationjjj", (void *)&SC_GetElementAt3_uint3, true }, 798 { "_Z20rsGetElementAt_uint413rs_allocationjjj", (void *)&SC_GetElementAt3_uint4, true }, 799 800 { "_Z18rsGetElementAt_int13rs_allocationj", (void *)&SC_GetElementAt1_int, true }, 801 { "_Z19rsGetElementAt_int213rs_allocationj", (void *)&SC_GetElementAt1_int2, true }, 802 { "_Z19rsGetElementAt_int313rs_allocationj", (void *)&SC_GetElementAt1_int3, true }, 803 { "_Z19rsGetElementAt_int413rs_allocationj", (void *)&SC_GetElementAt1_int4, true }, 804 { "_Z18rsGetElementAt_int13rs_allocationjj", (void *)&SC_GetElementAt2_int, true }, 805 { "_Z19rsGetElementAt_int213rs_allocationjj", (void *)&SC_GetElementAt2_int2, true }, 806 { "_Z19rsGetElementAt_int313rs_allocationjj", (void *)&SC_GetElementAt2_int3, true }, 807 { "_Z19rsGetElementAt_int413rs_allocationjj", (void *)&SC_GetElementAt2_int4, true }, 808 { "_Z18rsGetElementAt_int13rs_allocationjjj", (void *)&SC_GetElementAt3_int, true }, 809 { "_Z19rsGetElementAt_int213rs_allocationjjj", (void *)&SC_GetElementAt3_int2, true }, 810 { "_Z19rsGetElementAt_int313rs_allocationjjj", (void *)&SC_GetElementAt3_int3, true }, 811 { "_Z19rsGetElementAt_int413rs_allocationjjj", (void *)&SC_GetElementAt3_int4, true }, 812 813 { "_Z20rsGetElementAt_ulong13rs_allocationcj", (void *)&SC_GetElementAt1_ulong, true }, 814 { "_Z21rsGetElementAt_ulong213rs_allocationj", (void *)&SC_GetElementAt1_ulong2, true }, 815 { "_Z21rsGetElementAt_ulong313rs_allocationj", (void *)&SC_GetElementAt1_ulong3, true }, 816 { "_Z21rsGetElementAt_ulong413rs_allocationj", (void *)&SC_GetElementAt1_ulong4, true }, 817 { "_Z20rsGetElementAt_ulong13rs_allocationjj", (void *)&SC_GetElementAt2_ulong, true }, 818 { "_Z21rsGetElementAt_ulong213rs_allocationjj", (void *)&SC_GetElementAt2_ulong2, true }, 819 { "_Z21rsGetElementAt_ulong313rs_allocationjj", (void *)&SC_GetElementAt2_ulong3, true }, 820 { "_Z21rsGetElementAt_ulong413rs_allocationjj", (void *)&SC_GetElementAt2_ulong4, true }, 821 { "_Z20rsGetElementAt_ulong13rs_allocationjjj", (void *)&SC_GetElementAt3_ulong, true }, 822 { "_Z21rsGetElementAt_ulong213rs_allocationjjj", (void *)&SC_GetElementAt3_ulong2, true }, 823 { "_Z21rsGetElementAt_ulong313rs_allocationjjj", (void *)&SC_GetElementAt3_ulong3, true }, 824 { "_Z21rsGetElementAt_ulong413rs_allocationjjj", (void *)&SC_GetElementAt3_ulong4, true }, 825 826 { "_Z19rsGetElementAt_long13rs_allocationj", (void *)&SC_GetElementAt1_long, true }, 827 { "_Z20rsGetElementAt_long213rs_allocationj", (void *)&SC_GetElementAt1_long2, true }, 828 { "_Z20rsGetElementAt_long313rs_allocationj", (void *)&SC_GetElementAt1_long3, true }, 829 { "_Z20rsGetElementAt_long413rs_allocationj", (void *)&SC_GetElementAt1_long4, true }, 830 { "_Z19rsGetElementAt_long13rs_allocationjj", (void *)&SC_GetElementAt2_long, true }, 831 { "_Z20rsGetElementAt_long213rs_allocationjj", (void *)&SC_GetElementAt2_long2, true }, 832 { "_Z20rsGetElementAt_long313rs_allocationjj", (void *)&SC_GetElementAt2_long3, true }, 833 { "_Z20rsGetElementAt_long413rs_allocationjj", (void *)&SC_GetElementAt2_long4, true }, 834 { "_Z19rsGetElementAt_long13rs_allocationjjj", (void *)&SC_GetElementAt3_long, true }, 835 { "_Z20rsGetElementAt_long213rs_allocationjjj", (void *)&SC_GetElementAt3_long2, true }, 836 { "_Z20rsGetElementAt_long313rs_allocationjjj", (void *)&SC_GetElementAt3_long3, true }, 837 { "_Z20rsGetElementAt_long413rs_allocationjjj", (void *)&SC_GetElementAt3_long4, true }, 838 839 { "_Z20rsGetElementAt_float13rs_allocationcj", (void *)&SC_GetElementAt1_float, true }, 840 { "_Z21rsGetElementAt_float213rs_allocationj", (void *)&SC_GetElementAt1_float2, true }, 841 { "_Z21rsGetElementAt_float313rs_allocationj", (void *)&SC_GetElementAt1_float3, true }, 842 { "_Z21rsGetElementAt_float413rs_allocationj", (void *)&SC_GetElementAt1_float4, true }, 843 { "_Z20rsGetElementAt_float13rs_allocationjj", (void *)&SC_GetElementAt2_float, true }, 844 { "_Z21rsGetElementAt_float213rs_allocationjj", (void *)&SC_GetElementAt2_float2, true }, 845 { "_Z21rsGetElementAt_float313rs_allocationjj", (void *)&SC_GetElementAt2_float3, true }, 846 { "_Z21rsGetElementAt_float413rs_allocationjj", (void *)&SC_GetElementAt2_float4, true }, 847 { "_Z20rsGetElementAt_float13rs_allocationjjj", (void *)&SC_GetElementAt3_float, true }, 848 { "_Z21rsGetElementAt_float213rs_allocationjjj", (void *)&SC_GetElementAt3_float2, true }, 849 { "_Z21rsGetElementAt_float313rs_allocationjjj", (void *)&SC_GetElementAt3_float3, true }, 850 { "_Z21rsGetElementAt_float413rs_allocationjjj", (void *)&SC_GetElementAt3_float4, true }, 851 852 { "_Z21rsGetElementAt_double13rs_allocationcj", (void *)&SC_GetElementAt1_double, true }, 853 { "_Z22rsGetElementAt_double213rs_allocationj", (void *)&SC_GetElementAt1_double2, true }, 854 { "_Z22rsGetElementAt_double313rs_allocationj", (void *)&SC_GetElementAt1_double3, true }, 855 { "_Z22rsGetElementAt_double413rs_allocationj", (void *)&SC_GetElementAt1_double4, true }, 856 { "_Z21rsGetElementAt_double13rs_allocationjj", (void *)&SC_GetElementAt2_double, true }, 857 { "_Z22rsGetElementAt_double213rs_allocationjj", (void *)&SC_GetElementAt2_double2, true }, 858 { "_Z22rsGetElementAt_double313rs_allocationjj", (void *)&SC_GetElementAt2_double3, true }, 859 { "_Z22rsGetElementAt_double413rs_allocationjj", (void *)&SC_GetElementAt2_double4, true }, 860 { "_Z21rsGetElementAt_double13rs_allocationjjj", (void *)&SC_GetElementAt3_double, true }, 861 { "_Z22rsGetElementAt_double213rs_allocationjjj", (void *)&SC_GetElementAt3_double2, true }, 862 { "_Z22rsGetElementAt_double313rs_allocationjjj", (void *)&SC_GetElementAt3_double3, true }, 863 { "_Z22rsGetElementAt_double413rs_allocationjjj", (void *)&SC_GetElementAt3_double4, true }, 864 865 866 867 { "_Z20rsSetElementAt_uchar13rs_allocationhj", (void *)&SC_SetElementAt1_uchar, true }, 868 { "_Z21rsSetElementAt_uchar213rs_allocationDv2_hj", (void *)&SC_SetElementAt1_uchar2, true }, 869 { "_Z21rsSetElementAt_uchar313rs_allocationDv3_hj", (void *)&SC_SetElementAt1_uchar3, true }, 870 { "_Z21rsSetElementAt_uchar413rs_allocationDv4_hj", (void *)&SC_SetElementAt1_uchar4, true }, 871 { "_Z20rsSetElementAt_uchar13rs_allocationhjj", (void *)&SC_SetElementAt2_uchar, true }, 872 { "_Z21rsSetElementAt_uchar213rs_allocationDv2_hjj", (void *)&SC_SetElementAt2_uchar2, true }, 873 { "_Z21rsSetElementAt_uchar313rs_allocationDv3_hjj", (void *)&SC_SetElementAt2_uchar3, true }, 874 { "_Z21rsSetElementAt_uchar413rs_allocationDv4_hjj", (void *)&SC_SetElementAt2_uchar4, true }, 875 { "_Z20rsSetElementAt_uchar13rs_allocationhjjj", (void *)&SC_SetElementAt3_uchar, true }, 876 { "_Z21rsSetElementAt_uchar213rs_allocationDv2_hjjj", (void *)&SC_SetElementAt3_uchar2, true }, 877 { "_Z21rsSetElementAt_uchar313rs_allocationDv3_hjjj", (void *)&SC_SetElementAt3_uchar3, true }, 878 { "_Z21rsSetElementAt_uchar413rs_allocationDv4_hjjj", (void *)&SC_SetElementAt3_uchar4, true }, 879 880 { "_Z19rsSetElementAt_char13rs_allocationcj", (void *)&SC_SetElementAt1_char, true }, 881 { "_Z20rsSetElementAt_char213rs_allocationDv2_cj", (void *)&SC_SetElementAt1_char2, true }, 882 { "_Z20rsSetElementAt_char313rs_allocationDv3_cj", (void *)&SC_SetElementAt1_char3, true }, 883 { "_Z20rsSetElementAt_char413rs_allocationDv4_cj", (void *)&SC_SetElementAt1_char4, true }, 884 { "_Z19rsSetElementAt_char13rs_allocationcjj", (void *)&SC_SetElementAt2_char, true }, 885 { "_Z20rsSetElementAt_char213rs_allocationDv2_cjj", (void *)&SC_SetElementAt2_char2, true }, 886 { "_Z20rsSetElementAt_char313rs_allocationDv3_cjj", (void *)&SC_SetElementAt2_char3, true }, 887 { "_Z20rsSetElementAt_char413rs_allocationDv4_cjj", (void *)&SC_SetElementAt2_char4, true }, 888 { "_Z19rsSetElementAt_char13rs_allocationcjjj", (void *)&SC_SetElementAt3_char, true }, 889 { "_Z20rsSetElementAt_char213rs_allocationDv2_cjjj", (void *)&SC_SetElementAt3_char2, true }, 890 { "_Z20rsSetElementAt_char313rs_allocationDv3_cjjj", (void *)&SC_SetElementAt3_char3, true }, 891 { "_Z20rsSetElementAt_char413rs_allocationDv4_cjjj", (void *)&SC_SetElementAt3_char4, true }, 892 893 { "_Z21rsSetElementAt_ushort13rs_allocationht", (void *)&SC_SetElementAt1_ushort, true }, 894 { "_Z22rsSetElementAt_ushort213rs_allocationDv2_tj", (void *)&SC_SetElementAt1_ushort2, true }, 895 { "_Z22rsSetElementAt_ushort313rs_allocationDv3_tj", (void *)&SC_SetElementAt1_ushort3, true }, 896 { "_Z22rsSetElementAt_ushort413rs_allocationDv4_tj", (void *)&SC_SetElementAt1_ushort4, true }, 897 { "_Z21rsSetElementAt_ushort13rs_allocationtjj", (void *)&SC_SetElementAt2_ushort, true }, 898 { "_Z22rsSetElementAt_ushort213rs_allocationDv2_tjj", (void *)&SC_SetElementAt2_ushort2, true }, 899 { "_Z22rsSetElementAt_ushort313rs_allocationDv3_tjj", (void *)&SC_SetElementAt2_ushort3, true }, 900 { "_Z22rsSetElementAt_ushort413rs_allocationDv4_tjj", (void *)&SC_SetElementAt2_ushort4, true }, 901 { "_Z21rsSetElementAt_ushort13rs_allocationtjjj", (void *)&SC_SetElementAt3_ushort, true }, 902 { "_Z22rsSetElementAt_ushort213rs_allocationDv2_tjjj", (void *)&SC_SetElementAt3_ushort2, true }, 903 { "_Z22rsSetElementAt_ushort313rs_allocationDv3_tjjj", (void *)&SC_SetElementAt3_ushort3, true }, 904 { "_Z22rsSetElementAt_ushort413rs_allocationDv4_tjjj", (void *)&SC_SetElementAt3_ushort4, true }, 905 906 { "_Z20rsSetElementAt_short13rs_allocationsj", (void *)&SC_SetElementAt1_short, true }, 907 { "_Z21rsSetElementAt_short213rs_allocationDv2_sj", (void *)&SC_SetElementAt1_short2, true }, 908 { "_Z21rsSetElementAt_short313rs_allocationDv3_sj", (void *)&SC_SetElementAt1_short3, true }, 909 { "_Z21rsSetElementAt_short413rs_allocationDv4_sj", (void *)&SC_SetElementAt1_short4, true }, 910 { "_Z20rsSetElementAt_short13rs_allocationsjj", (void *)&SC_SetElementAt2_short, true }, 911 { "_Z21rsSetElementAt_short213rs_allocationDv2_sjj", (void *)&SC_SetElementAt2_short2, true }, 912 { "_Z21rsSetElementAt_short313rs_allocationDv3_sjj", (void *)&SC_SetElementAt2_short3, true }, 913 { "_Z21rsSetElementAt_short413rs_allocationDv4_sjj", (void *)&SC_SetElementAt2_short4, true }, 914 { "_Z20rsSetElementAt_short13rs_allocationsjjj", (void *)&SC_SetElementAt3_short, true }, 915 { "_Z21rsSetElementAt_short213rs_allocationDv2_sjjj", (void *)&SC_SetElementAt3_short2, true }, 916 { "_Z21rsSetElementAt_short313rs_allocationDv3_sjjj", (void *)&SC_SetElementAt3_short3, true }, 917 { "_Z21rsSetElementAt_short413rs_allocationDv4_sjjj", (void *)&SC_SetElementAt3_short4, true }, 918 919 { "_Z19rsSetElementAt_uint13rs_allocationjj", (void *)&SC_SetElementAt1_uint, true }, 920 { "_Z20rsSetElementAt_uint213rs_allocationDv2_jj", (void *)&SC_SetElementAt1_uint2, true }, 921 { "_Z20rsSetElementAt_uint313rs_allocationDv3_jj", (void *)&SC_SetElementAt1_uint3, true }, 922 { "_Z20rsSetElementAt_uint413rs_allocationDv4_jj", (void *)&SC_SetElementAt1_uint4, true }, 923 { "_Z19rsSetElementAt_uint13rs_allocationjjj", (void *)&SC_SetElementAt2_uint, true }, 924 { "_Z20rsSetElementAt_uint213rs_allocationDv2_jjj", (void *)&SC_SetElementAt2_uint2, true }, 925 { "_Z20rsSetElementAt_uint313rs_allocationDv3_jjj", (void *)&SC_SetElementAt2_uint3, true }, 926 { "_Z20rsSetElementAt_uint413rs_allocationDv4_jjj", (void *)&SC_SetElementAt2_uint4, true }, 927 { "_Z19rsSetElementAt_uint13rs_allocationjjjj", (void *)&SC_SetElementAt3_uint, true }, 928 { "_Z20rsSetElementAt_uint213rs_allocationDv2_jjjj", (void *)&SC_SetElementAt3_uint2, true }, 929 { "_Z20rsSetElementAt_uint313rs_allocationDv3_jjjj", (void *)&SC_SetElementAt3_uint3, true }, 930 { "_Z20rsSetElementAt_uint413rs_allocationDv4_jjjj", (void *)&SC_SetElementAt3_uint4, true }, 931 932 { "_Z19rsSetElementAt_int13rs_allocationij", (void *)&SC_SetElementAt1_int, true }, 933 { "_Z19rsSetElementAt_int213rs_allocationDv2_ij", (void *)&SC_SetElementAt1_int2, true }, 934 { "_Z19rsSetElementAt_int313rs_allocationDv3_ij", (void *)&SC_SetElementAt1_int3, true }, 935 { "_Z19rsSetElementAt_int413rs_allocationDv4_ij", (void *)&SC_SetElementAt1_int4, true }, 936 { "_Z18rsSetElementAt_int13rs_allocationijj", (void *)&SC_SetElementAt2_int, true }, 937 { "_Z19rsSetElementAt_int213rs_allocationDv2_ijj", (void *)&SC_SetElementAt2_int2, true }, 938 { "_Z19rsSetElementAt_int313rs_allocationDv3_ijj", (void *)&SC_SetElementAt2_int3, true }, 939 { "_Z19rsSetElementAt_int413rs_allocationDv4_ijj", (void *)&SC_SetElementAt2_int4, true }, 940 { "_Z18rsSetElementAt_int13rs_allocationijjj", (void *)&SC_SetElementAt3_int, true }, 941 { "_Z19rsSetElementAt_int213rs_allocationDv2_ijjj", (void *)&SC_SetElementAt3_int2, true }, 942 { "_Z19rsSetElementAt_int313rs_allocationDv3_ijjj", (void *)&SC_SetElementAt3_int3, true }, 943 { "_Z19rsSetElementAt_int413rs_allocationDv4_ijjj", (void *)&SC_SetElementAt3_int4, true }, 944 945 { "_Z20rsSetElementAt_ulong13rs_allocationmt", (void *)&SC_SetElementAt1_ulong, true }, 946 { "_Z21rsSetElementAt_ulong213rs_allocationDv2_mj", (void *)&SC_SetElementAt1_ulong2, true }, 947 { "_Z21rsSetElementAt_ulong313rs_allocationDv3_mj", (void *)&SC_SetElementAt1_ulong3, true }, 948 { "_Z21rsSetElementAt_ulong413rs_allocationDv4_mj", (void *)&SC_SetElementAt1_ulong4, true }, 949 { "_Z20rsSetElementAt_ulong13rs_allocationmjj", (void *)&SC_SetElementAt2_ulong, true }, 950 { "_Z21rsSetElementAt_ulong213rs_allocationDv2_mjj", (void *)&SC_SetElementAt2_ulong2, true }, 951 { "_Z21rsSetElementAt_ulong313rs_allocationDv3_mjj", (void *)&SC_SetElementAt2_ulong3, true }, 952 { "_Z21rsSetElementAt_ulong413rs_allocationDv4_mjj", (void *)&SC_SetElementAt2_ulong4, true }, 953 { "_Z20rsSetElementAt_ulong13rs_allocationmjjj", (void *)&SC_SetElementAt3_ulong, true }, 954 { "_Z21rsSetElementAt_ulong213rs_allocationDv2_mjjj", (void *)&SC_SetElementAt3_ulong2, true }, 955 { "_Z21rsSetElementAt_ulong313rs_allocationDv3_mjjj", (void *)&SC_SetElementAt3_ulong3, true }, 956 { "_Z21rsSetElementAt_ulong413rs_allocationDv4_mjjj", (void *)&SC_SetElementAt3_ulong4, true }, 957 958 { "_Z19rsSetElementAt_long13rs_allocationlj", (void *)&SC_SetElementAt1_long, true }, 959 { "_Z20rsSetElementAt_long213rs_allocationDv2_lj", (void *)&SC_SetElementAt1_long2, true }, 960 { "_Z20rsSetElementAt_long313rs_allocationDv3_lj", (void *)&SC_SetElementAt1_long3, true }, 961 { "_Z20rsSetElementAt_long413rs_allocationDv4_lj", (void *)&SC_SetElementAt1_long4, true }, 962 { "_Z19rsSetElementAt_long13rs_allocationljj", (void *)&SC_SetElementAt2_long, true }, 963 { "_Z20rsSetElementAt_long213rs_allocationDv2_ljj", (void *)&SC_SetElementAt2_long2, true }, 964 { "_Z20rsSetElementAt_long313rs_allocationDv3_ljj", (void *)&SC_SetElementAt2_long3, true }, 965 { "_Z20rsSetElementAt_long413rs_allocationDv4_ljj", (void *)&SC_SetElementAt2_long4, true }, 966 { "_Z19rsSetElementAt_long13rs_allocationljjj", (void *)&SC_SetElementAt3_long, true }, 967 { "_Z20rsSetElementAt_long213rs_allocationDv2_ljjj", (void *)&SC_SetElementAt3_long2, true }, 968 { "_Z20rsSetElementAt_long313rs_allocationDv3_ljjj", (void *)&SC_SetElementAt3_long3, true }, 969 { "_Z20rsSetElementAt_long413rs_allocationDv4_ljjj", (void *)&SC_SetElementAt3_long4, true }, 970 971 { "_Z20rsSetElementAt_float13rs_allocationft", (void *)&SC_SetElementAt1_float, true }, 972 { "_Z21rsSetElementAt_float213rs_allocationDv2_fj", (void *)&SC_SetElementAt1_float2, true }, 973 { "_Z21rsSetElementAt_float313rs_allocationDv3_fj", (void *)&SC_SetElementAt1_float3, true }, 974 { "_Z21rsSetElementAt_float413rs_allocationDv4_fj", (void *)&SC_SetElementAt1_float4, true }, 975 { "_Z20rsSetElementAt_float13rs_allocationfjj", (void *)&SC_SetElementAt2_float, true }, 976 { "_Z21rsSetElementAt_float213rs_allocationDv2_fjj", (void *)&SC_SetElementAt2_float2, true }, 977 { "_Z21rsSetElementAt_float313rs_allocationDv3_fjj", (void *)&SC_SetElementAt2_float3, true }, 978 { "_Z21rsSetElementAt_float413rs_allocationDv4_fjj", (void *)&SC_SetElementAt2_float4, true }, 979 { "_Z20rsSetElementAt_float13rs_allocationfjjj", (void *)&SC_SetElementAt3_float, true }, 980 { "_Z21rsSetElementAt_float213rs_allocationDv2_fjjj", (void *)&SC_SetElementAt3_float2, true }, 981 { "_Z21rsSetElementAt_float313rs_allocationDv3_fjjj", (void *)&SC_SetElementAt3_float3, true }, 982 { "_Z21rsSetElementAt_float413rs_allocationDv4_fjjj", (void *)&SC_SetElementAt3_float4, true }, 983 984 { "_Z21rsSetElementAt_double13rs_allocationdt", (void *)&SC_SetElementAt1_double, true }, 985 { "_Z22rsSetElementAt_double213rs_allocationDv2_dj", (void *)&SC_SetElementAt1_double2, true }, 986 { "_Z22rsSetElementAt_double313rs_allocationDv3_dj", (void *)&SC_SetElementAt1_double3, true }, 987 { "_Z22rsSetElementAt_double413rs_allocationDv4_dj", (void *)&SC_SetElementAt1_double4, true }, 988 { "_Z21rsSetElementAt_double13rs_allocationdjj", (void *)&SC_SetElementAt2_double, true }, 989 { "_Z22rsSetElementAt_double213rs_allocationDv2_djj", (void *)&SC_SetElementAt2_double2, true }, 990 { "_Z22rsSetElementAt_double313rs_allocationDv3_djj", (void *)&SC_SetElementAt2_double3, true }, 991 { "_Z22rsSetElementAt_double413rs_allocationDv4_djj", (void *)&SC_SetElementAt2_double4, true }, 992 { "_Z21rsSetElementAt_double13rs_allocationdjjj", (void *)&SC_SetElementAt3_double, true }, 993 { "_Z22rsSetElementAt_double213rs_allocationDv2_djjj", (void *)&SC_SetElementAt3_double2, true }, 994 { "_Z22rsSetElementAt_double313rs_allocationDv3_djjj", (void *)&SC_SetElementAt3_double3, true }, 995 { "_Z22rsSetElementAt_double413rs_allocationDv4_djjj", (void *)&SC_SetElementAt3_double4, true }, 996 997 998 // Refcounting 999 { "_Z11rsSetObjectP10rs_elementS_", (void *)&SC_SetObject, true }, 1000 { "_Z13rsClearObjectP10rs_element", (void *)&SC_ClearObject, true }, 1001 { "_Z10rsIsObject10rs_element", (void *)&SC_IsObject, true }, 1002 1003 { "_Z11rsSetObjectP7rs_typeS_", (void *)&SC_SetObject, true }, 1004 { "_Z13rsClearObjectP7rs_type", (void *)&SC_ClearObject, true }, 1005 { "_Z10rsIsObject7rs_type", (void *)&SC_IsObject, true }, 1006 1007 { "_Z11rsSetObjectP13rs_allocationS_", (void *)&SC_SetObject, true }, 1008 { "_Z13rsClearObjectP13rs_allocation", (void *)&SC_ClearObject, true }, 1009 { "_Z10rsIsObject13rs_allocation", (void *)&SC_IsObject, true }, 1010 1011 { "_Z11rsSetObjectP10rs_samplerS_", (void *)&SC_SetObject, true }, 1012 { "_Z13rsClearObjectP10rs_sampler", (void *)&SC_ClearObject, true }, 1013 { "_Z10rsIsObject10rs_sampler", (void *)&SC_IsObject, true }, 1014 1015 { "_Z11rsSetObjectP9rs_scriptS_", (void *)&SC_SetObject, true }, 1016 { "_Z13rsClearObjectP9rs_script", (void *)&SC_ClearObject, true }, 1017 { "_Z10rsIsObject9rs_script", (void *)&SC_IsObject, true }, 1018 1019 { "_Z11rsSetObjectP7rs_pathS_", (void *)&SC_SetObject, true }, 1020 { "_Z13rsClearObjectP7rs_path", (void *)&SC_ClearObject, true }, 1021 { "_Z10rsIsObject7rs_path", (void *)&SC_IsObject, true }, 1022 1023 { "_Z11rsSetObjectP7rs_meshS_", (void *)&SC_SetObject, true }, 1024 { "_Z13rsClearObjectP7rs_mesh", (void *)&SC_ClearObject, true }, 1025 { "_Z10rsIsObject7rs_mesh", (void *)&SC_IsObject, true }, 1026 1027 { "_Z11rsSetObjectP19rs_program_fragmentS_", (void *)&SC_SetObject, true }, 1028 { "_Z13rsClearObjectP19rs_program_fragment", (void *)&SC_ClearObject, true }, 1029 { "_Z10rsIsObject19rs_program_fragment", (void *)&SC_IsObject, true }, 1030 1031 { "_Z11rsSetObjectP17rs_program_vertexS_", (void *)&SC_SetObject, true }, 1032 { "_Z13rsClearObjectP17rs_program_vertex", (void *)&SC_ClearObject, true }, 1033 { "_Z10rsIsObject17rs_program_vertex", (void *)&SC_IsObject, true }, 1034 1035 { "_Z11rsSetObjectP17rs_program_rasterS_", (void *)&SC_SetObject, true }, 1036 { "_Z13rsClearObjectP17rs_program_raster", (void *)&SC_ClearObject, true }, 1037 { "_Z10rsIsObject17rs_program_raster", (void *)&SC_IsObject, true }, 1038 1039 { "_Z11rsSetObjectP16rs_program_storeS_", (void *)&SC_SetObject, true }, 1040 { "_Z13rsClearObjectP16rs_program_store", (void *)&SC_ClearObject, true }, 1041 { "_Z10rsIsObject16rs_program_store", (void *)&SC_IsObject, true }, 1042 1043 { "_Z11rsSetObjectP7rs_fontS_", (void *)&SC_SetObject, true }, 1044 { "_Z13rsClearObjectP7rs_font", (void *)&SC_ClearObject, true }, 1045 { "_Z10rsIsObject7rs_font", (void *)&SC_IsObject, true }, 1046 1047 // Allocation ops 1048 { "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_AllocationSyncAll, true }, 1049 { "_Z20rsgAllocationSyncAll13rs_allocation", (void *)&SC_AllocationSyncAll, false }, 1050 { "_Z20rsgAllocationSyncAll13rs_allocationj", (void *)&SC_AllocationSyncAll2, false }, 1051 { "_Z20rsgAllocationSyncAll13rs_allocation24rs_allocation_usage_type", (void *)&SC_AllocationSyncAll2, false }, 1052 { "_Z15rsGetAllocationPKv", (void *)&SC_GetAllocation, true }, 1053 { "_Z18rsAllocationIoSend13rs_allocation", (void *)&SC_AllocationIoSend, false }, 1054 { "_Z21rsAllocationIoReceive13rs_allocation", (void *)&SC_AllocationIoReceive, false }, 1055 { "_Z23rsAllocationCopy1DRange13rs_allocationjjjS_jj", (void *)&SC_AllocationCopy1DRange, false }, 1056 { "_Z23rsAllocationCopy2DRange13rs_allocationjjj26rs_allocation_cubemap_facejjS_jjjS0_", (void *)&SC_AllocationCopy2DRange, false }, 1057 1058 // Messaging 1059 1060 { "_Z14rsSendToClienti", (void *)&SC_ToClient, false }, 1061 { "_Z14rsSendToClientiPKvj", (void *)&SC_ToClient2, false }, 1062 { "_Z22rsSendToClientBlockingi", (void *)&SC_ToClientBlocking, false }, 1063 { "_Z22rsSendToClientBlockingiPKvj", (void *)&SC_ToClientBlocking2, false }, 1064 1065 { "_Z22rsgBindProgramFragment19rs_program_fragment", (void *)&SC_BindProgramFragment, false }, 1066 { "_Z19rsgBindProgramStore16rs_program_store", (void *)&SC_BindProgramStore, false }, 1067 { "_Z20rsgBindProgramVertex17rs_program_vertex", (void *)&SC_BindProgramVertex, false }, 1068 { "_Z20rsgBindProgramRaster17rs_program_raster", (void *)&SC_BindProgramRaster, false }, 1069 { "_Z14rsgBindSampler19rs_program_fragmentj10rs_sampler", (void *)&SC_BindSampler, false }, 1070 { "_Z14rsgBindTexture19rs_program_fragmentj13rs_allocation", (void *)&SC_BindTexture, false }, 1071 { "_Z15rsgBindConstant19rs_program_fragmentj13rs_allocation", (void *)&SC_BindFragmentConstant, false }, 1072 { "_Z15rsgBindConstant17rs_program_vertexj13rs_allocation", (void *)&SC_BindVertexConstant, false }, 1073 1074 { "_Z36rsgProgramVertexLoadProjectionMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadProjectionMatrix, false }, 1075 { "_Z31rsgProgramVertexLoadModelMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadModelMatrix, false }, 1076 { "_Z33rsgProgramVertexLoadTextureMatrixPK12rs_matrix4x4", (void *)&SC_VpLoadTextureMatrix, false }, 1077 1078 { "_Z35rsgProgramVertexGetProjectionMatrixP12rs_matrix4x4", (void *)&SC_VpGetProjectionMatrix, false }, 1079 1080 { "_Z31rsgProgramFragmentConstantColor19rs_program_fragmentffff", (void *)&SC_PfConstantColor, false }, 1081 1082 { "_Z11rsgGetWidthv", (void *)&SC_GetWidth, false }, 1083 { "_Z12rsgGetHeightv", (void *)&SC_GetHeight, false }, 1084 1085 1086 { "_Z11rsgDrawRectfffff", (void *)&SC_DrawRect, false }, 1087 { "_Z11rsgDrawQuadffffffffffff", (void *)&SC_DrawQuad, false }, 1088 { "_Z20rsgDrawQuadTexCoordsffffffffffffffffffff", (void *)&SC_DrawQuadTexCoords, false }, 1089 { "_Z24rsgDrawSpriteScreenspacefffff", (void *)&SC_DrawSpriteScreenspace, false }, 1090 1091 { "_Z11rsgDrawMesh7rs_mesh", (void *)&SC_DrawMesh, false }, 1092 { "_Z11rsgDrawMesh7rs_meshj", (void *)&SC_DrawMeshPrimitive, false }, 1093 { "_Z11rsgDrawMesh7rs_meshjjj", (void *)&SC_DrawMeshPrimitiveRange, false }, 1094 { "_Z25rsgMeshComputeBoundingBox7rs_meshPfS0_S0_S0_S0_S0_", (void *)&SC_MeshComputeBoundingBox, false }, 1095 1096 { "_Z11rsgDrawPath7rs_path", (void *)&SC_DrawPath, false }, 1097 1098 { "_Z13rsgClearColorffff", (void *)&SC_ClearColor, false }, 1099 { "_Z13rsgClearDepthf", (void *)&SC_ClearDepth, false }, 1100 1101 { "_Z11rsgDrawTextPKcii", (void *)&SC_DrawText, false }, 1102 { "_Z11rsgDrawText13rs_allocationii", (void *)&SC_DrawTextAlloc, false }, 1103 { "_Z14rsgMeasureTextPKcPiS1_S1_S1_", (void *)&SC_MeasureText, false }, 1104 { "_Z14rsgMeasureText13rs_allocationPiS0_S0_S0_", (void *)&SC_MeasureTextAlloc, false }, 1105 1106 { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false }, 1107 { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false }, 1108 1109 { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_BindFrameBufferObjectColorTarget, false }, 1110 { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_BindFrameBufferObjectDepthTarget, false }, 1111 { "_Z19rsgClearColorTargetj", (void *)&SC_ClearFrameBufferObjectColorTarget, false }, 1112 { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false }, 1113 { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false }, 1114 1115 { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true }, 1116 { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true }, 1117 { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK14rs_script_call", (void *)&SC_ForEach_SAAUS, true }, 1118 { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true }, 1119 { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK14rs_script_call", (void *)&SC_ForEach_SAAULS, true }, 1120 1121 // time 1122 { "_Z6rsTimePi", (void *)&SC_Time, true }, 1123 { "_Z11rsLocaltimeP5rs_tmPKi", (void *)&SC_LocalTime, true }, 1124 { "_Z14rsUptimeMillisv", (void*)&SC_UptimeMillis, true }, 1125 { "_Z13rsUptimeNanosv", (void*)&SC_UptimeNanos, true }, 1126 { "_Z7rsGetDtv", (void*)&SC_GetDt, false }, 1127 1128 // misc 1129 { "_Z5colorffff", (void *)&SC_Color, false }, 1130 { "_Z9rsgFinishv", (void *)&SC_Finish, false }, 1131 1132 { NULL, NULL, false } 1133}; 1134 1135 1136extern const RsdCpuReference::CpuSymbol * rsdLookupRuntimeStub(Context * pContext, char const* name) { 1137 ScriptC *s = (ScriptC *)pContext; 1138 const RsdCpuReference::CpuSymbol *syms = gSyms; 1139 const RsdCpuReference::CpuSymbol *sym = NULL; 1140 1141 if (!sym) { 1142 while (syms->fnPtr) { 1143 if (!strcmp(syms->name, name)) { 1144 return syms; 1145 } 1146 syms++; 1147 } 1148 } 1149 1150 return NULL; 1151} 1152 1153 1154