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

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

Merge "Add ability to pass device metrics to GVR"

parents e36fba13 010fe955
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -58,6 +58,20 @@ pdx::Status<std::unique_ptr<IonBuffer>> DisplayManagerClient::SetupNamedBuffer(
  return {std::move(ion_buffer)};
}

pdx::Status<std::string> DisplayManagerClient::GetConfigurationData(
    ConfigFileType config_type) {
  auto status =
      InvokeRemoteMethod<DisplayManagerProtocol::GetConfigurationData>(
          config_type);
  if (!status && status.error() != ENOENT) {
    ALOGE(
        "DisplayManagerClient::GetConfigurationData: Unable to get "
        "configuration data. Error: %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>(
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ class DisplayManagerClient : public pdx::ClientBase<DisplayManagerClient> {
  pdx::Status<std::unique_ptr<ConsumerQueue>> GetSurfaceQueue(int surface_id,
                                                              int queue_id);

  pdx::Status<std::string> GetConfigurationData(ConfigFileType config_type);
  using Client::event_fd;

  pdx::Status<int> GetEventMask(int events) {
+10 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@

#include <dvr/dvr_display_types.h>

#include <pdx/rpc/buffer_wrapper.h>
#include <pdx/rpc/remote_method.h>
#include <pdx/rpc/serializable.h>
#include <pdx/rpc/variant.h>
@@ -217,6 +218,12 @@ struct DisplayProtocol {
                    void(const SurfaceAttributes& attributes));
};

enum class ConfigFileType : uint32_t {
  kLensMetrics,
  kDeviceMetrics,
  kDeviceConfiguration
};

struct DisplayManagerProtocol {
  // Service path.
  static constexpr char kClientPath[] = "system/vr/display/manager";
@@ -226,6 +233,7 @@ struct DisplayManagerProtocol {
    kOpGetSurfaceState = 0,
    kOpGetSurfaceQueue,
    kOpSetupNamedBuffer,
    kOpGetConfigurationData,
  };

  // Aliases.
@@ -240,6 +248,8 @@ struct DisplayManagerProtocol {
  PDX_REMOTE_METHOD(SetupNamedBuffer, kOpSetupNamedBuffer,
                    LocalNativeBufferHandle(const std::string& name,
                                            size_t size, uint64_t usage));
  PDX_REMOTE_METHOD(GetConfigurationData, kOpGetConfigurationData,
                    std::string(ConfigFileType config_type));
};

struct VSyncSchedInfo {
+25 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@

using android::AHardwareBuffer_convertToGrallocUsageBits;
using android::dvr::BufferConsumer;
using android::dvr::display::ConfigFileType;
using android::dvr::display::DisplayManagerClient;
using android::dvr::display::SurfaceAttributes;
using android::dvr::display::SurfaceAttribute;
@@ -131,6 +132,30 @@ int dvrDisplayManagerSetupNamedBuffer(DvrDisplayManager* client,
  return 0;
}

int dvrConfigurationDataGet(DvrDisplayManager* client, int config_type,
                            uint8_t** data, size_t* data_size) {
  if (!client || !data || !data_size) {
    return -EINVAL;
  }

  ConfigFileType config_file_type = static_cast<ConfigFileType>(config_type);
  auto config_data_status =
      client->client->GetConfigurationData(config_file_type);

  if (!config_data_status) {
    return -config_data_status.error();
  }

  *data_size = config_data_status.get().size();
  *data = new uint8_t[*data_size];
  std::copy_n(config_data_status.get().begin(), *data_size, *data);
  return 0;
}

void dvrConfigurationDataDestroy(DvrDisplayManager*, uint8_t* data) {
  delete[] data;
}

int dvrDisplayManagerGetEventFd(DvrDisplayManager* client) {
  if (!client)
    return -EINVAL;
+5 −0
Original line number Diff line number Diff line
@@ -54,6 +54,11 @@ typedef int (*DvrDisplayManagerGetSurfaceStatePtr)(
typedef int (*DvrDisplayManagerGetReadBufferQueuePtr)(
    DvrDisplayManager* client, int surface_id, int queue_id,
    DvrReadBufferQueue** queue_out);
typedef int (*DvrConfigurationDataGetPtr)(DvrDisplayManager* client,
                                          int config_type, uint8_t** data,
                                          size_t* data_size);
typedef void (*DvrConfigurationDataDestroyPtr)(DvrDisplayManager* client,
                                               uint8_t* data);
typedef int (*DvrSurfaceStateCreatePtr)(DvrSurfaceState** surface_state);
typedef void (*DvrSurfaceStateDestroyPtr)(DvrSurfaceState* surface_state);
typedef int (*DvrSurfaceStateGetSurfaceCountPtr)(DvrSurfaceState* surface_state,
Loading