[Mesa-dev] Remove classic drivers or fork src/mesa for gallium?

Dylan Baker dylan at pnwbakers.com
Wed Dec 4 16:43:07 UTC 2019


Quoting Jason Ekstrand (2019-12-03 20:45:33)
> On Tue, Dec 3, 2019 at 8:19 PM Dave Airlie <airlied at gmail.com> wrote:
> 
>     On Wed, 4 Dec 2019 at 10:39, Marek Olšák <maraeo at gmail.com> wrote:
>     >
>     > Hi,
>     >
>     > Here are 2 proposals to simplify and better optimize the GL->Gallium
>     translation.
>     >
>     > 1) Move classic drivers to a fork of Mesa, and remove them from master.
>     Classic drivers won't share any code with master. glvnd will load them, but
>     glvnd is not ready for this yet.
> 
> 
> I'm usually the first person to tell people to stop mucking about with old
> hardware and I fear even I think this would be a bit premature.  We've not
> turned iris on by default yet and I'd really like it to bake as the default
> distro driver for a while (maybe a year) before we put i965 on life-support. 
> If we were having this discussion in another year's time, I might be in favor
> of this but, as it currently stands, I'm not sure this is a good idea.
>  
> 
>     > 2) Keep classic drivers. Fork src/mesa for Gallium. I think only mesa/
>     main, mesa/vbo, mesa/program, and drivers/dri/common need to be forked and
>     mesa/state_tracker moved. src/gallium/state-trackers/gl/ can be the target
>     location.
> 
> 
> I really don't like this option.  For one thing, this means two copies of code
> that will get out-of-sync.  If we had the classic drivers in their own branch,
> we could at least cherry-pick bugfixes back to the classic branch.  However, if
> we have two copies of everything, our version control tool can't help us.
> 
> The bigger problem is headers.  Currently, the GLSL compiler includes mtypes.h
> so we would need to somehow separate the GLSL compiler out from src/mesa/main
> because we'll have two mtypes.h files.  Unfortunately, GLSL isn't the only
> thing that includes stuff from src/mesa/main.  Our header situation has been a
> disaster for years and I'm afraid it hasn't gotten any better with the addition
> of src/util.  Most people who move stuff don't actually do due diligence to
> keep the includes clean and the result is that I'm pretty sure even the Vulkan
> drivers are including src/mesa/main/imports.h.  If we have two copies of src/
> mesa/main and the headers begin to diverge, it's going to be a total disaster. 
> I would love to see someone clean this all up properly and I think Mesa would
> be better for it.  However, it is a LOT of work.

I have an MR that's been sitting on the list for over a year that remove
imports.h completely. I can rebase that today.

> 
> If we did the above cleaning, would I be ok with this approach?  Possibly. 
> However, I suspect it'd end up being the worst of both worlds.  We still have
> maintenance of effectively two branches and bugfixes have to be ported.  At the
> same time, we'd still have core changes to things like the GLSL compiler
> breaking old drivers so we wouldn't lighten any of the maintenance burden.
>  
> 
>     > Option 2 is more acceptable to people who want to keep classic drivers in
>     the tree and it can be done right now.
> 
>     These both seem pretty horrible to me right now. Like i965 still
>     supports a lot of hardware that exists right now even if we move to
>     iris.
> 
> 
> I'm less concerned about the support burden.  When it comes to bugfixes, I feel
> like most of the bugs on gen7 and earlier hardware at this point are due to
> churn in the core and if it lives in a maintenance branch, we'll stop breaking
> it.  The biggest thing we'd loose would be additional features that we might
> get thanks to core changes.  The major ones that come to mind are:
> 
>  - GL_ARB_gl_spirv (It could be enabled on gen7 in theory but we haven't due to
> a lack of testing)
>  - GL_EXT_direct_state_access (still underway last I knew)
>  - GL_EXT_gpu_shader4
>  - Compat context support
> 
> All four of those are more-or-less software-only features that older intel
> drivers could pick up as the core advances.  Compat support likely requires a
> bit of driver work but it should be doable.
> 
> The real question is, "How much do we care?"  I can't say I like the idea of
> leaving Gen4-7 out in the cold.  Again, in a year's time, we might have most of
> the above implemented and then it'd be less of a concern.
>  
> 
>     I sorta feel there should be a
>     3) make life harder for classic drivers and optimise things more for
>     gallium add more dd.h entrypoints, force the classic drivers to jump
>     through hoops to degallium.
> 
> 
> I'd be interested to see what that would look like.  I'm not actually convinced
> that it would work if I'm honest.  Part of gluing them together in my mind is
> deleting dd.h entirely and making the GL state tracker just call gallium stuff.
> 
> There may be a 4th option here: Write a gallium driver for Intel Gen4-7. 
> Unfortunately, it would be a really hard sell to convince anyone (myself
> included) that this is worth anyone's time.  Sure, it might be a fun project,
> but the engineering effort required to get it to be as good as i965 is very
> non-trivial.  I think it's tractable and someone who knows what they're doing
> would probably be able to get something working in less than a year if they
> steal heavily from i965 and iris.  However, getting it to the point where
> performance is no worse may take longer.  While it'd probably be a fun project
> for someone, I can't in good conscience say that the mesa/main refactoring
> possibilities are enough to justify the effort.
> 
> I'm not saying that's a good option. :-)  I just thought we should enumerate it
> so that it can be shot down.
> 
> --Jason
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20191204/4ad61544/attachment.sig>


More information about the mesa-dev mailing list