vulkan: Translate usage flags before passing to driver
Previously we just cast the 32bit flags and jammed them in the two
gralloc1 slots. Use the helper which does the correct translation.
(Yes, all these gralloc1isms are going away in favor of a single 64bit
flags field, but Vulkan HALs expect us to implement our side of
ANDROID_native_buffer correctly.)
(Cherry-picked from 4744291270cc6 in oc-dev)
Test: boot sailfish, run vulkan demo
Bug: 37686587
Change-Id: I806011986e8140d7f608d281798605bd9ca9a86b
diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
index ded9549..651438d 100644
--- a/vulkan/libvulkan/swapchain.cpp
+++ b/vulkan/libvulkan/swapchain.cpp
@@ -1093,12 +1093,9 @@
image_native_buffer.stride = img.buffer->stride;
image_native_buffer.format = img.buffer->format;
image_native_buffer.usage = int(img.buffer->usage);
- // TODO: Adjust once ANativeWindowBuffer supports gralloc1-style usage.
- // For now, this is the same translation Gralloc1On0Adapter does.
- image_native_buffer.usage2.consumer =
- static_cast<uint64_t>(img.buffer->usage);
- image_native_buffer.usage2.producer =
- static_cast<uint64_t>(img.buffer->usage);
+ android_convertGralloc0To1Usage(int(img.buffer->usage),
+ &image_native_buffer.usage2.producer,
+ &image_native_buffer.usage2.consumer);
result =
dispatch.CreateImage(device, &image_create, nullptr, &img.image);