kms: Do not attempt to import dmabuf on device not supporting format
Previously, if `expected_node` couldn't import a buffer, it would print an error, then try the next node. There shouldn't really be a reason to attempt import if the format/modifier isn't in `dmabuf_texture_formats`. It seems the issue I've been seeing with cosmic-workspaces crashing the Nvidia driver is fixed by removing this, and disabling `dma_shadow_copy` (which was producing the same error). Importing Nvidia buffers on the AMD GPU seems to be causing issues. Not sure how `dma_shadow_copy` should be fixed, but a test for supported formats is easy to add here anyway.
This commit is contained in:
parent
db0b5108ad
commit
1844afde09
1 changed files with 12 additions and 0 deletions
|
|
@ -16,6 +16,7 @@ use smithay::{
|
||||||
allocator::{
|
allocator::{
|
||||||
dmabuf::Dmabuf,
|
dmabuf::Dmabuf,
|
||||||
gbm::{GbmAllocator, GbmBufferFlags},
|
gbm::{GbmAllocator, GbmBufferFlags},
|
||||||
|
Buffer,
|
||||||
},
|
},
|
||||||
drm::{output::DrmOutputRenderElements, DrmDeviceFd, DrmNode, NodeType},
|
drm::{output::DrmOutputRenderElements, DrmDeviceFd, DrmNode, NodeType},
|
||||||
egl::{context::ContextPriority, EGLContext, EGLDevice, EGLDisplay},
|
egl::{context::ContextPriority, EGLContext, EGLDevice, EGLDisplay},
|
||||||
|
|
@ -456,6 +457,17 @@ impl KmsState {
|
||||||
&_egl.as_ref().unwrap().display
|
&_egl.as_ref().unwrap().display
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if !egl_display
|
||||||
|
.dmabuf_texture_formats()
|
||||||
|
.contains(&dmabuf.format())
|
||||||
|
{
|
||||||
|
trace!(
|
||||||
|
"Skipping import of dmabuf on {:?}: unsupported format",
|
||||||
|
device.render_node
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
let result = egl_display
|
let result = egl_display
|
||||||
.create_image_from_dmabuf(&dmabuf)
|
.create_image_from_dmabuf(&dmabuf)
|
||||||
.map(|image| {
|
.map(|image| {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue