diff --git a/src/gfx_api.rs b/src/gfx_api.rs index d68b88da..e442d4a0 100644 --- a/src/gfx_api.rs +++ b/src/gfx_api.rs @@ -795,6 +795,10 @@ pub trait GfxContext: Debug { fn supports_color_management(&self) -> bool { false } + + fn supports_invalid_modifier(&self) -> bool { + false + } } #[derive(Clone, Debug)] diff --git a/src/gfx_apis/gl/renderer/context.rs b/src/gfx_apis/gl/renderer/context.rs index cd824c05..46539731 100644 --- a/src/gfx_apis/gl/renderer/context.rs +++ b/src/gfx_apis/gl/renderer/context.rs @@ -347,4 +347,8 @@ impl GfxContext for GlRenderContext { ) -> Result, GfxError> { Err(GfxError(Box::new(RenderError::NoBlendBuffer))) } + + fn supports_invalid_modifier(&self) -> bool { + true + } } diff --git a/src/ifs/wl_drm.rs b/src/ifs/wl_drm.rs index 9249bbf0..580d1ef0 100644 --- a/src/ifs/wl_drm.rs +++ b/src/ifs/wl_drm.rs @@ -6,6 +6,7 @@ use { ifs::wl_buffer::WlBuffer, leaks::Tracker, object::{Object, Version}, + state::State, video::{ INVALID_MODIFIER, dmabuf::{DmaBuf, DmaBufPlane, PlaneVec}, @@ -62,6 +63,13 @@ impl Global for WlDrmGlobal { fn version(&self) -> u32 { 2 } + + fn exposed(&self, state: &State) -> bool { + let Some(ctx) = state.render_ctx.get() else { + return false; + }; + ctx.supports_invalid_modifier() + } } simple_add_global!(WlDrmGlobal);