btw the reason drmcon didn't move is that David Herrmann moved on from
hacking on graphics stuff, and no one needs it. There's nothing
fundamentally wrong with his patches for a basic emergency console on
plain drm, or the simpledrm driver to get a basic drm framebuffer up
on vesafb/efifb and friends. Just wanted to bring this in since you
sound like you're expecting this to magically have happened somehow.
We don't merge code without real use-cases.
-Daniel


On Tue, Dec 19, 2017 at 4:41 PM, Max Staudt <msta...@suse.de> wrote:
> On 12/19/2017 02:57 PM, Daniel Vetter wrote:
>> Where do drivers deal with struct file deep down?
>
> As an example, I remembered this to be the case in nouveau's code for 
> allocating a framebuffer. So I checked, and it's much better now.
>
> So I was mistaken about this - sorry.
>
> Thanks a lot for cleaning up this part of DRM, I'm looking forward to a nicer 
> future! Hopefully we can get unify the FB emulation in a single place at some 
> point, but that's just my dreams and is going off-topic, so I'll stop here.
>
>
>> The problem is that defio is totally not how a real driver works.
>
> But they do exist and I can't ignore them.
>
> I'm afraid I don't understand - why are those, such as xenfb, not real 
> drivers?
>
>
>> So
>> preferrably bootsplash would use kms directly, and use the explict dirtyfb
>> callback.
>
> Sure, if I'd be hooking into drmcon, that would be great.
>
> But drmcon doesn't exist yet, so it doesn't get us further to talk about a 
> bootsplash on KMS :(
>
> I'm hooking into the in-kernel terminal emulator, because the bootsplash is a 
> functional extension of that. It just happens that fbcon sits on top of FB, 
> so I work with what I get.
>
> And the console in turn happens to work on all FB and KMS drivers, so it 
> makes users of all kinds of drivers happy. In fact, that's why the FB 
> emulation in KMS drivers came to be in the first place, if I remember right - 
> to ensure fbcon continues to work.
>
> Thus, once drmcon exists and becomes dominant over fbcon, moving the 
> bootsplash to it makes sense. On the other hand, hooking into a raw video 
> subsystem doesn't make sense as far as I can see, so a bootsplash on top of 
> raw KMS is just as meaningless as a bootsplash on top of raw FB. So I have no 
> choice but to work on top of fbcon, and thus use the FB subsystem.
>
>
>> But if you insist on using fbdev, then I think the beast course
>> here is to wire up a new fb_ops->flush callback.
>
> Okay, makes sense. Thanks!
>
>
>> Note that you only need to type the 1 trivial implementation for the drm
>> fbdev emulation, as long as the callback is optional. Trying to make defio
>> work correctly, as fbdev assumes it should work, in all cases, on top of
>> drm is imo an entirely pointless endeavour.
>
> I'll look into it.
>
>
>> Yes, so lets ignore defio and do the flushing correctly, at least for kms
>> drivers.
>
> I agree.
>
> In fact, if I define fbops->flush(), defio drivers can still add their own 
> proper flushing function, so everybody wins. I like that, see below.
>
>
>>>>> What shall I do?
>>>>>
>>>>> Shall I add a new FB op for flushing when writing to the raw memory from 
>>>>> the kernel?
>>>>> As far as I can see, it would be needed for defio drivers only, is that 
>>>>> correct?
>>>>
>>>> Yes, which are kinda horrible anyway. I guess you could at least not do
>>>> all these hacks if it's not a defio driver.
>>>
>>> Again, I don't understand.
>>>
>>> In my patch (see below), I explicitly check for info->fbdefio, as well
>>> as three known broken drmfb emulations. I don't do the copy hack on any
>>> other device.
>>
>> Yeah, and if we'd to the explicit flush, you wouldn't even need to check
>> for that. So
>>
>> if (fbops->flush)
>>       fbops->flush(); /* this covers all drm drivers */
>> else if (fb->defio)
>>       copyarea hack, if you really still need to support some defio
>>       fbdev drivers, but really I think that's questionable
>
> I need to support xenfb, thus I might as well support all defio drivers.
>
> Also, I like that your suggestion allows for affected drivers to implement 
> their own, more efficient fbops->flush() directly, while ensuring that those 
> that don't still have a fallback, so there is some performance to be gained.
>
> I'll look into implementing this.
>
>
>> else
>>       ; /* nothing */
>>
>>> So, what shall I do? As it is, the hack is already specific to devices that 
>>> really, really need it.
>>>
>>> Would you like me to extend the FB API or not?
>>
>> Yes. Well for real I'd like you to do kms, so maybe you need to explain
>> why exactly you absolutely have to use fbdev (aka which driver isn't
>> supported by drm that you want to enable this on).
>
> See Oliver's reply - we have plenty of fb-only systems deployed in the real 
> world. Think Xen. Think AArch64 with efifb. Think any system before the KMS 
> driver is loaded (which is a case that the splash is supposed to handle).
>
> Also, where would I hook into KMS, were I to implement it on top of KMS right 
> now? I'm not working on top of FB per se, but on top of fbcon. So in a KMS 
> world I wouldn't work on KMS itself, but on top of... drmcon, which doesn't 
> exist.
>
>
>
> Max
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to