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

Commit 8ce5306e authored by Corey Tabaka's avatar Corey Tabaka Committed by android-build-merger
Browse files

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

am: 6c7f1196

Change-Id: I7d08e724cfebcb70e5d5ca23b576d2a878b604e3
parents 7eb30bde 6c7f1196
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