diff options
author | Miao Wang <miaowang@google.com> | 2018-04-17 10:41:17 -0700 |
---|---|---|
committer | Miao Wang <miaowang@google.com> | 2018-04-20 18:58:09 +0000 |
commit | 987d1e472015692fdd2eb6dc19a52888e5c61ef7 (patch) | |
tree | 042b2c09078feb8253afd6dc275e25d44ca1eda0 | |
parent | fe79bccaec70d01f7ff69e91f8239e69def68b70 (diff) | |
download | rs-pie-qpr1-s3-release.tar.gz |
Set the correct usage flags for rsdAllocationSetSurfaceandroid-9.0.0_r47android-9.0.0_r46android-9.0.0_r45android-9.0.0_r44android-9.0.0_r43android-9.0.0_r42android-9.0.0_r41android-9.0.0_r40android-9.0.0_r39android-9.0.0_r38android-9.0.0_r37android-9.0.0_r36android-9.0.0_r35android-9.0.0_r34android-9.0.0_r33android-9.0.0_r32android-9.0.0_r31android-9.0.0_r30android-9.0.0_r22android-9.0.0_r21android-9.0.0_r20android-9.0.0_r19android-9.0.0_r16android-9.0.0_r12android-9.0.0_r11pie-qpr3-s1-releasepie-qpr3-releasepie-qpr3-b-releasepie-qpr2-releasepie-qpr1-s3-releasepie-qpr1-s2-releasepie-qpr1-s1-releasepie-qpr1-releasepie-dr1-releasepie-dr1-devpie-devpie-b4s4-releasepie-b4s4-dev
- 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
-rw-r--r-- | driver/rsdAllocation.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/driver/rsdAllocation.cpp b/driver/rsdAllocation.cpp index 6b59d1c7..ad926a88 100644 --- a/driver/rsdAllocation.cpp +++ b/driver/rsdAllocation.cpp @@ -764,6 +764,15 @@ void rsdAllocationSetSurface(const Context *rsc, Allocation *alloc, ANativeWindo 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; } |