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;
}