libvrflinger: Inject USAGE_HW_COMPOSER usage into DirectSurface buffers.
DirectSurfaces are used by the VR display manager to do direct rendering
in VR mode. The buffers backing a DirectSurface must include the HWC
usage flag, but this flag is not exposed through AHardwareBuffer, for
good reason. Inject this necessary usage bit on the framework side to
enable proper operation.
Bug: None
Test: Build; run.
Change-Id: I46e6b97e41763aaa7870fa64b09ea3a5a81990c1
diff --git a/libs/vr/libvrflinger/display_surface.cpp b/libs/vr/libvrflinger/display_surface.cpp
index fb2751b..6917b8c 100644
--- a/libs/vr/libvrflinger/display_surface.cpp
+++ b/libs/vr/libvrflinger/display_surface.cpp
@@ -268,7 +268,10 @@
std::lock_guard<std::mutex> autolock(lock_);
if (!direct_queue_) {
- auto producer = ProducerQueue::Create(meta_size_bytes);
+ // Inject the hw composer usage flag to enable the display to read the
+ // buffers.
+ auto producer = ProducerQueue::Create(
+ meta_size_bytes, GraphicBuffer::USAGE_HW_COMPOSER, 0, 0, 0);
if (!producer) {
ALOGE(
"DirectDisplaySurface::OnCreateQueue: Failed to create producer "