Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c7f1196 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Move global buffer ops to VR display service." into oc-dr1-dev

parents b52ddcb2 99c2d735
Loading
Loading
Loading
Loading
+38 −4
Original line number Diff line number Diff line
@@ -104,10 +104,8 @@ Status<void> Surface::SetAttributes(const SurfaceAttributes& attributes) {
  return {};
}

Status<std::unique_ptr<ProducerQueue>> Surface::CreateQueue(uint32_t width,
                                                            uint32_t height,
                                                            uint32_t format,
                                                            size_t metadata_size) {
Status<std::unique_ptr<ProducerQueue>> Surface::CreateQueue(
    uint32_t width, uint32_t height, uint32_t format, size_t metadata_size) {
  ALOGD_IF(TRACE, "Surface::CreateQueue: Creating empty queue.");
  auto status = InvokeRemoteMethod<DisplayProtocol::CreateQueue>(
      ProducerQueueConfigBuilder()
@@ -190,6 +188,42 @@ Status<std::unique_ptr<Surface>> DisplayClient::CreateSurface(
    return ErrorStatus(error);
}

pdx::Status<std::unique_ptr<IonBuffer>> DisplayClient::SetupGlobalBuffer(
    DvrGlobalBufferKey key, size_t size, uint64_t usage) {
  auto status =
      InvokeRemoteMethod<DisplayProtocol::SetupGlobalBuffer>(key, size, usage);
  if (!status) {
    ALOGE(
        "DisplayClient::SetupGlobalBuffer: Failed to create the global buffer "
        "%s",
        status.GetErrorMessage().c_str());
    return status.error_status();
  }

  auto ion_buffer = std::make_unique<IonBuffer>();
  auto native_buffer_handle = status.take();
  const int ret = native_buffer_handle.Import(ion_buffer.get());
  if (ret < 0) {
    ALOGE(
        "DisplayClient::GetGlobalBuffer: Failed to import global buffer: "
        "key=%d; error=%s",
        key, strerror(-ret));
    return ErrorStatus(-ret);
  }

  return {std::move(ion_buffer)};
}

pdx::Status<void> DisplayClient::DeleteGlobalBuffer(DvrGlobalBufferKey key) {
  auto status = InvokeRemoteMethod<DisplayProtocol::DeleteGlobalBuffer>(key);
  if (!status) {
    ALOGE("DisplayClient::DeleteGlobalBuffer Failed: %s",
          status.GetErrorMessage().c_str());
  }

  return status;
}

Status<std::unique_ptr<IonBuffer>> DisplayClient::GetGlobalBuffer(
    DvrGlobalBufferKey key) {
  auto status = InvokeRemoteMethod<DisplayProtocol::GetGlobalBuffer>(key);
+0 −38
Original line number Diff line number Diff line
@@ -32,44 +32,6 @@ DisplayManagerClient::GetSurfaceState() {
  return status;
}

pdx::Status<std::unique_ptr<IonBuffer>> DisplayManagerClient::SetupGlobalBuffer(
    DvrGlobalBufferKey key, size_t size, uint64_t usage) {
  auto status = InvokeRemoteMethod<DisplayManagerProtocol::SetupGlobalBuffer>(
      key, size, usage);
  if (!status) {
    ALOGE(
        "DisplayManagerClient::SetupGlobalBuffer: Failed to create the global "
        "buffer %s",
        status.GetErrorMessage().c_str());
    return status.error_status();
  }

  auto ion_buffer = std::make_unique<IonBuffer>();
  auto native_buffer_handle = status.take();
  const int ret = native_buffer_handle.Import(ion_buffer.get());
  if (ret < 0) {
    ALOGE(
        "DisplayManagerClient::GetGlobalBuffer: Failed to import global "
        "buffer: key=%d; error=%s",
        key, strerror(-ret));
    return ErrorStatus(-ret);
  }

  return {std::move(ion_buffer)};
}

pdx::Status<void> DisplayManagerClient::DeleteGlobalBuffer(
    DvrGlobalBufferKey key) {
  auto status =
      InvokeRemoteMethod<DisplayManagerProtocol::DeleteGlobalBuffer>(key);
  if (!status) {
    ALOGE("DisplayManagerClient::DeleteGlobalBuffer Failed: %s",
          status.GetErrorMessage().c_str());
  }

  return status;
}

pdx::Status<std::unique_ptr<ConsumerQueue>>
DisplayManagerClient::GetSurfaceQueue(int surface_id, int queue_id) {
  auto status = InvokeRemoteMethod<DisplayManagerProtocol::GetSurfaceQueue>(
+3 −0
Original line number Diff line number Diff line
@@ -73,6 +73,9 @@ class DisplayClient : public pdx::ClientBase<DisplayClient> {
 public:
  pdx::Status<Metrics> GetDisplayMetrics();
  pdx::Status<std::string> GetConfigurationData(ConfigFileType config_type);
  pdx::Status<std::unique_ptr<IonBuffer>> SetupGlobalBuffer(
      DvrGlobalBufferKey key, size_t size, uint64_t usage);
  pdx::Status<void> DeleteGlobalBuffer(DvrGlobalBufferKey key);
  pdx::Status<std::unique_ptr<IonBuffer>> GetGlobalBuffer(
      DvrGlobalBufferKey key);
  pdx::Status<std::unique_ptr<Surface>> CreateSurface(
+0 −3
Original line number Diff line number Diff line
@@ -21,9 +21,6 @@ class DisplayManagerClient : public pdx::ClientBase<DisplayManagerClient> {
  ~DisplayManagerClient() override;

  pdx::Status<std::vector<SurfaceState>> GetSurfaceState();
  pdx::Status<std::unique_ptr<IonBuffer>> SetupGlobalBuffer(
      DvrGlobalBufferKey key, size_t size, uint64_t usage);
  pdx::Status<void> DeleteGlobalBuffer(DvrGlobalBufferKey key);
  pdx::Status<std::unique_ptr<ConsumerQueue>> GetSurfaceQueue(int surface_id,
                                                              int queue_id);

+7 −7
Original line number Diff line number Diff line
@@ -200,6 +200,8 @@ struct DisplayProtocol {
  enum {
    kOpGetMetrics = 0,
    kOpGetConfigurationData,
    kOpSetupGlobalBuffer,
    kOpDeleteGlobalBuffer,
    kOpGetGlobalBuffer,
    kOpIsVrAppRunning,
    kOpCreateSurface,
@@ -216,6 +218,11 @@ struct DisplayProtocol {
  PDX_REMOTE_METHOD(GetMetrics, kOpGetMetrics, Metrics(Void));
  PDX_REMOTE_METHOD(GetConfigurationData, kOpGetConfigurationData,
                    std::string(ConfigFileType config_type));
  PDX_REMOTE_METHOD(SetupGlobalBuffer, kOpSetupGlobalBuffer,
                    LocalNativeBufferHandle(DvrGlobalBufferKey key, size_t size,
                                            uint64_t usage));
  PDX_REMOTE_METHOD(DeleteGlobalBuffer, kOpDeleteGlobalBuffer,
                    void(DvrGlobalBufferKey key));
  PDX_REMOTE_METHOD(GetGlobalBuffer, kOpGetGlobalBuffer,
                    LocalNativeBufferHandle(DvrGlobalBufferKey key));
  PDX_REMOTE_METHOD(IsVrAppRunning, kOpIsVrAppRunning, bool(Void));
@@ -237,8 +244,6 @@ struct DisplayManagerProtocol {
  enum {
    kOpGetSurfaceState = 0,
    kOpGetSurfaceQueue,
    kOpSetupGlobalBuffer,
    kOpDeleteGlobalBuffer,
  };

  // Aliases.
@@ -250,11 +255,6 @@ struct DisplayManagerProtocol {
                    std::vector<SurfaceState>(Void));
  PDX_REMOTE_METHOD(GetSurfaceQueue, kOpGetSurfaceQueue,
                    LocalChannelHandle(int surface_id, int queue_id));
  PDX_REMOTE_METHOD(SetupGlobalBuffer, kOpSetupGlobalBuffer,
                    LocalNativeBufferHandle(DvrGlobalBufferKey key, size_t size,
                                            uint64_t usage));
  PDX_REMOTE_METHOD(DeleteGlobalBuffer, kOpDeleteGlobalBuffer,
                    void(DvrGlobalBufferKey key));
};

struct VSyncSchedInfo {
Loading