diff --git a/driver/rsdRuntimeStubs.cpp b/driver/rsdRuntimeStubs.cpp
index b4958e2..79a1315 100644
--- a/driver/rsdRuntimeStubs.cpp
+++ b/driver/rsdRuntimeStubs.cpp
@@ -1122,6 +1122,33 @@
     ALOGD("%s {%f, %f, %f, %f}", s, f.x, f.y, f.z, f.w);
 }
 
+// Accept a half value converted to float.  This eliminates the need in the
+// driver to properly support the half datatype (either by adding compiler flags
+// for half or link against compiler_rt).
+void rsDebug(const char *s, float f, ushort us) {
+    ALOGD("%s {%f} {0x%hx}", s, f, us);
+}
+
+void rsDebug(const char *s, const float2 *f2, const ushort2 *us2) {
+    float2 f = *f2;
+    ushort2 us = *us2;
+    ALOGD("%s {%f %f} {0x%hx 0x%hx}", s, f.x, f.y, us.x, us.y);
+}
+
+void rsDebug(const char *s, const float3 *f3, const ushort3 *us3) {
+    float3 f = *f3;
+    ushort3 us = *us3;
+    ALOGD("%s {%f %f %f} {0x%hx 0x%hx 0x%hx}", s, f.x, f.y, f.z, us.x, us.y,
+          us.z);
+}
+
+void rsDebug(const char *s, const float4 *f4, const ushort4 *us4) {
+    float4 f = *f4;
+    ushort4 us = *us4;
+    ALOGD("%s {%f %f %f %f} {0x%hx 0x%hx 0x%hx 0x%hx}", s, f.x, f.y, f.z, f.w,
+          us.x, us.y, us.z, us.w);
+}
+
 void rsDebug(const char *s, double d) {
     ALOGD("%s %f, 0x%08llx", s, d, *((long long *) (&d)));
 }
diff --git a/driver/runtime/rs_core.c b/driver/runtime/rs_core.c
index 60d8578..6e4c6d0 100644
--- a/driver/runtime/rs_core.c
+++ b/driver/runtime/rs_core.c
@@ -310,3 +310,37 @@
 PRIM_DEBUG(double4)
 
 #undef PRIM_DEBUG
+
+// Convert the half values to float before handing off to the driver.  This
+// eliminates the need in the driver to properly support the half datatype
+// (either by adding compiler flags for half or link against compiler_rt).
+// Also, pass the bit-equivalent ushort to be printed.
+extern void __attribute__((overloadable)) rsDebug(const char *s, float f,
+                                                  ushort us);
+extern void __attribute__((overloadable)) rsDebug(const char *s, half h) {
+    rsDebug(s, (float) h, *(ushort *) &h);
+}
+
+extern void __attribute__((overloadable)) rsDebug(const char *s,
+                                                  const float2 *f,
+                                                  const ushort2 *us);
+extern void __attribute__((overloadable)) rsDebug(const char *s, half2 h2) {
+    float2 f = convert_float2(h2);
+    rsDebug(s, &f, (ushort2 *) &h2);
+}
+
+extern void __attribute__((overloadable)) rsDebug(const char *s,
+                                                  const float3 *f,
+                                                  const ushort3 *us);
+extern void __attribute__((overloadable)) rsDebug(const char *s, half3 h3) {
+    float3 f = convert_float3(h3);
+    rsDebug(s, &f, (ushort3 *) &h3);
+}
+
+extern void __attribute__((overloadable)) rsDebug(const char *s,
+                                                  const float4 *f,
+                                                  const ushort4 *us);
+extern void __attribute__((overloadable)) rsDebug(const char *s, half4 h4) {
+    float4 f = convert_float4(h4);
+    rsDebug(s, &f, (ushort4 *) &h4);
+}
