blob: 9f97afed2379b8c5ccc31bd6557612db2101d4c2 [file] [log] [blame] [edit]
// Copyright 2025 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/graphics/display/drivers/coordinator/fidl-conversion.h"
#include <fidl/fuchsia.hardware.display.engine/cpp/wire.h>
#include <lib/fdf/cpp/arena.h>
#include "src/graphics/display/drivers/coordinator/driver-display-config.h"
#include "src/graphics/display/lib/api-types/cpp/color-conversion.h"
#include "src/graphics/display/lib/api-types/cpp/display-id.h"
#include "src/graphics/display/lib/api-types/cpp/driver-layer.h"
#include "src/graphics/display/lib/api-types/cpp/mode-id.h"
namespace display_coordinator {
fuchsia_hardware_display_engine::wire::DisplayConfig ToFidlDisplayConfig(
const DriverDisplayConfig& driver_display_config, std::span<const display::DriverLayer> layers,
fdf::Arena& arena) {
ZX_DEBUG_ASSERT(static_cast<size_t>(driver_display_config.layer_count) == layers.size());
fidl::VectorView<fuchsia_hardware_display_engine::wire::Layer> fidl_layers(arena, layers.size());
for (size_t i = 0; i < layers.size(); ++i) {
fidl_layers[i] = layers[i].ToFidl();
}
return fuchsia_hardware_display_engine::wire::DisplayConfig{
.display_id = driver_display_config.display_id.ToFidl(),
.mode_id = driver_display_config.mode_id.ToFidl(),
.color_conversion = driver_display_config.color_conversion.ToFidl(),
.layers = fidl_layers,
};
}
} // namespace display_coordinator