Add rsDebug(msg, float2-4)

Change-Id: I6e0594d1fa5ed9ae27140334b6dce058aeb38f4e
diff --git a/api/rs_debug.spec b/api/rs_debug.spec
index 4f91a68..dcafe20 100644
--- a/api/rs_debug.spec
+++ b/api/rs_debug.spec
@@ -41,7 +41,6 @@
 function: rsDebug
 version: 17
 w: 2, 3, 4
-# TODO We're not doing it for f64?
 t: i32, u32, i64, u64
 ret: void
 arg: const char* message
@@ -50,6 +49,16 @@
 end:
 
 function: rsDebug
+version: 23
+w: 2, 3, 4
+t: f64
+ret: void
+arg: const char* message
+arg: #2#1 a
+test: none
+end:
+
+function: rsDebug
 w: 1, 2, 3, 4
 ret: void
 arg: const char* message
diff --git a/driver/rsdRuntimeStubs.cpp b/driver/rsdRuntimeStubs.cpp
index aef6448..0fa30d1 100644
--- a/driver/rsdRuntimeStubs.cpp
+++ b/driver/rsdRuntimeStubs.cpp
@@ -1962,6 +1962,15 @@
 static void SC_debugD(const char *s, double d) {
     ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d)));
 }
+static void SC_debugD2(const char *s, double2 d) {
+    ALOGD("%s {%f, %f}", s, d.x, d.y);
+}
+static void SC_debugD3(const char *s, double3 d) {
+    ALOGD("%s {%f, %f, %f}", s, d.x, d.y, d.z);
+}
+static void SC_debugD4(const char *s, double4 d) {
+    ALOGD("%s {%f, %f, %f, %f}", s, d.x, d.y, d.z, d.w);
+}
 static void SC_debugFM4v4(const char *s, const float *f) {
     ALOGD("%s {%f, %f, %f, %f", s, f[0], f[4], f[8], f[12]);
     ALOGD("%s  %f, %f, %f, %f", s, f[1], f[5], f[9], f[13]);
@@ -2124,6 +2133,18 @@
     SC_debugD(s, d);
 }
 
+void rsDebug(const char *s, const double2 *d) {
+    SC_debugD2(s, *d);
+}
+
+void rsDebug(const char *s, const double3 *d) {
+    SC_debugD3(s, *d);
+}
+
+void rsDebug(const char *s, const double4 *d) {
+    SC_debugD4(s, *d);
+}
+
 void rsDebug(const char *s, const rs_matrix4x4 *m) {
     SC_debugFM4v4(s, (float *) m);
 }
diff --git a/java/tests/RsTest/src/com/android/rs/test/rsdebug.rs b/java/tests/RsTest/src/com/android/rs/test/rsdebug.rs
index 68ac168..199816b 100644
--- a/java/tests/RsTest/src/com/android/rs/test/rsdebug.rs
+++ b/java/tests/RsTest/src/com/android/rs/test/rsdebug.rs
@@ -6,6 +6,9 @@
 float3 float3Test = {3.99f, 13.99f, 23.99f};
 float4 float4Test = {4.99f, 14.99f, 24.99f, 34.99f};
 double doubleTest = 2.05;
+double2 double2Test = {2.05, 12.05};
+double3 double3Test = {3.05, 13.05, 23.05};
+double4 double4Test = {4.05, 14.05, 24.05, 34.05};
 char charTest = -8;
 short shortTest = -16;
 int intTest = -32;
@@ -30,6 +33,9 @@
     rsDebug("float3Test", float3Test);
     rsDebug("float4Test", float4Test);
     rsDebug("doubleTest", doubleTest);
+    rsDebug("double2Test", double2Test);
+    rsDebug("double3Test", double3Test);
+    rsDebug("double4Test", double4Test);
     rsDebug("charTest", charTest);
     rsDebug("shortTest", shortTest);
     rsDebug("intTest", intTest);
diff --git a/scriptc/rs_debug.rsh b/scriptc/rs_debug.rsh
index 348c598..f75a4cf 100644
--- a/scriptc/rs_debug.rsh
+++ b/scriptc/rs_debug.rsh
@@ -112,6 +112,21 @@
     rsDebug(const char* message, ulong4 a);
 #endif
 
+#if (defined(RS_VERSION) && (RS_VERSION >= 23))
+extern void __attribute__((overloadable))
+    rsDebug(const char* message, double2 a);
+#endif
+
+#if (defined(RS_VERSION) && (RS_VERSION >= 23))
+extern void __attribute__((overloadable))
+    rsDebug(const char* message, double3 a);
+#endif
+
+#if (defined(RS_VERSION) && (RS_VERSION >= 23))
+extern void __attribute__((overloadable))
+    rsDebug(const char* message, double4 a);
+#endif
+
 extern void __attribute__((overloadable))
     rsDebug(const char* message, float a);