Fix decoder buffer usage

it needs `write` access to populate images

Bug: 285100511
Test: play a YouTube video
Signed-off-by: Roman Kiryanov <rkir@google.com>
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:b06dcedbb89a9d4b77e81f401bb8a862d5db77d7)
Merged-In: I906af8a70a1e58827d59cabf19870752b72d5b35
Change-Id: I906af8a70a1e58827d59cabf19870752b72d5b35
diff --git a/system/codecs/c2/decoders/avcdec/C2GoldfishAvcDec.cpp b/system/codecs/c2/decoders/avcdec/C2GoldfishAvcDec.cpp
index a4a9a1d..8ae1d0a 100644
--- a/system/codecs/c2/decoders/avcdec/C2GoldfishAvcDec.cpp
+++ b/system/codecs/c2/decoders/avcdec/C2GoldfishAvcDec.cpp
@@ -719,8 +719,8 @@
     }
     if (!mOutBlock) {
         const uint32_t format = HAL_PIXEL_FORMAT_YCBCR_420_888;
-        const C2MemoryUsage usage = {C2MemoryUsage::CPU_READ,
-                                     (uint64_t)(BufferUsage::VIDEO_DECODER)};
+        const C2MemoryUsage usage = {(uint64_t)(BufferUsage::VIDEO_DECODER),
+                                     C2MemoryUsage::CPU_WRITE};
         c2_status_t err = pool->fetchGraphicBlock(ALIGN2(mWidth), mHeight,
                                                   format, usage, &mOutBlock);
         if (err != C2_OK) {
diff --git a/system/codecs/c2/decoders/hevcdec/C2GoldfishHevcDec.cpp b/system/codecs/c2/decoders/hevcdec/C2GoldfishHevcDec.cpp
index a0cb8d5..e8d076d 100644
--- a/system/codecs/c2/decoders/hevcdec/C2GoldfishHevcDec.cpp
+++ b/system/codecs/c2/decoders/hevcdec/C2GoldfishHevcDec.cpp
@@ -667,8 +667,8 @@
     }
     if (!mOutBlock) {
         const uint32_t format = HAL_PIXEL_FORMAT_YCBCR_420_888;
-        const C2MemoryUsage usage = {C2MemoryUsage::CPU_READ,
-                                     (uint64_t)(BufferUsage::VIDEO_DECODER)};
+        const C2MemoryUsage usage = {(uint64_t)(BufferUsage::VIDEO_DECODER),
+                                     C2MemoryUsage::CPU_WRITE};
         c2_status_t err = pool->fetchGraphicBlock(ALIGN2(mWidth), mHeight,
                                                   format, usage, &mOutBlock);
         if (err != C2_OK) {
diff --git a/system/codecs/c2/decoders/vpxdec/C2GoldfishVpxDec.cpp b/system/codecs/c2/decoders/vpxdec/C2GoldfishVpxDec.cpp
index 60a625f..6e6c651 100644
--- a/system/codecs/c2/decoders/vpxdec/C2GoldfishVpxDec.cpp
+++ b/system/codecs/c2/decoders/vpxdec/C2GoldfishVpxDec.cpp
@@ -724,8 +724,8 @@
     // now get the block
     std::shared_ptr<C2GraphicBlock> block;
     uint32_t format = HAL_PIXEL_FORMAT_YCBCR_420_888;
-    const C2MemoryUsage usage = {C2MemoryUsage::CPU_READ,
-                                 (uint64_t)(BufferUsage::VIDEO_DECODER)};
+    const C2MemoryUsage usage = {(uint64_t)(BufferUsage::VIDEO_DECODER),
+                                 C2MemoryUsage::CPU_WRITE};
 
     c2_status_t err = pool->fetchGraphicBlock(align(mWidth, 2), mHeight, format,
                                               usage, &block);