Remove unnecessary clients and rename files.
- Remove clients for obsolete services.
- Rename display protocol defs file to match purpose.
- Rename display manager client file. "impl" does not match naming
conventions used by DVR libraries.
- Remove video mesh surface interface. This will be replaced by more
general surface support in the unified O compositor.
Bug: 36401174
Test: Build; run cube sea.
Change-Id: Idb782623319329f6fa1b0aa45005d9fee3b9957d
diff --git a/libs/vr/libdisplay/Android.bp b/libs/vr/libdisplay/Android.bp
index de2a56e..b79c8ba 100644
--- a/libs/vr/libdisplay/Android.bp
+++ b/libs/vr/libdisplay/Android.bp
@@ -15,15 +15,13 @@
sourceFiles = [
"native_buffer_queue.cpp",
"display_client.cpp",
- "display_manager_client_impl.cpp",
- "display_rpc.cpp",
+ "display_manager_client.cpp",
+ "display_protocol.cpp",
"dummy_native_window.cpp",
"gl_fenced_flush.cpp",
"graphics.cpp",
"late_latch.cpp",
- "video_mesh_surface_client.cpp",
"vsync_client.cpp",
- "screenshot_client.cpp",
"frame_history.cpp",
]
diff --git a/libs/vr/libdisplay/display_client.cpp b/libs/vr/libdisplay/display_client.cpp
index ef50a0f..494514d 100644
--- a/libs/vr/libdisplay/display_client.cpp
+++ b/libs/vr/libdisplay/display_client.cpp
@@ -8,7 +8,7 @@
#include <mutex>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
#include <private/dvr/late_latch.h>
#include <private/dvr/native_buffer.h>
diff --git a/libs/vr/libdisplay/display_manager_client_impl.cpp b/libs/vr/libdisplay/display_manager_client.cpp
similarity index 93%
rename from libs/vr/libdisplay/display_manager_client_impl.cpp
rename to libs/vr/libdisplay/display_manager_client.cpp
index 941da23..ca51ab6 100644
--- a/libs/vr/libdisplay/display_manager_client_impl.cpp
+++ b/libs/vr/libdisplay/display_manager_client.cpp
@@ -1,8 +1,8 @@
-#include "include/private/dvr/display_manager_client_impl.h"
+#include "include/private/dvr/display_manager_client.h"
#include <pdx/default_transport/client_channel_factory.h>
#include <private/dvr/buffer_hub_client.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
#include <utils/Log.h>
using android::pdx::LocalChannelHandle;
diff --git a/libs/vr/libdisplay/display_rpc.cpp b/libs/vr/libdisplay/display_protocol.cpp
similarity index 84%
rename from libs/vr/libdisplay/display_rpc.cpp
rename to libs/vr/libdisplay/display_protocol.cpp
index f5693bd..e96394c 100644
--- a/libs/vr/libdisplay/display_rpc.cpp
+++ b/libs/vr/libdisplay/display_protocol.cpp
@@ -1,4 +1,4 @@
-#include "include/private/dvr/display_rpc.h"
+#include "include/private/dvr/display_protocol.h"
namespace android {
namespace dvr {
diff --git a/libs/vr/libdisplay/graphics.cpp b/libs/vr/libdisplay/graphics.cpp
index 2abdf8e..bd3ed7e 100644
--- a/libs/vr/libdisplay/graphics.cpp
+++ b/libs/vr/libdisplay/graphics.cpp
@@ -24,7 +24,6 @@
#include <private/dvr/late_latch.h>
#include <private/dvr/native_buffer_queue.h>
#include <private/dvr/sensor_constants.h>
-#include <private/dvr/video_mesh_surface_client.h>
#include <private/dvr/vsync_client.h>
#include <private/dvr/platform_defines.h>
@@ -542,10 +541,6 @@
// LateLatch support.
std::unique_ptr<android::dvr::LateLatch> late_latch;
- // Video mesh support.
- std::vector<std::shared_ptr<android::dvr::VideoMeshSurfaceClient>>
- video_mesh_surfaces;
-
private:
// ANativeWindow function implementations
std::mutex lock_;
@@ -1533,44 +1528,3 @@
return graphics_context->display_surface->z_order();
}
-extern "C" DvrVideoMeshSurface* dvrGraphicsVideoMeshSurfaceCreate(
- DvrGraphicsContext* graphics_context) {
- auto display_surface = graphics_context->display_surface;
- // A DisplaySurface must be created prior to the creation of a
- // VideoMeshSurface.
- LOG_ALWAYS_FATAL_IF(display_surface == nullptr);
-
- LocalChannelHandle surface_handle = display_surface->CreateVideoMeshSurface();
- if (!surface_handle.valid()) {
- return nullptr;
- }
-
- std::unique_ptr<DvrVideoMeshSurface> surface(new DvrVideoMeshSurface);
- surface->client =
- android::dvr::VideoMeshSurfaceClient::Import(std::move(surface_handle));
-
- // TODO(jwcai) The next line is not needed...
- auto producer_queue = surface->client->GetProducerQueue();
- return surface.release();
-}
-
-extern "C" void dvrGraphicsVideoMeshSurfaceDestroy(
- DvrVideoMeshSurface* surface) {
- delete surface;
-}
-
-extern "C" void dvrGraphicsVideoMeshSurfacePresent(
- DvrGraphicsContext* graphics_context, DvrVideoMeshSurface* surface,
- const int eye, const float* transform) {
- volatile android::dvr::VideoMeshSurfaceMetadata* metadata =
- surface->client->GetMetadataBufferPtr();
-
- const uint32_t graphics_buffer_index =
- graphics_context->current_buffer->surface_buffer_index();
-
- for (int i = 0; i < 4; ++i) {
- metadata->transform[graphics_buffer_index][eye].val[i] = {
- transform[i + 0], transform[i + 4], transform[i + 8], transform[i + 12],
- };
- }
-}
diff --git a/libs/vr/libdisplay/include/private/dvr/display_client.h b/libs/vr/libdisplay/include/private/dvr/display_client.h
index fec2ea5..cec62af 100644
--- a/libs/vr/libdisplay/include/private/dvr/display_client.h
+++ b/libs/vr/libdisplay/include/private/dvr/display_client.h
@@ -6,7 +6,7 @@
#include <pdx/file_handle.h>
#include <private/dvr/buffer_hub_client.h>
#include <private/dvr/buffer_hub_queue_client.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
namespace android {
namespace dvr {
diff --git a/libs/vr/libdisplay/include/private/dvr/display_manager_client_impl.h b/libs/vr/libdisplay/include/private/dvr/display_manager_client.h
similarity index 79%
rename from libs/vr/libdisplay/include/private/dvr/display_manager_client_impl.h
rename to libs/vr/libdisplay/include/private/dvr/display_manager_client.h
index e09a440..fb2abeb 100644
--- a/libs/vr/libdisplay/include/private/dvr/display_manager_client_impl.h
+++ b/libs/vr/libdisplay/include/private/dvr/display_manager_client.h
@@ -1,10 +1,10 @@
-#ifndef ANDROID_DVR_DISPLAY_MANAGER_CLIENT_IMPL_H_
-#define ANDROID_DVR_DISPLAY_MANAGER_CLIENT_IMPL_H_
+#ifndef ANDROID_DVR_DISPLAY_MANAGER_CLIENT_H_
+#define ANDROID_DVR_DISPLAY_MANAGER_CLIENT_H_
#include <vector>
#include <pdx/client.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
namespace android {
namespace dvr {
@@ -36,4 +36,4 @@
} // namespace dvr
} // namespace android
-#endif // ANDROID_DVR_DISPLAY_MANAGER_CLIENT_IMPL_H_
+#endif // ANDROID_DVR_DISPLAY_MANAGER_CLIENT_H_
diff --git a/libs/vr/libdisplay/include/private/dvr/display_rpc.h b/libs/vr/libdisplay/include/private/dvr/display_protocol.h
similarity index 98%
rename from libs/vr/libdisplay/include/private/dvr/display_rpc.h
rename to libs/vr/libdisplay/include/private/dvr/display_protocol.h
index 1fcfe03..d0b57e4 100644
--- a/libs/vr/libdisplay/include/private/dvr/display_rpc.h
+++ b/libs/vr/libdisplay/include/private/dvr/display_protocol.h
@@ -1,5 +1,5 @@
-#ifndef ANDROID_DVR_DISPLAY_RPC_H_
-#define ANDROID_DVR_DISPLAY_RPC_H_
+#ifndef ANDROID_DVR_DISPLAY_PROTOCOL_H_
+#define ANDROID_DVR_DISPLAY_PROTOCOL_H_
#include <sys/types.h>
@@ -338,4 +338,4 @@
} // namespace dvr
} // namespace android
-#endif // ANDROID_DVR_DISPLAY_RPC_H_
+#endif // ANDROID_DVR_DISPLAY_PROTOCOL_H_
diff --git a/libs/vr/libdisplay/include/private/dvr/screenshot_client.h b/libs/vr/libdisplay/include/private/dvr/screenshot_client.h
deleted file mode 100644
index b6fc859..0000000
--- a/libs/vr/libdisplay/include/private/dvr/screenshot_client.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef ANDROID_DVR_SCREENSHOT_CLIENT_H_
-#define ANDROID_DVR_SCREENSHOT_CLIENT_H_
-
-#include <memory>
-#include <vector>
-
-#include <pdx/client.h>
-#include <private/dvr/display_rpc.h>
-#include <system/graphics.h>
-
-namespace android {
-namespace dvr {
-
-// Represents a connection to the screenshot service, which allows capturing an
-// upcoming frame as it is being rendered to the display.
-class ScreenshotClient : public pdx::ClientBase<ScreenshotClient> {
- public:
- int format() const { return format_; }
-
- // Attempts to take a screenshot. If successful, sets *data to the contents
- // of the screenshot and returns zero. Otherwise, returns a negative error
- // code.
- // |index| is used to match the requested buffer with various buffer layers.
- int Take(std::vector<uint8_t>* data, int index, int* return_width,
- int* return_height);
-
- private:
- friend BASE;
-
- ScreenshotClient();
-
- // Layout information for screenshots.
- int format_;
-
- ScreenshotClient(const ScreenshotClient&) = delete;
- void operator=(const ScreenshotClient&) = delete;
-};
-
-} // namespace dvr
-} // namespace android
-
-#endif // ANDROID_DVR_SCREENSHOT_CLIENT_H_
diff --git a/libs/vr/libdisplay/include/private/dvr/video_mesh_surface_client.h b/libs/vr/libdisplay/include/private/dvr/video_mesh_surface_client.h
deleted file mode 100644
index 3a7f125..0000000
--- a/libs/vr/libdisplay/include/private/dvr/video_mesh_surface_client.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef ANDROID_DVR_VIDEO_MESH_SURFACE_CLIENT_H_
-#define ANDROID_DVR_VIDEO_MESH_SURFACE_CLIENT_H_
-
-#include <private/dvr/buffer_hub_queue_client.h>
-#include <private/dvr/display_client.h>
-
-namespace android {
-namespace dvr {
-
-class VideoMeshSurfaceClient
- : pdx::ClientBase<VideoMeshSurfaceClient, SurfaceClient> {
- public:
- using LocalChannelHandle = pdx::LocalChannelHandle;
-
- // This call assumes ownership of |handle|.
- static std::unique_ptr<VideoMeshSurfaceClient> Import(
- LocalChannelHandle handle);
-
- std::shared_ptr<ProducerQueue> GetProducerQueue();
-
- // Get the shared memory metadata buffer for this video mesh surface. If it is
- // not yet allocated, this will allocate it.
- volatile VideoMeshSurfaceMetadata* GetMetadataBufferPtr();
-
- private:
- friend BASE;
-
- std::shared_ptr<ProducerQueue> producer_queue_;
- VideoMeshSurfaceMetadata* mapped_metadata_buffer_;
-
- explicit VideoMeshSurfaceClient(LocalChannelHandle handle);
-};
-
-} // namespace dvr
-} // namespace android
-
-struct DvrVideoMeshSurface {
- std::shared_ptr<android::dvr::VideoMeshSurfaceClient> client;
-};
-
-#endif // ANDROID_DVR_VIDEO_MESH_SURFACE_CLIENT_H_
diff --git a/libs/vr/libdisplay/screenshot_client.cpp b/libs/vr/libdisplay/screenshot_client.cpp
deleted file mode 100644
index 3ad0c68..0000000
--- a/libs/vr/libdisplay/screenshot_client.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-#include "include/private/dvr/screenshot_client.h"
-
-#include <log/log.h>
-
-#include <mutex>
-
-#include <pdx/default_transport/client_channel_factory.h>
-#include <private/dvr/display_rpc.h>
-
-using android::pdx::Transaction;
-using android::pdx::rpc::ClientPayload;
-using android::pdx::rpc::MessageBuffer;
-using android::pdx::rpc::ReplyBuffer;
-
-namespace android {
-namespace dvr {
-
-namespace {
-// Maximum supported pixels for screenshot capture. If the actual target buffer
-// is more than this, an error will be reported.
-constexpr int kMaxScreenshotPixels = 6000 * 4000;
-} // namespace
-
-int ScreenshotClient::Take(std::vector<uint8_t>* out_image, int index,
- int* return_width, int* return_height) {
- if (format_ != HAL_PIXEL_FORMAT_RGB_888) {
- ALOGE("ScreenshotClient::Take: Unsupported layout format: format=%d",
- format_);
- return -ENOSYS;
- }
-
- // TODO(eieio): Make a cleaner way to ensure enough capacity for send or
- // receive buffers. This method assumes TLS buffers that will maintain
- // capacity across calls within the same thread.
- MessageBuffer<ReplyBuffer>::Reserve(kMaxScreenshotPixels * 3);
- auto status = InvokeRemoteMethod<DisplayScreenshotRPC::TakeScreenshot>(index);
- if (!status) {
- ALOGE("ScreenshotClient::Take: Failed to take screenshot: %s",
- status.GetErrorMessage().c_str());
- return -status.error();
- }
-
- *return_width = status.get().width;
- *return_height = status.get().height;
- *out_image = std::move(status.take().buffer);
- return 0;
-}
-
-ScreenshotClient::ScreenshotClient()
- : BASE(pdx::default_transport::ClientChannelFactory::Create(
- DisplayScreenshotRPC::kClientPath)) {
- auto status = InvokeRemoteMethod<DisplayScreenshotRPC::GetFormat>();
- if (!status) {
- ALOGE(
- "ScreenshotClient::ScreenshotClient: Failed to retrieve screenshot "
- "layout: %s",
- status.GetErrorMessage().c_str());
-
- Close(status.error());
- } else {
- format_ = status.get();
- }
-}
-
-} // namespace dvr
-} // namespace android
diff --git a/libs/vr/libdisplay/video_mesh_surface_client.cpp b/libs/vr/libdisplay/video_mesh_surface_client.cpp
deleted file mode 100644
index a2307e5..0000000
--- a/libs/vr/libdisplay/video_mesh_surface_client.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "include/private/dvr/video_mesh_surface_client.h"
-
-using android::pdx::LocalChannelHandle;
-
-namespace android {
-namespace dvr {
-
-/* static */
-std::unique_ptr<VideoMeshSurfaceClient> VideoMeshSurfaceClient::Import(
- LocalChannelHandle handle) {
- return VideoMeshSurfaceClient::Create(std::move(handle));
-}
-
-VideoMeshSurfaceClient::VideoMeshSurfaceClient(LocalChannelHandle handle)
- : BASE(std::move(handle), SurfaceTypeEnum::VideoMesh),
- mapped_metadata_buffer_(nullptr) {
- // TODO(jwcai) import more data if needed.
-}
-
-std::shared_ptr<ProducerQueue> VideoMeshSurfaceClient::GetProducerQueue() {
- if (producer_queue_ == nullptr) {
- // Create producer queue through DisplayRPC
- auto status =
- InvokeRemoteMethod<DisplayRPC::VideoMeshSurfaceCreateProducerQueue>();
- if (!status) {
- ALOGE(
- "VideoMeshSurfaceClient::GetProducerQueue: failed to create producer "
- "queue: %s",
- status.GetErrorMessage().c_str());
- return nullptr;
- }
-
- producer_queue_ = ProducerQueue::Import(status.take());
- }
- return producer_queue_;
-}
-
-volatile VideoMeshSurfaceMetadata*
-VideoMeshSurfaceClient::GetMetadataBufferPtr() {
- if (!mapped_metadata_buffer_) {
- if (auto buffer_producer = GetMetadataBuffer()) {
- void* addr = nullptr;
- const int ret = buffer_producer->GetBlobReadWritePointer(
- sizeof(VideoMeshSurfaceMetadata), &addr);
- if (ret < 0) {
- ALOGE(
- "VideoMeshSurfaceClient::GetMetadataBufferPtr: Failed to map "
- "surface metadata: %s",
- strerror(-ret));
- return nullptr;
- }
- mapped_metadata_buffer_ = static_cast<VideoMeshSurfaceMetadata*>(addr);
- }
- }
-
- return mapped_metadata_buffer_;
-}
-
-} // namespace dvr
-} // namespace android
diff --git a/libs/vr/libdisplay/vsync_client.cpp b/libs/vr/libdisplay/vsync_client.cpp
index c928a08..2f6320c 100644
--- a/libs/vr/libdisplay/vsync_client.cpp
+++ b/libs/vr/libdisplay/vsync_client.cpp
@@ -3,7 +3,7 @@
#include <log/log.h>
#include <pdx/default_transport/client_channel_factory.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
using android::pdx::Transaction;
diff --git a/libs/vr/libdvr/display_manager_client.cpp b/libs/vr/libdvr/display_manager_client.cpp
index 6830085..5bed815 100644
--- a/libs/vr/libdvr/display_manager_client.cpp
+++ b/libs/vr/libdvr/display_manager_client.cpp
@@ -4,7 +4,7 @@
#include <grallocusage/GrallocUsageConversion.h>
#include <private/android/AHardwareBufferHelpers.h>
#include <private/dvr/buffer_hub_client.h>
-#include <private/dvr/display_manager_client_impl.h>
+#include <private/dvr/display_manager_client.h>
using android::dvr::DisplaySurfaceAttributeEnum;
diff --git a/libs/vr/libvrflinger/display_manager_service.cpp b/libs/vr/libvrflinger/display_manager_service.cpp
index 42ffaec..61bb71c 100644
--- a/libs/vr/libvrflinger/display_manager_service.cpp
+++ b/libs/vr/libvrflinger/display_manager_service.cpp
@@ -3,7 +3,7 @@
#include <pdx/channel_handle.h>
#include <pdx/default_transport/service_endpoint.h>
#include <private/android_filesystem_config.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
#include <private/dvr/trusted_uids.h>
#include <sys/poll.h>
diff --git a/libs/vr/libvrflinger/display_manager_service.h b/libs/vr/libvrflinger/display_manager_service.h
index b2417e5..f59520c 100644
--- a/libs/vr/libvrflinger/display_manager_service.h
+++ b/libs/vr/libvrflinger/display_manager_service.h
@@ -2,7 +2,7 @@
#define ANDROID_DVR_SERVICES_DISPLAYD_DISPLAY_MANAGER_SERVICE_H_
#include <pdx/service.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
#include "display_service.h"
diff --git a/libs/vr/libvrflinger/display_service.cpp b/libs/vr/libvrflinger/display_service.cpp
index 2dc840e..f56bc02 100644
--- a/libs/vr/libvrflinger/display_service.cpp
+++ b/libs/vr/libvrflinger/display_service.cpp
@@ -7,7 +7,7 @@
#include <pdx/rpc/remote_method.h>
#include <private/dvr/composite_hmd.h>
#include <private/dvr/device_metrics.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
#include <private/dvr/display_types.h>
#include <private/dvr/numeric.h>
#include <private/dvr/polynomial_radial_distortion.h>
diff --git a/libs/vr/libvrflinger/display_service.h b/libs/vr/libvrflinger/display_service.h
index dd5cac9..3b0d07e 100644
--- a/libs/vr/libvrflinger/display_service.h
+++ b/libs/vr/libvrflinger/display_service.h
@@ -4,7 +4,7 @@
#include <pdx/service.h>
#include <private/dvr/buffer_hub_client.h>
#include <private/dvr/bufferhub_rpc.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
#include <private/dvr/late_latch.h>
#include <functional>
diff --git a/libs/vr/libvrflinger/display_surface.h b/libs/vr/libvrflinger/display_surface.h
index 2e4cf75..1fec344 100644
--- a/libs/vr/libvrflinger/display_surface.h
+++ b/libs/vr/libvrflinger/display_surface.h
@@ -3,7 +3,7 @@
#include <pdx/file_handle.h>
#include <pdx/service.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
#include <private/dvr/ring_buffer.h>
#include <functional>
diff --git a/libs/vr/libvrflinger/surface_channel.h b/libs/vr/libvrflinger/surface_channel.h
index bb6b1c5..9dcac3f 100644
--- a/libs/vr/libvrflinger/surface_channel.h
+++ b/libs/vr/libvrflinger/surface_channel.h
@@ -3,7 +3,7 @@
#include <pdx/service.h>
#include <private/dvr/buffer_hub_client.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
namespace android {
namespace dvr {
diff --git a/libs/vr/libvrflinger/video_compositor.cpp b/libs/vr/libvrflinger/video_compositor.cpp
index c5a5b64..e42caaa 100644
--- a/libs/vr/libvrflinger/video_compositor.cpp
+++ b/libs/vr/libvrflinger/video_compositor.cpp
@@ -4,7 +4,7 @@
#include <GLES2/gl2ext.h>
#include <private/dvr/debug.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
namespace android {
namespace dvr {
diff --git a/libs/vr/libvrflinger/video_mesh_surface.cpp b/libs/vr/libvrflinger/video_mesh_surface.cpp
index ce0dfca..76dd94f 100644
--- a/libs/vr/libvrflinger/video_mesh_surface.cpp
+++ b/libs/vr/libvrflinger/video_mesh_surface.cpp
@@ -1,7 +1,7 @@
#include "video_mesh_surface.h"
#include <private/dvr/buffer_hub_queue_core.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
using android::pdx::LocalChannelHandle;
using android::pdx::rpc::DispatchRemoteMethod;
diff --git a/libs/vr/libvrflinger/vsync_service.cpp b/libs/vr/libvrflinger/vsync_service.cpp
index 612b9b2..cda815c 100644
--- a/libs/vr/libvrflinger/vsync_service.cpp
+++ b/libs/vr/libvrflinger/vsync_service.cpp
@@ -9,7 +9,7 @@
#include <pdx/default_transport/service_endpoint.h>
#include <private/dvr/clock_ns.h>
-#include <private/dvr/display_rpc.h>
+#include <private/dvr/display_protocol.h>
#include <private/dvr/display_types.h>
using android::pdx::Channel;