Hi Gary,

> On 21 Jan 2026, at 14:31, Gary Guo <[email protected]> wrote:
> 
> On Mon Jan 19, 2026 at 11:34 PM GMT, Daniel Almeida wrote:
>> Add initial support for drm driver features via the DriverFeatures trait.
>> This trait is unsafe, requiring the implementer to comply with the safety
>> requirements of each feature individually if the feature is enabled.
> 
> I think such unsafe requirement is quite vague and also very non-local.
> 
> Maybe we can use a single trait (the `ModesetOps` that you described) to do
> this:
> 
> Something like:
> 
>    pub unsafe trait ModesetOps<D> { ... }
> 
>    // Maybe the never type in the future...
>    pub enum NoFeature {}
> 
>    impl<D> ModesetOps<D> for NoFeature {
>        fn foo(&self, ...) { unimplemented!() }
>    }
> 
>    impl Driver {
>        /// Reference the modeset implementation (typically Self),
>        /// or `NoFeature` to indicate that the feature is not implemented.
>        type Modeset: ModesetOps<Self>;

Yeah, this looks better indeed. I assume we can have multiple features by
having multiple traits, right?

>    }
> 
> When building, you can use `TypeId` to check if it's actually implemented, and
> set bits in the feature flags automatically.
> 
> Best,
> Gary

I assume we would enable FeatureFoo if typeid(Foo) != typeid(NoFeatureFoo)?

Where Foo is “type Foo: FooOps” in the Driver trait.


Reply via email to