Re: [Mesa-dev] [PATCH 0/6] dma-buf: Add an API for exporting sync files (v12)

2021-06-15 Thread Christian König

Hi Jason & Daniel,

maybe I should explain once more where the problem with this approach is 
and why I think we need to get that fixed before we can do something 
like this here.


To summarize what this patch here does is that it copies the exclusive 
fence and/or the shared fences into a sync_file. This alone is totally 
unproblematic.


The problem is what this implies. When you need to copy the exclusive 
fence to a sync_file then this means that the driver is at some point 
ignoring the exclusive fence on a buffer object.


When you combine that with complex drivers which use TTM and buffer 
moves underneath you can construct an information leak using this and 
give userspace access to memory which is allocated to the driver, but 
not yet initialized.


This way you can leak things like page tables, passwords, kernel data 
etc... in large amounts to userspace and is an absolutely no-go for 
security.


That's why I'm said we need to get this fixed before we upstream this 
patch set here and especially the driver change which is using that.


Regards,
Christian.

Am 10.06.21 um 23:09 schrieb Jason Ekstrand:

Modern userspace APIs like Vulkan are built on an explicit
synchronization model.  This doesn't always play nicely with the
implicit synchronization used in the kernel and assumed by X11 and
Wayland.  The client -> compositor half of the synchronization isn't too
bad, at least on intel, because we can control whether or not i915
synchronizes on the buffer and whether or not it's considered written.

The harder part is the compositor -> client synchronization when we get
the buffer back from the compositor.  We're required to be able to
provide the client with a VkSemaphore and VkFence representing the point
in time where the window system (compositor and/or display) finished
using the buffer.  With current APIs, it's very hard to do this in such
a way that we don't get confused by the Vulkan driver's access of the
buffer.  In particular, once we tell the kernel that we're rendering to
the buffer again, any CPU waits on the buffer or GPU dependencies will
wait on some of the client rendering and not just the compositor.

This new IOCTL solves this problem by allowing us to get a snapshot of
the implicit synchronization state of a given dma-buf in the form of a
sync file.  It's effectively the same as a poll() or I915_GEM_WAIT only,
instead of CPU waiting directly, it encapsulates the wait operation, at
the current moment in time, in a sync_file so we can check/wait on it
later.  As long as the Vulkan driver does the sync_file export from the
dma-buf before we re-introduce it for rendering, it will only contain
fences from the compositor or display.  This allows to accurately turn
it into a VkFence or VkSemaphore without any over- synchronization.

This patch series actually contains two new ioctls.  There is the export
one mentioned above as well as an RFC for an import ioctl which provides
the other half.  The intention is to land the export ioctl since it seems
like there's no real disagreement on that one.  The import ioctl, however,
has a lot of debate around it so it's intended to be RFC-only for now.

Mesa MR: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4037
IGT tests: https://patchwork.freedesktop.org/series/90490/

v10 (Jason Ekstrand, Daniel Vetter):
  - Add reviews/acks
  - Add a patch to rename _rcu to _unlocked
  - Split things better so import is clearly RFC status

v11 (Daniel Vetter):
  - Add more CCs to try and get maintainers
  - Add a patch to document DMA_BUF_IOCTL_SYNC
  - Generally better docs
  - Use separate structs for import/export (easier to document)
  - Fix an issue in the import patch

v12 (Daniel Vetter):
  - Better docs for DMA_BUF_IOCTL_SYNC

v12 (Christian König):
  - Drop the rename patch in favor of Christian's series
  - Add a comment to the commit message for the dma-buf sync_file export
ioctl saying why we made it an ioctl on dma-buf

Cc: Christian König 
Cc: Michel Dänzer 
Cc: Dave Airlie 
Cc: Bas Nieuwenhuizen 
Cc: Daniel Stone 
Cc: mesa-dev@lists.freedesktop.org
Cc: wayland-de...@lists.freedesktop.org
Test-with: 20210524205225.872316-1-ja...@jlekstrand.net

Christian König (1):
   dma-buf: Add dma_fence_array_for_each (v2)

Jason Ekstrand (5):
   dma-buf: Add dma_resv_get_singleton (v6)
   dma-buf: Document DMA_BUF_IOCTL_SYNC (v2)
   dma-buf: Add an API for exporting sync files (v12)
   RFC: dma-buf: Add an extra fence to dma_resv_get_singleton_unlocked
   RFC: dma-buf: Add an API for importing sync files (v7)

  Documentation/driver-api/dma-buf.rst |   8 ++
  drivers/dma-buf/dma-buf.c| 103 +
  drivers/dma-buf/dma-fence-array.c|  27 +++
  drivers/dma-buf/dma-resv.c   | 110 +++
  include/linux/dma-fence-array.h  |  17 +
  include/linux/dma-resv.h |   2 +
  include/uapi/linux/dma-buf.h | 103 -
  7 files changed, 369

Re: [Mesa-dev] [RFC] Concrete proposal to split classic

2021-06-15 Thread Jason Ekstrand
I'm bringing this up via e-mail so it gets a wider audience. Given how will 
crocus is working at this point, is like to propose we hold off for about 
three more releases before we drop classic. This next release, 21.2, we'll 
have crocus as an option with i965 as the default. There will also be a 
-Dprefer-crocus meson options so distros or individuals can attempt to flip 
it on. The release after that, 21.3, we'll keep i965 in the tree but have 
crocus be the default (assuming things are going well.) Some time in 2022, 
probably after the 22.2 release or so, we'll delete classic.


Why wait so long? Well, it just landed and we don't have a Cherryview story 
yet so I'm hesitant to make it the default too quickly. Even if it were the 
default in 21.2, it's already too late, likely, to hit the fall 2021 distro 
release cycle. If we flip it to the default before the end of the year, 
that'll get crocus into spring distros. This is good because 22.04 is an 
Ubuntu LTS release and I think they'd rather bump crocus versions to fix 
bugs than backport on top of i965. But that's really fort Ubuntu to decide. 
In any case, we won't see broad-spread usage and the flood of bug reports 
until next spring so we may want to wait until then to stay deleting code.


If we wanted to accelerate things, one option, once we're ready, would be 
to ask the person who manages the oibaf PPA to switch to crocus early. That 
may get some early adopters on board.


Thoughts?

--Jason

On April 9, 2021 22:09:14 Dylan Baker  wrote:


Quoting Dylan Baker (2021-03-22 15:15:30)

Hi list,

We've talked about it a number of times, but I think it's time time to
discuss splitting the classic drivers off of the main development branch
again, although this time I have a concrete plan for how this would
work.

First, why? Basically, all of the classic drivers are in maintanence
mode (even i965). Second, many of them rely on code that no one works
on, and very few people still understand. There is no CI for most of
them, and the Intel CI is not integrated with gitlab, so it's easy to
unintentionally break them, and this breakage usually isn't noticed
until just before or just after a release. 21.0 was held up (in small
part, also me just getting behind) because of such breakages.

I konw there is some interest in getting i915g in good enough shape that
it could replace i915c, at least for the common case. I also am aware
that Dave, Ilia, and Eric (with some pointers from Ken) have been
working on a gallium driver to replace i965. Neither of those things are
ready yet, but I've taken them into account.

Here's the plan:

1) 21.1 release happens
2) we remove classic from master
3) 21.1 reaches EOL because of 21.2
4) we fork the 21.1 branch into a "classic-lts"¹ branch
5) we disable all vulkan and gallium drivers in said branch, at least at
   the Meson level
6) We change the name and precidence of the glvnd loader file
7) apply any build fixups (turn of intel generators for versions >= 7.5,
   for example
8) maintain that branch with build and critical bug fixes only

This gives ditros and end users two options.
1) then can build *only* the legacy branch in the a normal Mesa provides
   libGL interfaces fashion
2) They can use glvnd and install current mesa and the legacy branch in
   parallel

Because of glvnd, we can control which driver will get loaded first, and
thus if we decide i915g or the i965 replacement is ready and turn it on
by default it will be loaded by default. An end user who doesn't like
this can add a new glvnd loader file that makes the classic drivers
higher precident and continue to use them.

Why fork from 21.1 instead of master?

First, it allows us to delete classic immediately, which will allow
refactoring to happen earlier in the cycle, and for any fallout to be
caught and hopefully fixed before the release. Second, it means that
when a user is switched from 21.1 to the new classic-lts branch, there
will be no regressions, and no one has to spend time figuring out what
broke and fixing the lts branch.

When you say "build and critical bug fixes", what do you mean?

I mean update Meson if we rely on something that in the future is
deprecated and removed, and would prevent building the branch or an
relying on some compiler behavior that changes, gaping exploitable
security holes, that kind of thing.

footnotes
¹Or whatever color you like your bikeshed


Here is a merge request to remove classic:
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10153

Dylan


___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [RFC] Concrete proposal to split classic

2021-06-15 Thread Timothy Arceri

On 6/16/21 11:03 AM, Jason Ekstrand wrote:

I'm bringing this up via e-mail so it gets a wider audience. Given how 
will crocus is working at this point, is like to propose we hold off 
for about three more releases before we drop classic. This next 
release, 21.2, we'll have crocus as an option with i965 as the 
default. There will also be a -Dprefer-crocus meson options so distros 
or individuals can attempt to flip it on. The release after that, 
21.3, we'll keep i965 in the tree but have crocus be the default 
(assuming things are going well.) Some time in 2022, probably after 
the 22.2 release or so, we'll delete classic.


Why wait so long? Well, it just landed and we don't have a Cherryview 
story yet so I'm hesitant to make it the default too quickly. Even if 
it were the default in 21.2, it's already too late, likely, to hit the 
fall 2021 distro release cycle. If we flip it to the default before 
the end of the year, that'll get crocus into spring distros. This is 
good because 22.04 is an Ubuntu LTS release and I think they'd rather 
bump crocus versions to fix bugs than backport on top of i965. But 
that's really fort Ubuntu to decide. In any case, we won't see 
broad-spread usage and the flood of bug reports until next spring so 
we may want to wait until then to stay deleting code.


If we wanted to accelerate things, one option, once we're ready, would 
be to ask the person who manages the oibaf PPA to switch to crocus 
early. That may get some early adopters on board.


Thoughts?


I though the idea was to put everything in a classic branch and let 
distros run "classic" hardware from that. What happens after 3 releases 
does i965 still go to the classic branch with the other classic drivers? 
If so is it really worth waiting just because Ubuntu might have to 
back-port a bug fix?






--Jason

On April 9, 2021 22:09:14 Dylan Baker  wrote:


Quoting Dylan Baker (2021-03-22 15:15:30)

Hi list,

We've talked about it a number of times, but I think it's time time to
discuss splitting the classic drivers off of the main development branch
again, although this time I have a concrete plan for how this would
work.

First, why? Basically, all of the classic drivers are in maintanence
mode (even i965). Second, many of them rely on code that no one works
on, and very few people still understand. There is no CI for most of
them, and the Intel CI is not integrated with gitlab, so it's easy to
unintentionally break them, and this breakage usually isn't noticed
until just before or just after a release. 21.0 was held up (in small
part, also me just getting behind) because of such breakages.

I konw there is some interest in getting i915g in good enough shape that
it could replace i915c, at least for the common case. I also am aware
that Dave, Ilia, and Eric (with some pointers from Ken) have been
working on a gallium driver to replace i965. Neither of those things are
ready yet, but I've taken them into account.

Here's the plan:

1) 21.1 release happens
2) we remove classic from master
3) 21.1 reaches EOL because of 21.2
4) we fork the 21.1 branch into a "classic-lts"¹ branch
5) we disable all vulkan and gallium drivers in said branch, at least at
the Meson level
6) We change the name and precidence of the glvnd loader file
7) apply any build fixups (turn of intel generators for versions >= 7.5,
for example
8) maintain that branch with build and critical bug fixes only

This gives ditros and end users two options.
1) then can build *only* the legacy branch in the a normal Mesa provides
libGL interfaces fashion
2) They can use glvnd and install current mesa and the legacy branch in
parallel

Because of glvnd, we can control which driver will get loaded first, and
thus if we decide i915g or the i965 replacement is ready and turn it on
by default it will be loaded by default. An end user who doesn't like
this can add a new glvnd loader file that makes the classic drivers
higher precident and continue to use them.

Why fork from 21.1 instead of master?

First, it allows us to delete classic immediately, which will allow
refactoring to happen earlier in the cycle, and for any fallout to be
caught and hopefully fixed before the release. Second, it means that
when a user is switched from 21.1 to the new classic-lts branch, there
will be no regressions, and no one has to spend time figuring out what
broke and fixing the lts branch.

When you say "build and critical bug fixes", what do you mean?

I mean update Meson if we rely on something that in the future is
deprecated and removed, and would prevent building the branch or an
relying on some compiler behavior that changes, gaping exploitable
security holes, that kind of thing.

footnotes
¹Or whatever color you like your bikeshed


Here is a merge request to remove classic:
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10153

Dylan



___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists

Re: [Mesa-dev] [RFC] Concrete proposal to split classic

2021-06-15 Thread Jason Ekstrand
On Tue, Jun 15, 2021 at 8:46 PM Timothy Arceri  wrote:
>
> On 6/16/21 11:03 AM, Jason Ekstrand wrote:
>
> I'm bringing this up via e-mail so it gets a wider audience. Given how will 
> crocus is working at this point, is like to propose we hold off for about 
> three more releases before we drop classic. This next release, 21.2, we'll 
> have crocus as an option with i965 as the default. There will also be a 
> -Dprefer-crocus meson options so distros or individuals can attempt to flip 
> it on. The release after that, 21.3, we'll keep i965 in the tree but have 
> crocus be the default (assuming things are going well.) Some time in 2022, 
> probably after the 22.2 release or so, we'll delete classic.
>
> Why wait so long? Well, it just landed and we don't have a Cherryview story 
> yet so I'm hesitant to make it the default too quickly. Even if it were the 
> default in 21.2, it's already too late, likely, to hit the fall 2021 distro 
> release cycle. If we flip it to the default before the end of the year, 
> that'll get crocus into spring distros. This is good because 22.04 is an 
> Ubuntu LTS release and I think they'd rather bump crocus versions to fix bugs 
> than backport on top of i965. But that's really fort Ubuntu to decide. In any 
> case, we won't see broad-spread usage and the flood of bug reports until next 
> spring so we may want to wait until then to stay deleting code.
>
> If we wanted to accelerate things, one option, once we're ready, would be to 
> ask the person who manages the oibaf PPA to switch to crocus early. That may 
> get some early adopters on board.
>
> Thoughts?
>
> I though the idea was to put everything in a classic branch and let distros 
> run "classic" hardware from that. What happens after 3 releases does i965 
> still go to the classic branch with the other classic drivers? If so is it 
> really worth waiting just because Ubuntu might have to back-port a bug fix?

Yeah, that was the idea.  However, with crocus in good shape and Emma
Anholt working on i915g, it may be that the actual answer is we just
throw away the classic drivers and the only thing you really need the
old branch for is r200 and ancient nouveau.

--Jason


> --Jason
>
> On April 9, 2021 22:09:14 Dylan Baker  wrote:
>
>> Quoting Dylan Baker (2021-03-22 15:15:30)
>>>
>>> Hi list,
>>>
>>> We've talked about it a number of times, but I think it's time time to
>>> discuss splitting the classic drivers off of the main development branch
>>> again, although this time I have a concrete plan for how this would
>>> work.
>>>
>>> First, why? Basically, all of the classic drivers are in maintanence
>>> mode (even i965). Second, many of them rely on code that no one works
>>> on, and very few people still understand. There is no CI for most of
>>> them, and the Intel CI is not integrated with gitlab, so it's easy to
>>> unintentionally break them, and this breakage usually isn't noticed
>>> until just before or just after a release. 21.0 was held up (in small
>>> part, also me just getting behind) because of such breakages.
>>>
>>> I konw there is some interest in getting i915g in good enough shape that
>>> it could replace i915c, at least for the common case. I also am aware
>>> that Dave, Ilia, and Eric (with some pointers from Ken) have been
>>> working on a gallium driver to replace i965. Neither of those things are
>>> ready yet, but I've taken them into account.
>>>
>>> Here's the plan:
>>>
>>> 1) 21.1 release happens
>>> 2) we remove classic from master
>>> 3) 21.1 reaches EOL because of 21.2
>>> 4) we fork the 21.1 branch into a "classic-lts"¹ branch
>>> 5) we disable all vulkan and gallium drivers in said branch, at least at
>>> the Meson level
>>> 6) We change the name and precidence of the glvnd loader file
>>> 7) apply any build fixups (turn of intel generators for versions >= 7.5,
>>> for example
>>> 8) maintain that branch with build and critical bug fixes only
>>>
>>> This gives ditros and end users two options.
>>> 1) then can build *only* the legacy branch in the a normal Mesa provides
>>> libGL interfaces fashion
>>> 2) They can use glvnd and install current mesa and the legacy branch in
>>> parallel
>>>
>>> Because of glvnd, we can control which driver will get loaded first, and
>>> thus if we decide i915g or the i965 replacement is ready and turn it on
>>> by default it will be loaded by default. An end user who doesn't like
>>> this can add a new glvnd loader file that makes the classic drivers
>>> higher precident and continue to use them.
>>>
>>> Why fork from 21.1 instead of master?
>>>
>>> First, it allows us to delete classic immediately, which will allow
>>> refactoring to happen earlier in the cycle, and for any fallout to be
>>> caught and hopefully fixed before the release. Second, it means that
>>> when a user is switched from 21.1 to the new classic-lts branch, there
>>> will be no regressions, and no one has to spend time figuring out what
>>> broke and fixing the lts branch.
>>>
>

Re: [Mesa-dev] [RFC] Concrete proposal to split classic

2021-06-15 Thread Timothy Arceri

On 6/16/21 1:16 PM, Jason Ekstrand wrote:


On Tue, Jun 15, 2021 at 8:46 PM Timothy Arceri  wrote:

On 6/16/21 11:03 AM, Jason Ekstrand wrote:

I'm bringing this up via e-mail so it gets a wider audience. Given how will 
crocus is working at this point, is like to propose we hold off for about three 
more releases before we drop classic. This next release, 21.2, we'll have 
crocus as an option with i965 as the default. There will also be a 
-Dprefer-crocus meson options so distros or individuals can attempt to flip it 
on. The release after that, 21.3, we'll keep i965 in the tree but have crocus 
be the default (assuming things are going well.) Some time in 2022, probably 
after the 22.2 release or so, we'll delete classic.

Why wait so long? Well, it just landed and we don't have a Cherryview story yet 
so I'm hesitant to make it the default too quickly. Even if it were the default 
in 21.2, it's already too late, likely, to hit the fall 2021 distro release 
cycle. If we flip it to the default before the end of the year, that'll get 
crocus into spring distros. This is good because 22.04 is an Ubuntu LTS release 
and I think they'd rather bump crocus versions to fix bugs than backport on top 
of i965. But that's really fort Ubuntu to decide. In any case, we won't see 
broad-spread usage and the flood of bug reports until next spring so we may 
want to wait until then to stay deleting code.

If we wanted to accelerate things, one option, once we're ready, would be to 
ask the person who manages the oibaf PPA to switch to crocus early. That may 
get some early adopters on board.

Thoughts?

I though the idea was to put everything in a classic branch and let distros run 
"classic" hardware from that. What happens after 3 releases does i965 still go 
to the classic branch with the other classic drivers? If so is it really worth waiting 
just because Ubuntu might have to back-port a bug fix?

Yeah, that was the idea.  However, with crocus in good shape and Emma
Anholt working on i915g, it may be that the actual answer is we just
throw away the classic drivers and the only thing you really need the
old branch for is r200 and ancient nouveau.
Fair enough. I don't really have any stake in these drivers, but I am 
eager to get to work on clean ups once we drop the classic drivers. I 
would be disappointed if we were forced to wait another year just to 
have the Intel drivers kept in the classic branch anyway. Going on past 
experience we can pretty much guarantee that someone will at least ask 
we keep them. Anyway up to you guys I guess.

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [RFC] Concrete proposal to split classic

2021-06-15 Thread Emma Anholt
On Tue, Jun 15, 2021 at 8:16 PM Jason Ekstrand  wrote:
>
> On Tue, Jun 15, 2021 at 8:46 PM Timothy Arceri  wrote:
> >
> > On 6/16/21 11:03 AM, Jason Ekstrand wrote:
> >
> > I'm bringing this up via e-mail so it gets a wider audience. Given how will 
> > crocus is working at this point, is like to propose we hold off for about 
> > three more releases before we drop classic. This next release, 21.2, we'll 
> > have crocus as an option with i965 as the default. There will also be a 
> > -Dprefer-crocus meson options so distros or individuals can attempt to flip 
> > it on. The release after that, 21.3, we'll keep i965 in the tree but have 
> > crocus be the default (assuming things are going well.) Some time in 2022, 
> > probably after the 22.2 release or so, we'll delete classic.
> >
> > Why wait so long? Well, it just landed and we don't have a Cherryview story 
> > yet so I'm hesitant to make it the default too quickly. Even if it were the 
> > default in 21.2, it's already too late, likely, to hit the fall 2021 distro 
> > release cycle. If we flip it to the default before the end of the year, 
> > that'll get crocus into spring distros. This is good because 22.04 is an 
> > Ubuntu LTS release and I think they'd rather bump crocus versions to fix 
> > bugs than backport on top of i965. But that's really fort Ubuntu to decide. 
> > In any case, we won't see broad-spread usage and the flood of bug reports 
> > until next spring so we may want to wait until then to stay deleting code.
> >
> > If we wanted to accelerate things, one option, once we're ready, would be 
> > to ask the person who manages the oibaf PPA to switch to crocus early. That 
> > may get some early adopters on board.
> >
> > Thoughts?

It certainly is tempting to just throw away classic without going
through this LTS branch adventure (I might say "charade") for distros.
I really think that people with i8xx/r200/r100 are better served with
swrast than HW GL in an otherwise-current world of software, and for
an old-distro snapshot where lots of software *would* work on that
hardware, what we do in current Mesa doesn't matter.  i915's right at
the cusp of usefulness in my opinion, and I'd put r300 pretty close to
it.

If we're acting like this LTS branch is a serious thing, though, then
I don't see a good reason to wait until 2022.  Let "did they build
crocus" be the switch between current Mesa and LTS i965.

I really want !8044 and garbage-collecting huge swaths of the GLSL
compiler, and while 2022 may realistically be when we can do that by,
I think we'll be slower about pushing on it if people are thinking
"well, we can't delete anything till next year anyway".

> > I though the idea was to put everything in a classic branch and let distros 
> > run "classic" hardware from that. What happens after 3 releases does i965 
> > still go to the classic branch with the other classic drivers? If so is it 
> > really worth waiting just because Ubuntu might have to back-port a bug fix?
>
> Yeah, that was the idea.  However, with crocus in good shape and Emma
> Anholt working on i915g, it may be that the actual answer is we just
> throw away the classic drivers and the only thing you really need the
> old branch for is r200 and ancient nouveau.

i915g still has major issues: large vertex count crashes, lack of link
failures, and crashes on compile failures being the top ones.  Once I
get driver-produced link failures plumbed through gallium somehow
(feels possible now that we precompile, and vc4 really needs it for
conformance too) and the NIR stuff landed, I think it'll be a pretty
plausible driver, and probably on average better for users than the
bitrotted stuff we've shipped for the last decade.  Regression-free
would be a long road, though, and given a different compiler pipeline
that might schedule differently plus the texture phase limits,
possibly not tractable in practice.

By far the limiting factor for i915g progress now that I've got some
CI rigged up is review.  My preference would be that we all agree that
nobody wants to look at i915, and some responsible folks (ajax and a
couple Intel volunteers, perhaps?) bless me to merge without review
once an i915g-only MR has been up for a week.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [RFC] Concrete proposal to split classic

2021-06-15 Thread Timur Kristóf
Why not proceed with splitting the classic drivers including i965 as
was discussed previously?

Then, when you feel that crocus and i915g are ready to be default, you
can simply delete i965 from the classic branch and tell users they can
use mesa main once again.

On Tue, 2021-06-15 at 20:03 -0500, Jason Ekstrand wrote:
> I'm bringing this up via e-mail so it gets a wider audience. Given
> how will crocus is working at this point, is like to propose we hold
> off for about three more releases before we drop classic. This next
> release, 21.2, we'll have crocus as an option with i965 as the
> default. There will also be a -Dprefer-crocus meson options so
> distros or individuals can attempt to flip it on. The release after
> that, 21.3, we'll keep i965 in the tree but have crocus be the
> default (assuming things are going well.) Some time in 2022, probably
> after the 22.2 release or so, we'll delete classic.
> 
> Why wait so long? Well, it just landed and we don't have a Cherryview
> story yet so I'm hesitant to make it the default too quickly. Even if
> it were the default in 21.2, it's already too late, likely, to hit
> the fall 2021 distro release cycle. If we flip it to the default
> before the end of the year, that'll get crocus into spring distros.
> This is good because 22.04 is an Ubuntu LTS release and I think
> they'd rather bump crocus versions to fix bugs than backport on top
> of i965. But that's really fort Ubuntu to decide. In any case, we
> won't see broad-spread usage and the flood of bug reports until next
> spring so we may want to wait until then to stay deleting code.
> 
> If we wanted to accelerate things, one option, once we're ready,
> would be to ask the person who manages the oibaf PPA to switch to
> crocus early. That may get some early adopters on board.
> 
> Thoughts?
> 
> --Jason
> 
> On April 9, 2021 22:09:14 Dylan Baker  wrote:
> 
> > Quoting Dylan Baker (2021-03-22 15:15:30)
> > > Hi list,
> > > 
> > > We've talked about it a number of times, but I think it's time
> > > time to
> > > discuss splitting the classic drivers off of the main development
> > > branch
> > > again, although this time I have a concrete plan for how this
> > > would
> > > work.
> > > 
> > > First, why? Basically, all of the classic drivers are in
> > > maintanence
> > > mode (even i965). Second, many of them rely on code that no one
> > > works
> > > on, and very few people still understand. There is no CI for most
> > > of
> > > them, and the Intel CI is not integrated with gitlab, so it's
> > > easy to
> > > unintentionally break them, and this breakage usually isn't
> > > noticed
> > > until just before or just after a release. 21.0 was held up (in
> > > small
> > > part, also me just getting behind) because of such breakages.
> > > 
> > > I konw there is some interest in getting i915g in good enough
> > > shape that
> > > it could replace i915c, at least for the common case. I also am
> > > aware
> > > that Dave, Ilia, and Eric (with some pointers from Ken) have been
> > > working on a gallium driver to replace i965. Neither of those
> > > things are
> > > ready yet, but I've taken them into account.
> > > 
> > > Here's the plan:
> > > 
> > > 1) 21.1 release happens
> > > 2) we remove classic from master
> > > 3) 21.1 reaches EOL because of 21.2
> > > 4) we fork the 21.1 branch into a "classic-lts"¹ branch
> > > 5) we disable all vulkan and gallium drivers in said branch, at
> > > least at
> > > the Meson level
> > > 6) We change the name and precidence of the glvnd loader file
> > > 7) apply any build fixups (turn of intel generators for versions
> > > >= 7.5,
> > > for example
> > > 8) maintain that branch with build and critical bug fixes only
> > > 
> > > This gives ditros and end users two options.
> > > 1) then can build *only* the legacy branch in the a normal Mesa
> > > provides
> > > libGL interfaces fashion
> > > 2) They can use glvnd and install current mesa and the legacy
> > > branch in
> > > parallel
> > > 
> > > Because of glvnd, we can control which driver will get loaded
> > > first, and
> > > thus if we decide i915g or the i965 replacement is ready and turn
> > > it on
> > > by default it will be loaded by default. An end user who doesn't
> > > like
> > > this can add a new glvnd loader file that makes the classic
> > > drivers
> > > higher precident and continue to use them.
> > > 
> > > Why fork from 21.1 instead of master?
> > > 
> > > First, it allows us to delete classic immediately, which will
> > > allow
> > > refactoring to happen earlier in the cycle, and for any fallout
> > > to be
> > > caught and hopefully fixed before the release. Second, it means
> > > that
> > > when a user is switched from 21.1 to the new classic-lts branch,
> > > there
> > > will be no regressions, and no one has to spend time figuring out
> > > what
> > > broke and fixing the lts branch.
> > > 
> > > When you say "build and critical bug fixes", what do you mean?
> > > 
> > > I mean update Meso