From cf57dec80b3d34f09fd22693fa5a07a3f3a9ea83 Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Mon, 25 Jul 2011 12:58:37 -0700 Subject: Add size param to rsForEach bug 5074640 Change-Id: I395bd8b295beacc979681ccdd3451d9d6cc3d672 --- libs/rs/driver/rsdRuntimeStubs.cpp | 52 +++++++++++++++++++++++++++++--------- libs/rs/scriptc/rs_math.rsh | 17 +++++++++++-- libs/rs/scriptc/rs_types.rsh | 5 ++++ 3 files changed, 60 insertions(+), 14 deletions(-) (limited to 'libs/rs') diff --git a/libs/rs/driver/rsdRuntimeStubs.cpp b/libs/rs/driver/rsdRuntimeStubs.cpp index 2f9f410..d8050ac 100644 --- a/libs/rs/driver/rsdRuntimeStubs.cpp +++ b/libs/rs/driver/rsdRuntimeStubs.cpp @@ -365,24 +365,49 @@ static const Allocation * SC_GetAllocation(const void *ptr) { return rsrGetAllocation(rsc, sc, ptr); } -static void SC_ForEach(Script *target, - Allocation *in, - Allocation *out, - const void *usr, - const RsScriptCall *call) { +static void SC_ForEach_SAA(Script *target, + Allocation *in, + Allocation *out) { + GET_TLS(); + rsrForEach(rsc, sc, target, in, out, NULL, 0, NULL); +} + +static void SC_ForEach_SAAU(Script *target, + Allocation *in, + Allocation *out, + const void *usr) { GET_TLS(); rsrForEach(rsc, sc, target, in, out, usr, 0, NULL); } -static void SC_ForEach2(Script *target, - Allocation *in, - Allocation *out, - const void *usr, - const RsScriptCall *call) { +static void SC_ForEach_SAAUS(Script *target, + Allocation *in, + Allocation *out, + const void *usr, + const RsScriptCall *call) { GET_TLS(); rsrForEach(rsc, sc, target, in, out, usr, 0, call); } +static void SC_ForEach_SAAUL(Script *target, + Allocation *in, + Allocation *out, + const void *usr, + uint32_t usrLen) { + GET_TLS(); + rsrForEach(rsc, sc, target, in, out, usr, usrLen, NULL); +} + +static void SC_ForEach_SAAULS(Script *target, + Allocation *in, + Allocation *out, + const void *usr, + uint32_t usrLen, + const RsScriptCall *call) { + GET_TLS(); + rsrForEach(rsc, sc, target, in, out, usr, usrLen, call); +} + ////////////////////////////////////////////////////////////////////////////// @@ -648,8 +673,11 @@ static RsdSymbolTable gSyms[] = { { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false }, { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false }, - { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach, false }, - { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach2, false }, + { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, false }, + { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, false }, + { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK16rs_script_call_t", (void *)&SC_ForEach_SAAUS, false }, + { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, false }, + { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK16rs_script_call_t", (void *)&SC_ForEach_SAAULS, false }, // time { "_Z6rsTimePi", (void *)&SC_Time, true }, diff --git a/libs/rs/scriptc/rs_math.rsh b/libs/rs/scriptc/rs_math.rsh index f38f72c..fb5c4f6 100644 --- a/libs/rs/scriptc/rs_math.rsh +++ b/libs/rs/scriptc/rs_math.rsh @@ -249,15 +249,28 @@ typedef struct rs_script_call { uint32_t arrayEnd; } rs_script_call_t; +#if 1//(RS_VERSION >= 14) extern void __attribute__((overloadable)) - rsForEach(rs_script script, rs_allocation input, - rs_allocation output, const void * usrData); + rsForEach(rs_script script, rs_allocation input, rs_allocation output); extern void __attribute__((overloadable)) + rsForEach(rs_script script, rs_allocation input, rs_allocation output, + const void * usrData, size_t usrDataLen); + +extern void __attribute__((overloadable)) + rsForEach(rs_script script, rs_allocation input, rs_allocation output, + const void * usrData, size_t usrDataLen, const rs_script_call_t *); +#else +extern void __attribute__((overloadable)) rsForEach(rs_script script, rs_allocation input, rs_allocation output, const void * usrData, const rs_script_call_t *); +#endif +// Move me once dependant changes are in. +extern void __attribute__((overloadable)) + rsForEach(rs_script script, rs_allocation input, + rs_allocation output, const void * usrData); /** diff --git a/libs/rs/scriptc/rs_types.rsh b/libs/rs/scriptc/rs_types.rsh index 536d1f0..121e013 100644 --- a/libs/rs/scriptc/rs_types.rsh +++ b/libs/rs/scriptc/rs_types.rsh @@ -19,6 +19,9 @@ typedef uint16_t ushort; typedef uint32_t uint; typedef uint64_t ulong; +typedef uint32_t size_t; +typedef int32_t ssize_t; + typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_element; typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_type; typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_allocation; @@ -88,6 +91,8 @@ typedef float4 rs_quaternion; #define RS_PACKED __attribute__((packed, aligned(4))) +#define NULL ((const void *)0) + typedef enum { RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0, RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1, -- cgit v1.1