Set the correct usage flags for rsdAllocationSetSurface

  - To allow a output buffer accessible by GPU, the ANativeWindow should have
    AHARDWAREBUFFER_USAGE_CPU_READ_RARELY and
    AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN flags.

Bug: 78172985
Test: mm
Test: RenderScript CTS tests pass
Test: ImageProcessingJB works fine with USAGE_IO_OUTPUT on walleye.
Change-Id: Ic5f9f5d423ba3b720a7d0e27e0f9543a139bae99
diff --git a/driver/rsdAllocation.cpp b/driver/rsdAllocation.cpp
index 6b59d1c..ad926a8 100644
--- a/driver/rsdAllocation.cpp
+++ b/driver/rsdAllocation.cpp
@@ -764,6 +764,15 @@
             return;
         }
 
+        if (alloc->mHal.state.usageFlags & RS_ALLOCATION_USAGE_SCRIPT) {
+            r = ANativeWindow_setUsage(nw,
+                    AHARDWAREBUFFER_USAGE_CPU_READ_RARELY | AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN);
+            if (r) {
+                rsc->setError(RS_ERROR_DRIVER, "Error setting IO output buffer usage.");
+                return;
+            }
+        }
+
         IoGetBuffer(rsc, alloc, nw);
         drv->wndSurface = nw;
     }