mirror of
https://github.com/slendidev/lunar.git
synced 2026-01-30 16:28:58 +02:00
@@ -939,19 +939,35 @@ auto VulkanRenderer::setup_kms_surface() -> void
|
|||||||
throw std::runtime_error("App init fail");
|
throw std::runtime_error("App init fail");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_logger.info("Found {} Vulkan physical device(s)", devices.size());
|
||||||
|
|
||||||
for (auto const &device : devices) {
|
for (auto const &device : devices) {
|
||||||
|
auto const props = device.getProperties();
|
||||||
|
m_logger.info("Checking device: {}", std::string(props.deviceName));
|
||||||
|
|
||||||
auto const displays = device.getDisplayPropertiesKHR();
|
auto const displays = device.getDisplayPropertiesKHR();
|
||||||
if (displays.empty()) {
|
if (displays.empty()) {
|
||||||
|
m_logger.info(" Device has no display properties");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_logger.info(" Device has {} display(s)", displays.size());
|
||||||
|
|
||||||
for (auto const &display_props : displays) {
|
for (auto const &display_props : displays) {
|
||||||
|
m_logger.info(" Checking display: {}",
|
||||||
|
display_props.displayName
|
||||||
|
? std::string(display_props.displayName)
|
||||||
|
: "(unnamed)");
|
||||||
|
|
||||||
auto const modes
|
auto const modes
|
||||||
= device.getDisplayModePropertiesKHR(display_props.display);
|
= device.getDisplayModePropertiesKHR(display_props.display);
|
||||||
if (modes.empty()) {
|
if (modes.empty()) {
|
||||||
|
m_logger.info(" Display has no modes");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_logger.info(" Display has {} mode(s)", modes.size());
|
||||||
|
|
||||||
auto const best_mode_it = std::max_element(modes.begin(),
|
auto const best_mode_it = std::max_element(modes.begin(),
|
||||||
modes.end(), [](auto const &lhs, auto const &rhs) {
|
modes.end(), [](auto const &lhs, auto const &rhs) {
|
||||||
auto const lhs_extent = lhs.parameters.visibleRegion;
|
auto const lhs_extent = lhs.parameters.visibleRegion;
|
||||||
@@ -984,9 +1000,15 @@ auto VulkanRenderer::setup_kms_surface() -> void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!plane_index) {
|
if (!plane_index) {
|
||||||
|
m_logger.info(" No display plane supports this display ({} "
|
||||||
|
"plane(s) checked)",
|
||||||
|
planes.size());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_logger.info(
|
||||||
|
" Found suitable display on plane {}", *plane_index);
|
||||||
|
|
||||||
auto const extent = best_mode_it->parameters.visibleRegion;
|
auto const extent = best_mode_it->parameters.visibleRegion;
|
||||||
KmsState state {};
|
KmsState state {};
|
||||||
state.display = display_props.display;
|
state.display = display_props.display;
|
||||||
|
|||||||
Reference in New Issue
Block a user