Use modifiers from image-copy dmabuf_format, ignoring feedback
Default feedback only include primary GPU, so the previous version of this prevents the use of explicit modifiers from the non-default GPU. https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/268 or something similar will hopefully improve this at some point... But we can presumably assume `dmabuf_format` will only include formats valid to create a dmabuf `wl_buffer` from.
This commit is contained in:
parent
509e572e8e
commit
8a9b9ea614
1 changed files with 4 additions and 11 deletions
|
|
@ -84,22 +84,15 @@ impl AppData {
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
};
|
};
|
||||||
let drm_dev = drm_dev.unwrap_or(feedback.main_device() as u64);
|
let drm_dev = drm_dev.unwrap_or(feedback.main_device() as u64);
|
||||||
let Some((_, gbm)) = self.gbm_devices.gbm_device(drm_dev)? else {
|
let Some((dev_path, gbm)) = self.gbm_devices.gbm_device(drm_dev)? else {
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
};
|
};
|
||||||
let formats = feedback.format_table();
|
let formats = feedback.format_table();
|
||||||
|
|
||||||
let modifiers = feedback
|
let modifiers = modifiers
|
||||||
.tranches()
|
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|x| &x.formats)
|
.map(|modifier| gbm::Modifier::from(*modifier))
|
||||||
.filter_map(|x| formats.get(*x as usize))
|
.filter(|modifier| !needs_linear || *modifier == gbm::Modifier::Linear)
|
||||||
.filter(|x| {
|
|
||||||
x.format == format
|
|
||||||
&& (!needs_linear || x.modifier == u64::from(gbm::Modifier::Linear))
|
|
||||||
})
|
|
||||||
.map(|x| gbm::Modifier::from(x.modifier))
|
|
||||||
.filter(|x| modifiers.contains(&u64::from(*x)))
|
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
if modifiers.is_empty() {
|
if modifiers.is_empty() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue