Convert the pose buffer into a more generic named buffer
* It's likely that we'll have more than one pose buffer
* It's cleaner to separate the vsync info into a separate buffer
Bug: 37001881
Bug: 37240552
Test: Added and manually ran TestNamedBuffersSetup
Change-Id: I76621d3cfa8c21c9d5d1e6e648854067673be9ab
diff --git a/libs/vr/libdvr/dvr_surface.cpp b/libs/vr/libdvr/dvr_surface.cpp
index a3cbba5..a04ed50 100644
--- a/libs/vr/libdvr/dvr_surface.cpp
+++ b/libs/vr/libdvr/dvr_surface.cpp
@@ -58,14 +58,25 @@
return 0;
}
-int dvrGetPoseBuffer(DvrReadBuffer** pose_buffer) {
+int dvrGetNamedBuffer(const char* name, DvrBuffer** out_buffer) {
auto client = android::dvr::DisplayClient::Create();
if (!client) {
- ALOGE("Failed to create display client!");
+ ALOGE("dvrGetNamedBuffer: Failed to create display client!");
return -ECOMM;
}
- *pose_buffer = CreateDvrReadBufferFromBufferConsumer(client->GetPoseBuffer());
+ if (out_buffer == nullptr || name == nullptr) {
+ ALOGE("dvrGetNamedBuffer: Invalid inputs: name=%p, out_buffer=%p.", name,
+ out_buffer);
+ return -EINVAL;
+ }
+
+ auto named_buffer = client->GetNamedBuffer(name);
+ if (!named_buffer) {
+ ALOGE("dvrGetNamedBuffer: Failed to find named buffer: %s.", name);
+ return -EINVAL;
+ }
+ *out_buffer = CreateDvrBufferFromIonBuffer(std::move(named_buffer));
return 0;
}