summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Luc Brouillet <jeanluc@google.com>2015-08-20 17:30:41 -0700
committerJean-Luc Brouillet <jeanluc@google.com>2015-08-20 19:49:44 -0700
commitd1fdfc12e1b52b362452bc08ffaf472ff7c8c491 (patch)
treefdc4b11c26e2c4176d97535394385c8cc96a5c36
parent966f28aea042b69caa614182c8f1f30f8d709a7c (diff)
downloadandroid_frameworks_rs-d1fdfc12e1b52b362452bc08ffaf472ff7c8c491.tar.gz
android_frameworks_rs-d1fdfc12e1b52b362452bc08ffaf472ff7c8c491.tar.bz2
android_frameworks_rs-d1fdfc12e1b52b362452bc08ffaf472ff7c8c491.zip
Restore missing min and max API.
min(float2/3/4, float) and max(float2/3/4, float) were defined in our headers in K. In L, they were removed by mistake. This continued to work however because a float would be auto converted by the compiler to a float4. In M, we started validating for unexpected external references, which _Z3minDv4_ff is. This can prevent programs compiled with K from running on M. This CL restores the declarations. Corresponding CLs will fix the whitelist and add CTS tests. Bug:23389429 Change-Id: I3f91830a14b7e01cf1b6ea954fa6dd2fc9d71286 (cherry picked from commit 7cf263d593c057af8da8d57025e7315c4ed21ea2)
-rw-r--r--api/rs_math.spec20
-rw-r--r--scriptc/rs_math.rsh18
2 files changed, 38 insertions, 0 deletions
diff --git a/api/rs_math.spec b/api/rs_math.spec
index 6e7daf69..bf4d9c02 100644
--- a/api/rs_math.spec
+++ b/api/rs_math.spec
@@ -989,6 +989,16 @@ description:
end:
function: max
+version: 9
+attrib: const
+w: 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2 b
+end:
+
+function: max
version: 9 20
attrib: const
w: 1
@@ -1072,6 +1082,16 @@ description:
end:
function: min
+version: 9
+attrib: const
+w: 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2 b
+end:
+
+function: min
version: 9 20
attrib: const
w: 1
diff --git a/scriptc/rs_math.rsh b/scriptc/rs_math.rsh
index 91258541..9b39680d 100644
--- a/scriptc/rs_math.rsh
+++ b/scriptc/rs_math.rsh
@@ -1630,6 +1630,15 @@ extern float3 __attribute__((const, overloadable))
extern float4 __attribute__((const, overloadable))
max(float4 a, float4 b);
+extern float2 __attribute__((const, overloadable))
+ max(float2 a, float b);
+
+extern float3 __attribute__((const, overloadable))
+ max(float3 a, float b);
+
+extern float4 __attribute__((const, overloadable))
+ max(float4 a, float b);
+
#if !defined(RS_VERSION) || (RS_VERSION <= 20)
static inline char __attribute__((const, overloadable))
max(char a, char b) {
@@ -2047,6 +2056,15 @@ extern float3 __attribute__((const, overloadable))
extern float4 __attribute__((const, overloadable))
min(float4 a, float4 b);
+extern float2 __attribute__((const, overloadable))
+ min(float2 a, float b);
+
+extern float3 __attribute__((const, overloadable))
+ min(float3 a, float b);
+
+extern float4 __attribute__((const, overloadable))
+ min(float4 a, float b);
+
#if !defined(RS_VERSION) || (RS_VERSION <= 20)
static inline char __attribute__((const, overloadable))
min(char a, char b) {