Skip to content

Commit

Permalink
Merge remote-tracking branch 'u/nightly' into feat-combine
Browse files Browse the repository at this point in the history
  • Loading branch information
qiin2333 committed Mar 5, 2024
1 parent da8f97d commit 4378e57
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 18 deletions.
1 change: 1 addition & 0 deletions src/display_device/parsed_config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ namespace display_device {
bool
parse_resolution_option(const config::video_t &config, const rtsp_stream::launch_session_t &session, parsed_config_t &parsed_config) {
const auto resolution_option { static_cast<parsed_config_t::resolution_change_e>(config.resolution_change) };
BOOST_LOG(info) << "devices session unique_id: " << session.unique_id;
switch (resolution_option) {
case parsed_config_t::resolution_change_e::automatic: {
if (!session.enable_sops) {
Expand Down
1 change: 1 addition & 0 deletions src/nvhttp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -894,6 +894,7 @@ namespace nvhttp {
// the moment. This needs to be done before probing encoders as it could
// change display device's state.
const auto result { display_device::session_t::get().configure_display(config::video, *launch_session) };
BOOST_LOG(info) << "configure_display"sv << std::begin(map_id_sess)->second;
if (!result) {
tree.put("root.<xmlattr>.status_code", result.get_error_code());
tree.put("root.<xmlattr>.status_message", result.get_error_message());
Expand Down
43 changes: 26 additions & 17 deletions src/platform/linux/cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -247,29 +247,38 @@ namespace cuda {

// There's no way to directly go from CUDA to a DRM device, so we'll
// use sysfs to look up the DRM device name from the PCI ID.
char pci_bus_id[13];
CU_CHECK(cdf->cuDeviceGetPCIBusId(pci_bus_id, sizeof(pci_bus_id), device), "Couldn't get CUDA device PCI bus ID");
BOOST_LOG(debug) << "Found CUDA device with PCI bus ID: "sv << pci_bus_id;
std::array<char, 13> pci_bus_id;
CU_CHECK(cdf->cuDeviceGetPCIBusId(pci_bus_id.data(), pci_bus_id.size(), device), "Couldn't get CUDA device PCI bus ID");
BOOST_LOG(debug) << "Found CUDA device with PCI bus ID: "sv << pci_bus_id.data();

// Linux uses lowercase hexadecimal while CUDA uses uppercase
std::transform(pci_bus_id.begin(), pci_bus_id.end(), pci_bus_id.begin(),
[](char c) { return std::tolower(c); });

// Look for the name of the primary node in sysfs
char sysfs_path[PATH_MAX];
std::snprintf(sysfs_path, sizeof(sysfs_path), "/sys/bus/pci/devices/%s/drm", pci_bus_id);
fs::path sysfs_dir { sysfs_path };
for (auto &entry : fs::directory_iterator { sysfs_dir }) {
auto file = entry.path().filename();
auto filestring = file.generic_u8string();
if (std::string_view { filestring }.substr(0, 4) != "card"sv) {
continue;
}
try {
char sysfs_path[PATH_MAX];
std::snprintf(sysfs_path, sizeof(sysfs_path), "/sys/bus/pci/devices/%s/drm", pci_bus_id.data());
fs::path sysfs_dir { sysfs_path };
for (auto &entry : fs::directory_iterator { sysfs_dir }) {
auto file = entry.path().filename();
auto filestring = file.generic_u8string();
if (std::string_view { filestring }.substr(0, 4) != "card"sv) {
continue;
}

BOOST_LOG(debug) << "Found DRM primary node: "sv << filestring;
BOOST_LOG(debug) << "Found DRM primary node: "sv << filestring;

fs::path dri_path { "/dev/dri"sv };
auto device_path = dri_path / file;
return open(device_path.c_str(), O_RDWR);
fs::path dri_path { "/dev/dri"sv };
auto device_path = dri_path / file;
return open(device_path.c_str(), O_RDWR);
}
}
catch (const std::filesystem::filesystem_error &err) {
BOOST_LOG(error) << "Failed to read sysfs: "sv << err.what();
}

BOOST_LOG(error) << "Unable to find DRM device with PCI bus ID: "sv << pci_bus_id;
BOOST_LOG(error) << "Unable to find DRM device with PCI bus ID: "sv << pci_bus_id.data();
return -1;
}

Expand Down
9 changes: 8 additions & 1 deletion src_assets/common/assets/web/pin.html
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,16 @@ <h2 id="unpair" class="text-center me-auto">Unpair Clients</h2>
} else {
this.clients = [];
}

let tmpClients = [];
try {
tmpClients = JSON.parse(this.config.clients)
} catch (error) {
}

this.clients = this.clients.map(client => ({
...client,
...(this.config.clients?.find(({uuid}) => uuid = client.uuid))
...(tmpClients.find(({uuid}) => uuid = client.uuid))
}))
});
},
Expand Down

0 comments on commit 4378e57

Please sign in to comment.