mirror of
https://github.com/nestriness/nestri.git
synced 2026-09-27 04:52:25 +03:00
fix(nescapture): put the masks in the DMA-BUF import failure
"No suitable memory type for DMA-BUF import" names neither mask, so it cannot tell a driver that refused the descriptor outright (fd_type_bits=0) from one whose memory types simply do not overlap the image's — which are different bugs in different components. The three numbers were already computed for a debug! two lines above, and a debug line only fires at a level nobody runs in the field; this one did not print at all while a neighbouring crate's did. Now the failure carries image_type_bits, fd_type_bits, their intersection, and the size, format, modifier and stride it was importing. On a virtualised NVIDIA node this turned three unknowns into one measurement and pointed straight at the kernel side.
This commit is contained in:
@@ -199,7 +199,24 @@ impl DmaBufImporter {
|
||||
let memory_type_index = self
|
||||
.context
|
||||
.find_memory_type(memory_type_bits, vk::MemoryPropertyFlags::empty())
|
||||
.ok_or_else(|| anyhow::anyhow!("No suitable memory type for DMA-BUF import"))?;
|
||||
.ok_or_else(|| {
|
||||
// The numbers, in the error rather than in the debug! above
|
||||
// it: fd_type_bits=0 means the driver could not resolve the
|
||||
// descriptor at all, which is a different fault from a
|
||||
// mismatch, and the difference is the whole diagnosis.
|
||||
anyhow::anyhow!(
|
||||
"No suitable memory type for DMA-BUF import: \
|
||||
image_type_bits={:#x} & fd_type_bits={:#x} = {:#x}, \
|
||||
size={}, format={:?}, modifier={:#x}, stride={}",
|
||||
mem_requirements.memory_type_bits,
|
||||
memory_fd_properties.memory_type_bits,
|
||||
memory_type_bits,
|
||||
mem_requirements.size,
|
||||
format,
|
||||
planes[0].modifier,
|
||||
planes[0].stride
|
||||
)
|
||||
})?;
|
||||
|
||||
// Dedicated allocation (required by many drivers for external memory).
|
||||
let mut dedicated_alloc_info = vk::MemoryDedicatedAllocateInfo::default().image(image);
|
||||
|
||||
Reference in New Issue
Block a user