Re: Possible Performance Regression with Mesa

2024-04-26 Thread Daniel Stone
Hi Joao,

On Fri, 26 Apr 2024 at 08:42, Joao Paulo Silva Goncalves
 wrote:
> On Thu, Apr 25, 2024 at 9:08 AM Lucas Stach  wrote:
> > I can reproduce the issue, but sadly there is no simple fix for this,
> > as it's a bad interaction between some of the new features.
> > At the core of the issue is the dmabuf-feedback support with the chain
> > of events being as follows:
>
> > 1. weston switches to the scanout tranche, as it would like to put the
> > surface on a plane
> > 2. the client reallocates as linear but does so on the render node
> > 3. weston still isn't able to put the buffer on the plane, as it's
> > still scanout incompatible due to being non-contig, so needs to fall
> > back to rendering
> > 4. now we are stuck at a linear buffer being used for rendering, which
> > is very non-optimal
>
> > I'll look into improving this, but can make no commitments as to when
> > I'll be able to get around to this.
>
> Seem to be tricky.
> If you want, we at least can help you test it. Just reach out.
> We also saw similar behaviour on more modern hardware, like the iMX8MM.
> I will do a bit more testing on the iMX8MM and also some on the iMX8MP to 
> geather more data and
> I am thinking in also opening an issue on the gitlab of Mesa, for better 
> tracking. What do you think?

One thing you can try is to edit
weston/libweston/backend-drm/state-propose.c and, inside
dmabuf_feedback_maybe_update(), prevent action_needed from ever being
set to ACTION_NEEDED_ADD_SCANOUT_TRANCHE. It would be interesting to
know if this restores full performance.

Cheers,
Daniel


Re: Possible Performance Regression with Mesa

2024-04-25 Thread Daniel Stone
On Thu, 25 Apr 2024 at 13:08, Lucas Stach  wrote:
> I can reproduce the issue, but sadly there is no simple fix for this,
> as it's a bad interaction between some of the new features.
> At the core of the issue is the dmabuf-feedback support with the chain
> of events being as follows:
>
> 1. weston switches to the scanout tranche, as it would like to put the
> surface on a plane
> 2. the client reallocates as linear but does so on the render node
> 3. weston still isn't able to put the buffer on the plane, as it's
> still scanout incompatible due to being non-contig, so needs to fall
> back to rendering
> 4. now we are stuck at a linear buffer being used for rendering, which
> is very non-optimal

Oh man, sorry about that, that shouldn't happen. As long as
drmModeAddFB2 is failing, we should be marking the buffer as
non-importable, and then hinting the client back towards tiled.

That being said, yeah, having the client render to linear and skip
composition is definitely going to be better!

Cheers,
Daniel


Re: Future direction of the Mesa Vulkan runtime (or "should we build a new gallium?")

2024-01-26 Thread Daniel Stone
On Fri, 26 Jan 2024 at 00:22, Faith Ekstrand  wrote:
> On Thu, Jan 25, 2024 at 5:06 PM Gert Wollny  wrote:
>> I think with Venus we are more interested in using utility libraries on
>> an as-needed basis. Here, most of the time the Vulkan commands are just
>> serialized according to the Venus protocol and this is then passed to
>> the host because usually it wouldn't make sense to let the guest
>> translate the Vulkan commands to something different (e.g. something
>> that is commonly used in a runtime), only to then re-encode this in the
>> Venus driver to satisfy the host Vulkan driver -  just think Spir-V:
>> why would we want to have NIR only to then re-encode it to Spir-V?
>
> I think Venus is an entirely different class of driver. It's not even really 
> a driver. It's more of a Vulkan layer that has a VM boundary in the middle. 
> It's attempting to be as thin of a Vulkan -> Vulkan pass-through as possible. 
> As such, it doesn't use most of the shared stuff anyway. It uses the dispatch 
> framework and that's really about it. As long as that code stays in-tree 
> roughly as-is, I think Venus will be fine.

The eternal response: you forgot WSI!

Cheers,
Daniel


Re: wayland: wrong tiling with wl_drm on Vivante GC2000

2023-03-30 Thread Daniel Stone
Hi Christian,

On Thu, 30 Mar 2023 at 20:15, Christian Gudrian  wrote:

> We're running a custom Wayland compositor based on Qt Wayland on an i.MX6
> Quad system with a Vivante GC2000 GPU using the Mesa Gallium driver. While
> the compositor itself displays correctly, client buffers are displayed with
> wrong tiling.
>
> So far I've found out, that the client's __DRIimage is created by
> etna_resource_create with a tiled layout. This image is later passed to
> create_wl_buffer which ignores the tiling information and passes the
> image's FD to wl_drm_create_prime_buffer.
>
> If I patch etna_resource_create to always use a linear layout the client's
> buffer is displayed correctly. That's certainly not how to do it correctly.
> Is there a way to ensure a linear layout for this use case?
>

You need to force QtWayland to use the wp-linux-dmabuf-v1 platform
integration for the compositor. All the others do this automatically but Qt
requires an environment variable for this.

Cheers,
Daniel


Re: [Mesa-dev] Workflow Proposal

2021-10-18 Thread Daniel Stone
On Wed, 13 Oct 2021 at 20:13, Jordan Justen  wrote:
> Alyssa Rosenzweig  writes:
> >>  Upstream should do what's best for upstream, not for Intel's "unique"
> >>  management.
> >>
> >>Not sure how from Emma explaining how Rb tags were used by Intel
> >>management it came the conclusion that it were used in that way only by
> >>Intel management. Spoiler: it is not.
> >
> > Sorry, I'll make that point more emphatic.
> >
> > Upstream must do what's best for upstream without zero regard for the
> > whims of management. Doubly so for bad management.
>
> If the r-b process ever had any notice from any company's management, I
> haven't seen it. (Actually, I think most management would rather have
> the short sighted view of skipping code review to more quickly merge
> patches.) In terms of who to "track down", that is also a tenuous
> connection.

All of the above is true but also totally irrelevant to the actual discussion.

When R-b as a metric came up at the time of the first switch, I wrote
a really trivial Python script which used the GitLab API to scrape MR
discussions and pull 'Reviewed-by: ...' comments out and print a
leaderboard for number of reviewed MRs over the past calendar month.
Adapting that to look at approvals rather than comments would cut it
down to about 10 LoC.

Whether it's Reviewed-by in the trailer or an approval, both are
explicitly designed to be machine readable, which means it's trivial
to turn it into a metric if you want to. Whether or not that's a good
idea is the problem of whoever wields it.

Cheers,
Daniel


Re: [Mesa-dev] Workflow Proposal

2021-10-07 Thread Daniel Stone
On Thu, 7 Oct 2021 at 09:38, Eero Tamminen  wrote:
> This sounds horrible from the point of view of trying to track down
> somebody who knows about what's & why's of some old commit that is later
> on found to cause issues...

But why would your first point of call not be to go back to the review
discussion and look at the context and what was said at the time? Then
when you do that, you can see not only what happened, but also who was
involved and saying what at the time.

Cheers,
Daniel


Re: [Mesa-dev] [PATCH] dma-buf: Document dma-buf implicit fencing/resv fencing rules

2021-06-24 Thread Daniel Stone
Hi,

On Wed, 23 Jun 2021 at 17:20, Daniel Vetter  wrote:
> +*
> +* IMPLICIT SYNCHRONIZATION RULES:
> +*
> +* Drivers which support implicit synchronization of buffer access as
> +* e.g. exposed in `Implicit Fence Poll Support`_ should follow the
> +* below rules.

'Should' ... ? Must.

> +* - Drivers should add a shared fence through
> +*   dma_resv_add_shared_fence() for anything the userspace API
> +*   considers a read access. This highly depends upon the API and
> +*   window system: E.g. OpenGL is generally implicitly synchronized 
> on
> +*   Linux, but explicitly synchronized on Android. Whereas Vulkan is
> +*   generally explicitly synchronized for everything, and window 
> system
> +*   buffers have explicit API calls (which then need to make sure the
> +*   implicit fences store here in @resv are updated correctly).
> +*
> +* - [...]

Mmm, I think this is all right, but it could be worded much more
clearly. Right now it's a bunch of points all smashed into one, and
there's a lot of room for misinterpretation.

Here's a strawman, starting with most basic and restrictive, working
through to when you're allowed to wriggle your way out:

Rule 1: Drivers must add a shared fence through
dma_resv_add_shared_fence() for any read accesses against that buffer.
This appends a fence to the shared array, ensuring that any future
non-read access will be synchronised against this operation to only
begin after it has completed.

Rule 2: Drivers must add an exclusive fence through
dma_resv_add_excl_fence() for any write accesses against that buffer.
This replaces the exclusive fence with the new operation, ensuring
that all future access will be synchronised against this operation to
only begin after it has completed.

Rule 3: Drivers must synchronise all accesses to buffers against
existing implicit fences. Read accesses must synchronise against the
exclusive fence (read-after-write), and write accesses must
synchronise against both the exclusive (write-after-write) and shared
(write-after-read) fences.

Note 1: Users like OpenGL and window systems on non-Android userspace
are generally implicitly synchronised. An implicitly-synchronised
userspace is unaware of fences from prior operations, so the kernel
mediates scheduling to create the illusion that GPU work is FIFO. For
example, an application will flush and schedule GPU write work to
render its image, then immediately tell the window system to display
that image; the window system may immediately flush and schedule GPU
read work to display that image, with neither waiting for the write to
have completed. The kernel provides coherence by synchronising the
read access against the write fence in the exclusive slot, so that the
image displayed is correct.

Note 2: Users like Vulkan and Android window system are generally
explicitly synchronised. An explicitly-synchronised userspace is
responsible for tracking its own read and write access and providing
the kernel with synchronisation barriers. For instance, a Vulkan
application rendering to a buffer and subsequently using it as a read
texture, must annotate the read operation with a read-after-write
synchronisation barrier.

Note 3: Implicit and explicit userspace can coexist. For instance, an
explicitly-synchronised Vulkan application may be running as a client
of an implicitly-synchronised window system which uses OpenGL for
composition; an implicitly-synchronised OpenGL application may be
running as a client of a window system which uses Vulkan for
composition.

Note 4: Some subsystems, for example V4L2, do not pipeline operations,
and instead only return to userspace when the scheduled work against a
buffer has fully retired.

Exemption 1: Fully self-coherent userspace may skip implicit
synchronisation barriers. For instance, accesses between two
Vulkan-internal buffers allocated by a single application do not need
to synchronise against each other's implicit fences, as the client is
responsible for explicitly providing barriers for access. A
self-contained OpenGL userspace also has no need to implicitly
synchronise its access if the driver instead tracks all access and
inserts the appropriate synchronisation barriers.

Exemption 2: When implicit and explicit userspace coexist, the
explicit side may skip intermediate synchronisation, and only place
synchronisation barriers at transition points. For example, a Vulkan
compositor displaying a buffer from an OpenGL application would need
to synchronise its first access against the fence placed in the
exclusive implicit-synchronisation slot. Once this read has fully
retired, the compositor has no need to participate in implicit
synchronisation until it is ready to return the buffer to the
application, at which point it must insert all its non-retired
accesses into the shared slot, which the application will then
synchronise future write 

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

2021-06-18 Thread Daniel Stone
Sorry for the mobile reply, but V4L2 is absolutely not write-only; there has 
never been an intersection of V4L2 supporting dmabuf and not supporting reads.

I see your point about the heritage of dma_resv but it’s a red herring. It 
doesn’t matter who’s right, or who was first, or where the code was extracted 
from.

It’s well defined that amdgpu defines resv to be one thing, that every other 
non-TTM user defines it to be something very different, and that the other TTM 
users define it to be something in the middle.

We’ll never get to anything workable if we keep arguing who’s right. Everyone 
is wrong, because dma_resv doesn’t globally mean anything.

It seems clear that there are three classes of synchronisation barrier (not 
using the ‘f’ word here), in descending exclusion order:
  - memory management barriers (amdgpu exclusive fence / ttm_bo->moving)
  - implicit synchronisation write barriers (everyone else’s exclusive fences, 
amdgpu’s shared fences)
  - implicit synchronisation read barriers (everyone else’s shared fences, also 
amdgpu’s shared fences sometimes)

I don’t see a world in which these three uses can be reduced to two slots. What 
also isn’t clear to me though, is how the memory-management barriers can 
exclude all other access in the original proposal with purely userspace CS. 
Retaining the three separate modes also seems like a hard requirement to not 
completely break userspace, but then I don’t see how three separate slots would 
work if they need to be temporally ordered. amdgpu fixed this by redefining the 
meaning of the two slots, others fixed this by not doing one of the three modes.

So how do we square the circle without encoding a DAG into the kernel? Do the 
two slots need to become a single list which is ordered by time + ‘weight’ and 
flattened whenever modified? Something else?

Have a great weekend.

-d

> On 18 Jun 2021, at 5:43 pm, Christian König  wrote:
> 
> Am 18.06.21 um 17:17 schrieb Daniel Vetter:
>> [SNIP]
>> Ignoring _all_ fences is officially ok for pinned dma-buf. This is
>> what v4l does. Aside from it's definitely not just i915 that does this
>> even on the drm side, we have a few more drivers nowadays.
> 
> No it seriously isn't. If drivers are doing this they are more than broken.
> 
> See the comment in dma-resv.h
> 
>  * Based on bo.c which bears the following copyright notice,
>  * but is dual licensed:
> 
> 
> 
> The handling in ttm_bo.c is and always was that the exclusive fence is used 
> for buffer moves.
> 
> As I said multiple times now the *MAIN* purpose of the dma_resv object is 
> memory management and *NOT* synchronization.
> 
> Those restrictions come from the original design of TTM where the dma_resv 
> object originated from.
> 
> The resulting consequences are that:
> 
> a) If you access the buffer without waiting for the exclusive fence you run 
> into a potential information leak.
> We kind of let that slip for V4L since they only access the buffers for 
> writes, so you can't do any harm there.
> 
> b) If you overwrite the exclusive fence with a new one without waiting for 
> the old one to signal you open up the possibility for userspace to access 
> freed up memory.
> This is a complete show stopper since it means that taking over the 
> system is just a typing exercise.
> 
> 
> What you have done by allowing this in is ripping open a major security hole 
> for any DMA-buf import in i915 from all TTM based driver.
> 
> This needs to be fixed ASAP, either by waiting in i915 and all other drivers 
> doing this for the exclusive fence while importing a DMA-buf or by marking 
> i915 and all other drivers as broken.
> 
> Sorry, but if you allowed that in you seriously have no idea what you are 
> talking about here and where all of this originated from.
> 
> Regards,
> Christian.

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


Re: [Mesa-dev] Linux Graphics Next: Userspace submission update

2021-06-02 Thread Daniel Stone
Hi Christian,

On Tue, 1 Jun 2021 at 13:51, Christian König
 wrote:
> Am 01.06.21 um 14:30 schrieb Daniel Vetter:
> > If you want to enable this use-case with driver magic and without the
> > compositor being aware of what's going on, the solution is EGLStreams.
> > Not sure we want to go there, but it's definitely a lot more feasible
> > than trying to stuff eglstreams semantics into dma-buf implicit
> > fencing support in a desperate attempt to not change compositors.
>
> Well not changing compositors is certainly not something I would try
> with this use case.
>
> Not changing compositors is more like ok we have Ubuntu 20.04 and need
> to support that we the newest hardware generation.

Serious question, have you talked to Canonical?

I mean there's a hell of a lot of effort being expended here, but it
seems to all be predicated on the assumption that Ubuntu's LTS
HWE/backport policy is totally immutable, and that we might need to
make the kernel do backflips to work around that. But ... is it? Has
anyone actually asked them how they feel about this?

I mean, my answer to the first email is 'no, absolutely not' from the
technical perspective (the initial proposal totally breaks current and
future userspace), from a design perspective (it breaks a lot of
usecases which aren't single-vendor GPU+display+codec, or aren't just
a simple desktop), and from a sustainability perspective (cutting
Android adrift again isn't acceptable collateral damage to make it
easier to backport things to last year's Ubuntu release).

But then again, I don't even know what I'm NAKing here ... ? The
original email just lists a proposal to break a ton of things, with
proposed replacements which aren't technically viable, and it's not
clear why? Can we please have some more details and some reasoning
behind them?

I don't mind that userspace (compositor, protocols, clients like Mesa
as well as codec APIs) need to do a lot of work to support the new
model. I do really care though that the hard-binary-switch model works
fine enough for AMD but totally breaks heterogeneous systems and makes
it impossible for userspace to do the right thing.

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


Re: [Mesa-dev] Linux Graphics Next: Userspace submission update

2021-06-01 Thread Daniel Stone
Hi,

On Tue, 1 Jun 2021 at 14:18, Michel Dänzer  wrote:
> On 2021-06-01 2:10 p.m., Christian König wrote:
> > Am 01.06.21 um 12:49 schrieb Michel Dänzer:
> >> There isn't a choice for Wayland compositors in general, since there can 
> >> be arbitrary other state which needs to be applied atomically together 
> >> with the new buffer. (Though in theory, a compositor might get fancy and 
> >> special-case surface commits which can be handled by waiting on the GPU)

Yeah, this is pretty crucial.

> >> Latency is largely a matter of scheduling in the compositor. The latency 
> >> incurred by the compositor shouldn't have to be more than single-digit 
> >> milliseconds. (I've seen total latency from when the client starts 
> >> processing a (static) frame to when it starts being scanned out as low as 
> >> ~6 ms with https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1620, 
> >> lower than typical with Xorg)
> >
> > Well let me describe it like this:
> >
> > We have an use cases for 144 Hz guaranteed refresh rate. That essentially 
> > means that the client application needs to be able to spit out one 
> > frame/window content every ~6.9ms. That's tough, but doable.
> >
> > When you now add 6ms latency in the compositor that means the client 
> > application has only .9ms left for it's frame which is basically impossible 
> > to do.
>
> You misunderstood me. 6 ms is the lowest possible end-to-end latency from 
> client to scanout, but the client can start as early as it wants/needs to. 
> It's a trade-off between latency and the risk of missing a scanout cycle.

Not quite.

When weston-presentation-shm is reporting is a 6ms delta between when
it started its rendering loop and when the frame was presented to
screen. How w-p-s was run matters a lot, because you can insert an
arbitrary delay in there to simulate client rendering. It also matters
a lot that the client is SHM, because that will result in Mutter doing
glTexImage2D on whatever size the window is, then doing a full GL
compositing pass, so even if it's run with zero delay, 6ms isn't 'the
amount of time it takes Mutter to get a frame to screen', it's
measuring the overhead of a texture upload and full-screen composition
as well.

I'm assuming the 'guaranteed 144Hz' target is a fullscreen GL client,
for which you definitely avoid TexImage2D, and could hopefully
(assuming the client picks a modifier which can be displayed) also
avoid the composition pass in favour of direct scanout from the client
buffer; that would give you a much lower number.

Each compositor has its own heuristics around timing. They all make
their own tradeoff between low latency and fewest dropped frames.
Obviously, the higher your latency, the lower the chance of missing a
deadline. There's a lot of detail in the MR that Michel linked.

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-30 Thread Daniel Stone
Hi,

On Fri, 30 Apr 2021 at 10:35, Daniel Vetter  wrote:
> On Fri, Apr 30, 2021 at 11:08 AM Christian König
>  wrote:
> > This doesn't work in hardware. We at least need to setup a few registers
> > and memory locations from inside the VM which userspace shouldn't have
> > access to when we want the end of batch fence and ring buffer start to
> > be reliable.
>
> The thing is, we don't care whether it's reliable or not. Userspace is
> allowed to lie, not signal, signal the wrong thing, out of order,
> everything.
>
> The design assumes all this is possible.
>
> So unless you can't signal at all from userspace, this works. And for
> the "can't signal at all" it just means something needs to do a cpu
> busy wait and burn down lots of cpu time. I hope that's not your hw
> design :-)

I've been sitting this one out so far because what other-Dan's
proposed seems totally sensible and workable for me, so I'll let him
argue it rather than confuse it.

But - yes. Our threat model does not care about a malicious content
which deliberately submits garbage and then gets the compositor to
display garbage. If that's the attack then you could just emit noise
from your frag shader.

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
Hi,

On Tue, 20 Apr 2021 at 20:30, Daniel Vetter  wrote:

> The thing is, you can't do this in drm/scheduler. At least not without
> splitting up the dma_fence in the kernel into separate memory fences
> and sync fences


I'm starting to think this thread needs its own glossary ...

I propose we use 'residency fence' for execution fences which enact
memory-residency operations, e.g. faulting in a page ultimately depending
on GPU work retiring.

And 'value fence' for the pure-userspace model suggested by timeline
semaphores, i.e. fences being (*addr == val) rather than being able to look
at ctx seqno.

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
Hi,

On Tue, 20 Apr 2021 at 20:03, Bas Nieuwenhuizen 
wrote:

> On Tue, Apr 20, 2021 at 8:16 PM Daniel Stone  wrote:
>
>> It's a jarring transition. If you take a very narrow view and say 'it's
>> all GPU work in shared buffers so it should all work the same', then
>> client<->winsys looks the same as client<->client gbuffer. But this is a
>> trap.
>>
>
> I think this is where I think we have have a serious gap of what a winsys
> or a compositor is. Like if you have only a single wayland server running
> on a physical machine this is easy. But add a VR compositor, an
> intermediate compositor (say gamescope), Xwayland and some containers/VM,
> some video capture  (or, gasp, a browser that doubles as compositor) and
> this story gets seriously complicated. Like who are you protecting from
> who? at what point is something client<->winsys vs. client<->client?
>

As I've said upthread, the line is _seriously_ blurred, and is only getting
less clear. Right now, DRI3 cannot even accept a dma_fence, let alone a
drm_syncobj, let alone a memory fence.

Crossing those boundaries is hard, and requires as much thinking as typing.
That's a good thing.

Conflating every synchronisation desire into a single
userspace-visible primitive makes this harder, because it treats game
threads the same as other game threads the same as VR compositors the same
as embedding browsers the same as compositors etc. Drawing very clear lines
between game threads and the external world, with explicit weakening as
necessary, makes those jarring transitions of privilege and expectation
clear and explicit. Which is a good thing, since we're trying to move away
from magic and implicit.

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
Hi,

On Tue, 20 Apr 2021 at 19:54, Daniel Vetter  wrote:

> So I can mostly get behind this, except it's _not_ going to be
> dma_fence. That thing has horrendous internal ordering constraints
> within the kernel, and the one thing that doesn't allow you is to make
> a dma_fence depend upon a userspace fence.
>
> But what we can do is use the same currently existing container
> objects like drm_syncobj or sync_file (timeline syncobj would fit best
> tbh), and stuff a userspace fence behind it. The only trouble is that
> currently timeline syncobj implement vulkan's spec, which means if you
> build a wait-before-signal deadlock, you'll wait forever. Well until
> the user ragequits and kills your process.
>
> So for winsys we'd need to be able to specify the wait timeout
> somewhere for waiting for that dma_fence to materialize (plus the
> submit thread, but userspace needs that anyway to support timeline
> syncobj) if you're importing an untrusted timeline syncobj. And I
> think that's roughly it.
>

Right. The only way you get to materialise a dma_fence from an execbuf is
that you take a hard timeout, with a penalty for not meeting that timeout.
When I say dma_fence I mean dma_fence, because there is no extant winsys
support for drm_symcobj, so this is greenfield: the winsys gets to specify
its terms of engagement, and again, we've been the orange/green-site
enemies of users for quite some time already, so we're happy to continue
doing so. If the actual underlying primitive is not a dma_fence, and
compositors/protocol/clients need to eat a bunch of typing to deal with a
different primitive which offers the same guarantees, then that's fine, as
long as there is some tangible whole-of-system benefit.

How that timeout is actually realised is an implementation detail. Whether
it's a property of the last GPU job itself that the CPU-side driver can
observe, or that the kernel driver guarantees that there is a GPU job
launched in parallel which monitors the memory-fence status and reports
back through a mailbox/doorbell, or the CPU-side driver enqueues kqueue
work for $n milliseconds' time to check the value in memory and kill the
context if it doesn't meet expectations - whatever. I don't believe any of
those choices meaningfully impact on kernel driver complexity relative to
the initial proposal, but they do allow us to continue to provide the
guarantees we do today when buffers cross security boundaries.

There might well be an argument for significantly weakening those security
boundaries and shifting the complexity from the DRM scheduler into
userspace compositors. So far though, I have yet to see that argument made
coherently.

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
On Tue, 20 Apr 2021 at 19:00, Christian König <
ckoenig.leichtzumer...@gmail.com> wrote:

> Am 20.04.21 um 19:44 schrieb Daniel Stone:
>
> But winsys is something _completely_ different. Yes, you're using the GPU
> to do things with buffers A, B, and C to produce buffer Z. Yes, you're
> using vkQueuePresentKHR to schedule that work. Yes, Mutter's composition
> job might depend on a Chromium composition job which depends on GTA's
> render job which depends on GTA's compute job which might take a year to
> complete. Mutter's composition job needs to complete in 'reasonable'
> (again, FSVO) time, no matter what. The two are compatible.
>
> How? Don't lump them together. Isolate them aggressively, and
> _predictably_ in a way that you can reason about.
>
> What clients do in their own process space is their own business. Games
> can deadlock themselves if they get wait-before-signal wrong. Compute jobs
> can run for a year. Their problem. Winsys is not that, because you're
> crossing every isolation boundary possible. Process, user, container, VM -
> every kind of privilege boundary. Thus far, dma_fence has protected us from
> the most egregious abuses by guaranteeing bounded-time completion; it also
> acts as a sequencing primitive, but from the perspective of a winsys person
> that's of secondary importance, which is probably one of the bigger
> disconnects between winsys people and GPU driver people.
>
>
> Finally somebody who understands me :)
>
> Well the question is then how do we get winsys and your own process space
> together then?
>

It's a jarring transition. If you take a very narrow view and say 'it's all
GPU work in shared buffers so it should all work the same', then
client<->winsys looks the same as client<->client gbuffer. But this is a
trap.

Just because you can mmap() a file on an NFS server in New Zealand doesn't
mean that you should have the same expectations of memory access to that
file as you do to of a pointer from alloca(). Even if the primitives look
the same, you are crossing significant boundaries, and those do not come
without a compromise and a penalty.


> Anyway, one of the great things about winsys (there are some! trust me) is
> we don't need to be as hopelessly general as for game engines, nor as
> hyperoptimised. We place strict demands on our clients, and we literally
> kill them every single time they get something wrong in a way that's
> visible to us. Our demands on the GPU are so embarrassingly simple that you
> can run every modern desktop environment on GPUs which don't have unified
> shaders. And on certain platforms who don't share tiling formats between
> texture/render-target/scanout ... and it all still runs fast enough that
> people don't complain.
>
>
> Ignoring everything below since that is the display pipeline I'm not
> really interested in. My concern is how to get the buffer from the client
> to the server without allowing the client to get the server into trouble?
>
> My thinking is still to use timeouts to acquire texture locks. E.g. when
> the compositor needs to access texture it grabs a lock and if that lock
> isn't available in less than 20ms whoever is holding it is killed hard and
> the lock given to the compositor.
>
> It's perfectly fine if a process has a hung queue, but if it tries to send
> buffers which should be filled by that queue to the compositor it just gets
> a corrupted window content.
>

Kill the client hard. If the compositor has speculatively queued sampling
against rendering which never completed, let it access garbage. You'll have
one frame of garbage (outdated content, all black, random pattern; the
failure mode is equally imperfect, because there is no perfect answer),
then the compositor will notice the client has disappeared and remove all
its resources.

It's not possible to completely prevent this situation if the compositor
wants to speculatively pipeline work, only ameliorate it. From a
system-global point of view, just expose the situation and let it bubble
up. Watch the number of fences which failed to retire in time, and destroy
the context if there are enough of them (maybe 1, maybe 100). Watch the
number of contexts the file description get forcibly destroyed, and destroy
the file description if there are enough of them. Watch the number of
descriptions which get forcibly destroyed, and destroy the process if there
are enough of them. Watch the number of processes in a cgroup/pidns which
get forcibly destroyed, and destroy the ... etc. Whether it's the DRM
driver or an external monitor such as systemd/Flatpak/podman/Docker doing
that is pretty immaterial, as long as the concept of failure bubbling up
remains.

(20ms is objectively the wrong answer FWIW, because we're not a hard RTOS.
But if our biggest point of disagreeme

Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
On Tue, 20 Apr 2021 at 17:25, Marek Olšák  wrote:

> Daniel, imagine hardware that can only do what Windows does: future fences
> signalled by userspace whenever userspace wants, and no kernel queues like
> we have today.
>
> The only reason why current AMD GPUs work is because they have a ring
> buffer per queue with pointers to userspace command buffers followed by
> fences. What will we do if that ring buffer is removed?
>

I can totally imagine that; memory fences are clearly a reality and we need
to make them work for functionality as well as performance. Let's imagine
that winsys joins that flying-car future of totally arbitrary sync, that we
work only on memory fences and nothing else, and that this all happens by
the time we're all vaccinated and can go cram into a room with 8000
other people at FOSDEM instead of trying to do this over email.

But the first couple of sentences of your proposal has the kernel
monitoring those synchronisation points to ensure that they complete in
bounded time. That already _completely_ destroys the purity of the simple
picture you paint. Either there are no guarantees and userspace has to
figure it out, or there are guarantees and we have to compromise that
purity.

I understand how you arrived at your proposal from your perspective as an
extremely skilled driver developer who has delivered gigantic performance
improvements to real-world clients. As a winsys person with a very
different perspective, I disagree with you on where you are drawing the
boundaries, to the point that I think your initial proposal is worse than
useless; doing glFinish() or the VkFence equivalent in clients would be
better in most cases than the first mail.

I don't want to do glFinish (which I'm right about), and you don't want to
do dma_fence (which you're right about). So let's work together to find a
middle ground which we're both happy with. That middle ground does exist,
and we as winsys people are happy to eat a significant amount of pain to
arrive at that middle ground. Your current proposal is at once too gentle
on the winsys, and far too harsh on it. I only want to move where and how
those lines are drawn, not to pretend that all the world is still a
single-context FIFO execution engine.

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
Hi,

On Tue, 20 Apr 2021 at 16:46, Jason Ekstrand  wrote:

> It's still early in the morning here and I'm not awake yet so sorry if
> this comes out in bits and pieces...
>

No problem, it's helpful. If I weren't on this thread I'd be attempting to
put together a 73-piece chest of drawers whose instructions are about as
clear as this so far, so I'm in the right head space anyway.


> IMO, there are two problems being solved here which are related in
> very subtle and tricky ways.  They're also, admittedly, driver
> problems, not really winsys problems.  Unfortunately, they may have
> winsys implications.
>

Yeah ... bingo.


> First, is better/real timelines for Vulkan and compute.  [...]
>
> We also want something like this for compute workloads.  [...]
>

Totally understand and agree with all of this. Memory fences seem like a
good and useful primitive here.


> The second biting issue is that, in the current kernel implementation
> of dma-fence and dma_resv, we've lumped internal synchronization for
> memory management together with execution synchronization for
> userspace dependency tracking.  And we have no way to tell the
> difference between the two internally.  Even if user space is passing
> around sync_files and trying to do explicit sync, once you get inside
> the kernel, they're all dma-fences and it can't tell the difference.
>

Funny, because 'lumped [the two] together' is exactly the crux of my issues
...


> If we move


Stop here, because ...


> to a more userspace-controlled synchronization model with
> wait-before-signal and no timeouts unless requested, regardless of the
> implementation, it plays really badly dma-fence.  And, by "badly" I
> mean the two are nearly incompatible.


I would go further than that, and say completely, fundamentally,
conceptually, incompatible.


> From a user space PoV, it means
> it's tricky to provide the finite time dma-fence guarantee.  From a
> kernel PoV, it's way worse.  Currently, the way dma-fence is
> constructed, it's impossible to deadlock assuming everyone follows the
> rules.  The moment we allow user space to deadlock itself and allow
> those deadlocks to leak into the kernel, we have a problem.  Even if
> we throw in some timeouts, we still have a scenario where user space
> has one linearizable dependency graph for execution synchronization
> and the kernel has a different linearizable dependency graph for
> memory management and, when you smash them together, you may have
> cycles in your graph.
>
> So how do we sort this all out?  Good question.  It's a hard problem.
> Probably the hardest problem here is the second one: the intermixing
> of synchronization types.  Solving that one is likely going to require
> some user space re-plumbing because all the user space APIs we have
> for explicit sync are built on dma-fence.
>

Gotcha.

Firstly, let's stop, as you say, lumping things together. Timeline
semaphores and compute's GPU-side spinlocks etc, are one thing. I accept
those now have a hard requirement on something like memory fences, where
any responsibility is totally abrogated. So let's run with that in our
strawman: Vulkan compute & graphics & transfer queues all degenerate to
something spinning (hopefully GPU-assisted gentle spin) on a uint64
somewhere. The kernel has (in the general case) no visibility or
responsibility into these things. Fine - that's one side of the story.

But winsys is something _completely_ different. Yes, you're using the GPU
to do things with buffers A, B, and C to produce buffer Z. Yes, you're
using vkQueuePresentKHR to schedule that work. Yes, Mutter's composition
job might depend on a Chromium composition job which depends on GTA's
render job which depends on GTA's compute job which might take a year to
complete. Mutter's composition job needs to complete in 'reasonable'
(again, FSVO) time, no matter what. The two are compatible.

How? Don't lump them together. Isolate them aggressively, and _predictably_
in a way that you can reason about.

What clients do in their own process space is their own business. Games can
deadlock themselves if they get wait-before-signal wrong. Compute jobs can
run for a year. Their problem. Winsys is not that, because you're crossing
every isolation boundary possible. Process, user, container, VM - every
kind of privilege boundary. Thus far, dma_fence has protected us from the
most egregious abuses by guaranteeing bounded-time completion; it also acts
as a sequencing primitive, but from the perspective of a winsys person
that's of secondary importance, which is probably one of the bigger
disconnects between winsys people and GPU driver people.

Anyway, one of the great things about winsys (there are some! trust me) is
we don't need to be as hopelessly general as for game engines, nor as
hyperoptimised. We place strict demands on our clients, and we literally
kill them every single time they get something wrong in a way that's
visible to us. Our demands on the GPU are so 

Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
Hi,

On Tue, 20 Apr 2021 at 16:16, Christian König <
ckoenig.leichtzumer...@gmail.com> wrote:

> Am 20.04.21 um 17:07 schrieb Daniel Stone:
>
> If the compositor no longer has a guarantee that the buffer will be ready
> for composition in a reasonable amount of time (which dma_fence gives us,
> and this proposal does not appear to give us), then the compositor isn't
> trying to use the buffer for compositing, it's waiting asynchronously on a
> notification that the fence has signaled before it attempts to use the
> buffer.
>
> Marek's initial suggestion is that the kernel signal the fence, which
> would unblock composition (and presumably show garbage on screen, or at
> best jump back to old content).
>
> My position is that the compositor will know the process has crashed
> anyway - because its socket has been closed - at which point we destroy all
> the client's resources including its windows and buffers regardless.
> Signaling the fence doesn't give us any value here, _unless_ the compositor
> is just blindly waiting for the fence to signal ... which it can't do
> because there's no guarantee the fence will ever signal.
>
>
> Yeah, but that assumes that the compositor has change to not blindly wait
> for the client to finish rendering and as Daniel explained that is rather
> unrealistic.
>
> What we need is a fallback mechanism which signals the fence after a
> timeout and gives a penalty to the one causing the timeout.
>
> That gives us the same functionality we have today with the in software
> scheduler inside the kernel.
>

OK, if that's the case then I think I'm really missing something which
isn't explained in this thread, because I don't understand what the
additional complexity and API change gains us (see my first reply in this
thread).

By way of example - say I have a blind-but-explicit compositor that takes a
drm_syncobj along with a dmabuf with each client presentation request, but
doesn't check syncobj completion, it just imports that into a VkSemaphore +
VkImage and schedules work for the next frame.

Currently, that generates an execbuf ioctl for the composition (ignore KMS
for now) with a sync point to wait on, and the kernel+GPU scheduling
guarantees that the composition work will not begin until the client
rendering work has retired. We have a further guarantee that this work will
complete in reasonable time, for some value of 'reasonable'.

My understanding of this current proposal is that:
* userspace creates a 'present fence' with this new ioctl
* the fence becomes signaled when a value is written to a location in
memory, which is visible through both CPU and GPU mappings of that page
* this 'present fence' is imported as a VkSemaphore (?) and the userspace
Vulkan driver will somehow wait on this value  either before submitting
work or as a possibly-hardware-assisted GPU-side wait (?)
* the kernel's scheduler is thus eliminated from the equation, and every
execbuf is submitted directly to hardware, because either userspace knows
that the fence has already been signaled, or it will issue a GPU-side wait
(?)
* but the kernel is still required to monitor completion of every fence
itself, so it can forcibly complete, or penalise the client (?)

Lastly, let's say we stop ignoring KMS: what happens for the
render-with-GPU-display-on-KMS case? Do we need to do the equivalent of
glFinish() in userspace and only submit the KMS atomic request when the GPU
work has fully retired?

Clarifying those points would be really helpful so this is less of a
strawman. I have some further opinions, but I'm going to wait until I
understand what I'm actually arguing against before I go too far. :) The
last point is very salient though.

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
On Tue, 20 Apr 2021 at 15:58, Christian König <
ckoenig.leichtzumer...@gmail.com> wrote:

> Am 20.04.21 um 16:53 schrieb Daniel Stone:
>
> On Mon, 19 Apr 2021 at 11:48, Marek Olšák  wrote:
>
>> Deadlock mitigation to recover from segfaults:
>> - The kernel knows which process is obliged to signal which fence. This
>> information is part of the Present request and supplied by userspace.
>> - If the producer crashes, the kernel signals the submit fence, so that
>> the consumer can make forward progress.
>> - If the consumer crashes, the kernel signals the return fence, so that
>> the producer can reclaim the buffer.
>> - A GPU hang signals all fences. Other deadlocks will be handled like GPU
>> hangs.
>>
>
> Another thought: with completely arbitrary userspace fencing, none of this
> is helpful either. If the compositor can't guarantee that a hostile client
> has submitted a fence which will never be signaled, then it won't be
> waiting on it, so it already needs infrastructure to handle something like
> this.
>
>
> That already handles the crashed-client case, because if the client
> crashes, then its connection will be dropped, which will trigger the
> compositor to destroy all its resources anyway, including any pending waits.
>
>
> Exactly that's the problem. A compositor isn't immediately informed that
> the client crashed, instead it is still referencing the buffer and trying
> to use it for compositing.
>

If the compositor no longer has a guarantee that the buffer will be ready
for composition in a reasonable amount of time (which dma_fence gives us,
and this proposal does not appear to give us), then the compositor isn't
trying to use the buffer for compositing, it's waiting asynchronously on a
notification that the fence has signaled before it attempts to use the
buffer.

Marek's initial suggestion is that the kernel signal the fence, which would
unblock composition (and presumably show garbage on screen, or at best jump
back to old content).

My position is that the compositor will know the process has crashed anyway
- because its socket has been closed - at which point we destroy all the
client's resources including its windows and buffers regardless. Signaling
the fence doesn't give us any value here, _unless_ the compositor is just
blindly waiting for the fence to signal ... which it can't do because
there's no guarantee the fence will ever signal.

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
Hi,

On Mon, 19 Apr 2021 at 11:48, Marek Olšák  wrote:

> Deadlock mitigation to recover from segfaults:
> - The kernel knows which process is obliged to signal which fence. This
> information is part of the Present request and supplied by userspace.
> - If the producer crashes, the kernel signals the submit fence, so that
> the consumer can make forward progress.
> - If the consumer crashes, the kernel signals the return fence, so that
> the producer can reclaim the buffer.
> - A GPU hang signals all fences. Other deadlocks will be handled like GPU
> hangs.
>

Another thought: with completely arbitrary userspace fencing, none of this
is helpful either. If the compositor can't guarantee that a hostile client
has submitted a fence which will never be signaled, then it won't be
waiting on it, so it already needs infrastructure to handle something like
this. That already handles the crashed-client case, because if the client
crashes, then its connection will be dropped, which will trigger the
compositor to destroy all its resources anyway, including any pending waits.

GPU hangs also look pretty similar; it's an infinite wait, until the client
resubmits a new buffer which would replace (& discard) the old.

So signal-fence-on-process-exit isn't helpful and doesn't provide any extra
reliability; it in fact probably just complicates things.

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
Hi,

On Tue, 20 Apr 2021 at 13:01, Daniel Vetter  wrote:

> - We live in a post xf86-video-$vendor world, and all these other
>   compositors rely on implicit sync. You're not going to be able to get
>   rid of them anytime soon. What's worse, all the various EGL/vk buffer
>   sharing things also rely on implicit sync, so you get to fix up tons of
>   applications on top. Any plan that's realistic needs to cope with
>   implicit/explicit at the same time together won't work.
>
> - Absolute infuriating, but you can't use page-faulting together with any
>   dma_fence synchronization primitives, whether implicit or explicit. This
>   means until the entire ecosystem moved forward (good luck with that) we
>   have to support dma_fence. The only sync model that works together with
>   page faults is userspace fence based sync.
>
This should get rid of the oversync issues, and since implicit sync is
> backed in everywhere right now, you'll have to deal with implicit sync for
> a very long time.
>

Depends what you mean by 'implicit sync'. ;)

Getting userspace (Vulkan WSI, EGL, Wayland compositors, browsers, media
clients) over to explicit sync is easy, _provided_ that the explicit sync
gives us the same guarantees as implicit sync, i.e. completes in bounded
time, GPU/display work can be flushed to the kernel predicated on fence
completion with the kernel handling synchronisation and scheduling. It's
just a matter of typing, and until now we haven't had a great reason to do
that typing. Now we do have that reason, so we are implementing it. Whether
it's dma_fence or drm_syncobj is mostly immaterial; we can encode in
protocol requirements that you can't try to use wait-before-signal with
drm_syncobj and you'll get killed if you try.

Getting that userspace over to fully userspace-based sync
(wait-before-signal or wait-never-signal, no kernel assistance but you just
have to roll your own polling or signal handling on either CPU or GPU side)
is not easy. It might never happen, because it's an extraordinary amount of
work, introduces a huge amount of fragility into a super-critical path, and
and so far it's not clear that it's a global performance improvement for
the whole system, just shifting performance problems from kernel to
userspace, and probably (AFAICT) making them worse in addition to the other
problems it brings.

What am I missing?

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


Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal

2021-04-20 Thread Daniel Stone
Hi Marek,

On Mon, 19 Apr 2021 at 11:48, Marek Olšák  wrote:

> *2. Explicit synchronization for window systems and modesetting*
>
> The producer is an application and the consumer is a compositor or a
> modesetting driver.
>
> *2.1. The Present request*
>

So the 'present request' is an ioctl, right? Not a userspace construct like
it is today? If so, how do we correlate the two?

The terminology is pretty X11-centric so I'll assume that's what you've
designed against, but Wayland and even X11 carry much more auxiliary
information attached to a present request than just 'this buffer, this
swapchain'. Wayland latches a lot of data on presentation, including
non-graphics data such as surface geometry (so we can have resizes which
don't suck), window state (e.g. fullscreen or not, also so we can have
resizes which don't suck), and these requests can also cascade through a
tree of subsurfaces (so we can have embeds which don't suck). X11 mostly
just carries timestamps, which is more tractable.

Given we don't want to move the entirety of Wayland into kernel-visible
objects, how do we synchronise the two streams so they aren't incoherent?
Taking a rough stab at it whilst assuming we do have
DRM_IOCTL_NONMODE_PRESENT, this would create a present object somewhere in
kernel space, which the producer would create and ?? export a FD from, that
the compositor would ?? import.

As part of the Present request, the producer will pass 2 fences (sync
> objects) to the consumer alongside the presented DMABUF BO:
> - The submit fence: Initially unsignalled, it will be signalled when the
> producer has finished drawing into the presented buffer.
>

We have already have this in Wayland through dma_fence. I'm relaxed about
this becoming drm_syncobj or drm_newmappedysncobjthing, it's just a matter
of typing. X11 has patches to DRI3 to support dma_fence, but they never got
merged because it was far too invasive to a server which is no longer
maintained.


> - The return fence: Initially unsignalled, it will be signalled when the
> consumer has finished using the presented buffer.
>

Currently in Wayland the return fence (again a dma_fence) is generated by
the compositor and sent as an event when it's done, because we can't have
speculative/empty/future fences. drm_syncobj would make this possible, but
so far I've been hesitant because I don't see the benefit to it (more
below).


> Deadlock mitigation to recover from segfaults:
> - The kernel knows which process is obliged to signal which fence. This
> information is part of the Present request and supplied by userspace.
>

Same as today with dma_fence. Less true with drm_syncobj if we're using
timelines.


> - If the producer crashes, the kernel signals the submit fence, so that
> the consumer can make forward progress.
>

This is only a change if the producer is now allowed to submit a fence
before it's flushed the work which would eventually fulfill that fence.
Using dma_fence has so far isolated us from this.


> - If the consumer crashes, the kernel signals the return fence, so that
> the producer can reclaim the buffer.
>

'The consumer' is problematic, per below. I think the wording you want is
'if no references are held to the submitted present object'.


> - A GPU hang signals all fences. Other deadlocks will be handled like GPU
> hangs.
>
> Other window system requests can follow the same idea.
>

Which other window system requests did you have in mind? Again, moving the
entirety of Wayland's signaling into the kernel is a total non-starter.
Partly because it means our entire protocol would be subject to the
kernel's ABI rules, partly because the rules and interdependencies between
the requests are extremely complex, but mostly because the kernel is just a
useless proxy: it would be forced to do significant work to reason about
what those requests do and when they should happen, but wouldn't be able to
make those decisions itself so would have to just punt everything to
userspace. Unless we have eBPF compositors.


> Merged fences where one fence object contains multiple fences will be
> supported. A merged fence is signalled only when its fences are signalled.
> The consumer will have the option to redefine the unsignalled return fence
> to a merged fence.
>

An elaboration of how this differed from drm_syncobj would be really
helpful here. I can make some guesses based on the rest of the mail, but
I'm not sure how accurate they are.


> *2.2. Modesetting*
>
> Since a modesetting driver can also be the consumer, the present ioctl
> will contain a submit fence and a return fence too. One small problem with
> this is that userspace can hang the modesetting driver, but in theory, any
> later present ioctl can override the previous one, so the unsignalled
> presentation is never used.
>

This is also problematic. It's not just KMS, but media codecs too - V4L
doesn't yet have explicit fencing, but given the programming model of
codecs and how deeply they interoperate, but 

Re: [Mesa-dev] piglit default main branch results - Re: Rename "master" branch to "main"?

2021-03-29 Thread Daniel Stone
On Tue, 30 Mar 2021 at 01:34, Ilia Mirkin  wrote:

> https://cgit.freedesktop.org/piglit
>
> This still displays the "master" branch by default. I think you're
> supposed to change ... something ... in the repo, which indicates
> which is the default branch.
>

*jedi handwave* no it doesn't


> On Mon, Mar 29, 2021 at 8:31 PM Jordan Justen 
> wrote:
> > I have only seen one issue so far for the piglit default branch
> > change. It appears that the piglit patchwork scripting isn't
> > configured for the main branch. I think it's long past time to retire
> > the piglit patchwork, so I made a request to the admins to do that. I
> > think Mesa already retired patchwork.


*jedi handwave* it was always retired, nothing to see here, move along
please

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


Re: [Mesa-dev] docs: consistent language

2021-03-16 Thread Daniel Stone
On Tue, 16 Mar 2021 at 13:08, Jason Ekstrand  wrote:

> On March 16, 2021 05:06:53 Daniel Stone  wrote:
>
>> On Mon, 15 Mar 2021 at 20:54, Jason Ekstrand 
>> wrote:
>>
>>> Three comments:
>>>
>>>  1. +1
>>>  2. Khronos has generally standardized on American English in their
>>> specs so I guess that provides some sort of prior art or something.
>>>  3. I'd generally be a fan of encouraging American spellings in common
>>> code as well.  As someone who doesn't use auto-complete, having to
>>> remember which variable is named "color" and which is "colour" would
>>> get painful.  Fortunately, we don't have a whole lot of variation here
>>> but it'd be good to keep consistency.
>>
>>
>> 4. UK English is unarguably correct and better.
>>
>
> 
>
> 5. That doesn't change point #3 in particular; just like coding style, one
>> 'bad' choice is better than no choice at all.
>>
>
> I have three words for you: three space tabs.  Yeah... It may be a good
> style but consistency is good. 浪
>

Absolutely. Apparently I forgot to write the final line which is that I
think standardising on US English across the board is a good thing, even
though I personally like it about as much as three-space tabs. As you can
see from the previous sentence. ;) So, +1 from me too.

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


Re: [Mesa-dev] docs: consistent language

2021-03-16 Thread Daniel Stone
On Mon, 15 Mar 2021 at 20:54, Jason Ekstrand  wrote:

> Three comments:
>
>  1. +1
>  2. Khronos has generally standardized on American English in their
> specs so I guess that provides some sort of prior art or something.
>  3. I'd generally be a fan of encouraging American spellings in common
> code as well.  As someone who doesn't use auto-complete, having to
> remember which variable is named "color" and which is "colour" would
> get painful.  Fortunately, we don't have a whole lot of variation here
> but it'd be good to keep consistency.


4. UK English is unarguably correct and better.
5. That doesn't change point #3 in particular; just like coding style, one
'bad' choice is better than no choice at all.

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


Re: [Mesa-dev] Rust drivers in Mesa

2020-10-02 Thread Daniel Stone
Hi,

On Fri, 2 Oct 2020 at 08:31, Kristian Kristensen  wrote:
> On Fri, Oct 2, 2020 at 8:14 AM Dave Airlie  wrote:
>> My feeling is the pieces that would benefit the most are the things
>> touch the real world, GLSL compiler, SPIR-V handling, maybe some of
>> the GL API space, but I also feel these are the messiest things to
>> move to rust. I'm not sure you'd get much benefit from vulkan API
>> space or touching kernel interfaces as much. Granted a backend
>> compiler might be the easiest place to experiment.
>>
>> I think the problem is you really want to justify that whatever you
>> introduce using rust is sufficiently better along any axis than c/c++
>> to justify the enhanced build time requirements and maintenance,
>> otherwise someone will just rewrite it in C/C++ to avoid having to
>> pull a rust compiler into their distro requires.
>
>
> Just as a data point, in ChromeOS we already build core parts of the OS with 
> rust. Our hypervisor (crosvm) is written in rust and using rust is generally 
> encouraged. That's just one distro, of course, but my sense is that rust 
> isn't going away - parts of GNOME are moving to rust as well - and it's a 
> good fit for a project like mesa. If we could agree that a rust dependency in 
> a gallium backend isn't any worse than a C++ backend (not talking about 
> subjective qualities of the languages, just build time deps), then it's not 
> so much a matter of "justifying" the use of rust, but a developer preference. 
> When we write a new compiler backend in modern C++, I don't think that 
> there's unanimous agreement that that's better than C along all axises, so 
> it's a bit of a high bar to raise for rust.
>
> I would also worry less about which components supposedly would theoretically 
> benefit the most from being written in rust. The GLSL front might be better 
> in rust, but rewriting it is a big investment and will introduce more bugs 
> and regressions before it gets to that hypothetical ideal state, for a 
> codebase that's otherwise in stasis. I think it makes more sense to apply the 
> benefits of rust to live code - code that we work on and write every day, 
> since that way we get to actually benefit from the features of the language. 
> I'm in favor of figuring out how to integrate rust code in mesa and maybe 
> rewrite a small helper library or binary to rust or incrementally start 
> converting a compiler backend or driver.

Yep. Before we can land a single bit of code, we need to do a bunch of
annoying things like build-system integration, FFI bridging, agreeing
on conventions and style, etc etc. Trying to do that whilst also
replacing the GLSL compiler or vtn is way too much; it's 100% doomed
to failure, even if they're the highest-value targets on some axes.

If you start with a leaf node somewhere greenfield (like a new Vulkan
driver, or a new experimental backend), it makes it much easier to
approach, because you've cut down on the number of moving parts (e.g.
maintaining APIs in two directions), you don't have to replace
something which already exists and people don't want to regress, and
it also allows people who don't really care about it to ignore it
until you've got all the impedance mismatches and teething pain
figured out. After that you'll have a reasonable template for how you
bridge the two language worlds and how you handle particular patterns,
which others can replicate and improve on, than having to bridge the
entire codebase in one go just to get anything working.

But even then, there's a lot more to Rust than 'woo now everything is
secure'. Complex state trackers like the GL API implementation could
get a bunch of help from the type system; things like backends can get
a lot smaller as collect/iterate/match/transform is much better
supported by the language than it is in C. So the benefit in that
case, apart from developer ergonomy of not having to write the same
trivial patterns over and over again, is that the important parts of
code becomes a lot easier to reason about.

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


Re: [Mesa-dev] Rename "master" branch to "main"?

2020-08-04 Thread Daniel Stone
Hi,

On Mon, 3 Aug 2020 at 17:16, Jason Ekstrand  wrote:
> On Mon, Aug 3, 2020 at 11:12 AM Kenneth Graunke  wrote:
> > Seems reasonable to me...in the old Subversion days, we called it
> > 'trunk'...then 'master' with Git...but calling the main development
> > branch 'main' is arguably the simplest and most descriptive term.
> >
> > One thing we'll have to coordinate: getting Gitlab CI / Marge and the
> > Intel Mesa CI to switch over at the right time, so we don't end up
> > breaking/interrupting those services.  Should be easy, just requires
> > a bit of coordination.
>
> Yup, I threw Daniel onto the CC of this e-mail explicitly for that
> reason.  We may also want to coordinate with the rest of fd.o so that
> everyone chooses the same new mainline branch name.  I just added
> Michel to the CC as he's doing lots of CI stuff and might be a good
> person to help coordinate there.  I certainly don't want to pull the
> rug out from under anyone.

That's fine by me. I think 'main' is a perfectly fine name, and we'd
be happy to encode that in whatever useful way. I suppose the main
problem with a global nature is the very disparate nature of the
projects - getting everyone to move at once before we throw the switch
would require a great deal of effort. But we can figure it out.

As for retargeting MRs; if it can be done manually, then it can be
done automatically as well. We can figure out a way to just
automatically retarget all the outstanding MRs, but a couple of weeks'
leadtime would be good right now.

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


Re: [Mesa-dev] New Mesa3D.org website proposal

2020-06-14 Thread Daniel Stone
Hi,

On Fri, 29 May 2020 at 10:08, Erik Faye-Lund
 wrote:
> In the light of the explanation above, do you still have objections to
> this split?
>
> Obviously, we haven't moved forward yet ;-)

Well, we have now after getting some agreement. Please enjoy your
shiny new https://www.mesa3d.org and https://docs.mesa3d.org
experience.

Brian, could you please change the DNS for mesa3d.org and
www.mesa3d.org to point to 35.227.58.183? No need to change
archive.mesa3d.org, that should still point to the old site.

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


Re: [Mesa-dev] New Mesa3D.org website proposal

2020-05-13 Thread Daniel Stone
Hi,
I'm generally ambivalent on which day it moves, though depending on
how late in the day it comes out, it might not actually be Thursday -
if the release comes out late at night, I'm more likely to finish up
the migration over the weekend.

On Wed, 13 May 2020 at 13:43, Brian Paul  wrote:
> On 05/13/2020 03:13 AM, Erik Faye-Lund wrote:
> > 2. Some people have been asking me why the website is set up as a
> > separate repo rather than a subdirectory inside the main mesa repo.
> >
> > The quick answer to that is that it seemed more logical that way to me.
> > The website isn't really tied to the mesa release-schedule, apart from
> > linking to new releases. It's really its own thing. We might for
> > instance want to post updates when other projects in the mesa-group
> > cuts a release. So this seems to give us some more freedom.
> >
> > If someone has good arguments against this, I'm open to changing it.
> > But this seems like the best option to me.
>
> I'd really like to keep the Mesa content as part of the main Mesa repo.
> I didn't realize you did that.  The website is part of the project and
> it's more convenient to have it all in one place.

It's a fair point, but then there's the ageing issue with branches. If
someone is working against the 19.3.x repo, they'll see a snapshot of
the website at a pretty arbitrary point in time - whenever it was that
it was forked. That doesn't sound ideal to me, nor does the alternate
idea of picking back all the content to all our live branches (e.g.
when we do a 20.0.x stable release, cherry-pick the news-page update
to 19.3.x?).

There's also a circular dependency issue related to publishing
releases: it seems odd to commit and tag a release, then have the very
next commit be the update to the page, which you can't do in one as
you don't know the SHA before you commit.

Code information and documentation _definitely_ belongs with the Mesa
project though. Things like the Gallium3D documentation published out
to ReadTheDocs should be maintained in with the code and generated
with the code - and this should be extended through the whole Mesa
source tree, so we have much better live docs of our codebase. I've
been working with Erik to figure out how we can best get this
published alongside the main website.

We absolutely shouldn't be putting up any barriers to keeping the
website updated and making sure we have good contributions to it,
though. I think putting it in a separate repo actually makes it
slightly easier if anything, provided that we have a good set of
reviewers keeping eyes on it, and clear instructions on how to
contribute to it.

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


Re: [Mesa-dev] New Mesa3D.org website proposal

2020-05-12 Thread Daniel Stone
Hi Brian,

On Fri, 8 May 2020 at 15:30, Brian Paul  wrote:
> Done.  easydns says it may take up to 3 hours to go into effect.

Thanks for doing this! Could you please add the following TXT records
as well (note that they're FQDN, so you might want to chop the
trailing '.mesa3d.org' from the first segment:
_gitlab-pages-verification-code.mesa3d.org TXT
gitlab-pages-verification-code=e8a33eb47c034b08afd339cb3a801d88
_gitlab-pages-verification-code.www.mesa3d.org TXT
gitlab-pages-verification-code=28d457c44c75d4a1e460243ded2b4311
_gitlab-pages-verification-code.docs.mesa3d.org TXT
gitlab-pages-verification-code=6045fd12252cc01f5891fa3f81b140fe

archive.mesa3d.org is now live, but I'll be in touch with you to cut
over the main website once we've done some more infrastructure
transitional things: moving websites with live TLS is somewhat
difficult ...

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


Re: [Mesa-dev] New Mesa3D.org website proposal

2020-05-07 Thread Daniel Stone
Hi,

On Thu, 7 May 2020 at 18:08, Erik Faye-Lund
 wrote:
> On Thu, 2020-05-07 at 11:03 -0600, Brian Paul wrote:
> > It seems like only the front page is served at the moment.  Is it
> > possible to get a look at the rest?  The front page looks nice.
>
> Yeah, we need to set up docs.mesa3d.org first. I haven't bothered
> setting up the temporary URLs yet, but my current preview is hosted
> here:

After the nginx infrastructure work over the past few weeks, we can
now actually set up redirects. So I think the better thing would be to
assume this will be www.mesa3d.org hosted on Pages, then have
redirects over for tarball downloads.

Brian, could you please add a DNS entry for archive.mesa3d.org as a
CNAME to annarchy.freedesktop.org, and docs.mesa3d.org as a CNAME to
gitlab.freedesktop.org? If you can do that, I'll get the archive
hosting set up separately, then when we're ready we can cut over
www.mesa3d.org and mesa3d.org to Pages.

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


Re: [Mesa-dev] Drop scons for 20.1?

2020-03-24 Thread Daniel Stone
Hi,

On Tue, 25 Feb 2020 at 23:42, Kristian Høgsberg  wrote:
> It's been a while since Dylan did the work to make meson support
> Windows and there's been plenty of time to provide feedback or improve
> argue why we still need scons. I haven't seen any such discussion and
> I think we've waited long enough.

Dylan's work didn't get enabled by default, and also depended on
Windows runners having a system environment set up. Taking a little
bit of work from the GStreamer side, I wrote a native Windows VS2019
CI which also uses Docker to build in:
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4304

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


Re: [Mesa-dev] Plumbing explicit synchronization through the Linux ecosystem

2020-03-16 Thread Daniel Stone
Hi,

On Mon, 16 Mar 2020 at 15:33, Tomek Bury  wrote:
> > GL and GLES are not relevant. What is relevant is EGL, which defines
> > interfaces to make things work on the native platform.
> Yes and no. This is what EGL spec says about sharing a texture between 
> contexts:

Contexts are different though ...

> There are similar statements with regards to the lack of
> synchronisation guarantees for EGL images or between GL and native
> rendering, etc.

This also isn't about native rendering.

> But the main thing here is that EGL and Vulkan differ
> significantly.

Sure, I totally agree.

> The eglSwapBuffers() is expected to post an unspecified
> "back buffer" to the display system using some internal driver magic.
> EGL driver is then expected to obtain another back buffer at some
> unspecified point in the future.

Yes, this is rather the point: EGL doesn't specify platform-related
'black magic' to make things just work, because that's part of the
platform implementation details. And, as things stand, on Linux one of
those things is implicit synchronisation, unless the desired end state
of your driver is no synchronisation.

This thread is a discussion about changing that.

> > If you are using EGL_WL_bind_wayland_display, then one of the things
> > it is explicitly allowed/expected to do is to create a Wayland
> > protocol interface between client and compositor, which can be used to
> > pass buffer handles and metadata in a platform-specific way. Adding
> > synchronisation is also possible.
> Only one-way synchronisation is possible with this mechanism. There's
> a standard protocol for recycling buffers - wl_buffer_release() so
> buffer hand-over from the compositor to client remains unsynchronised
> - see below.

That's not true; you can post back a sync token every time the client
buffer is used by the compositor.

> > > The most troublesome part was Wayland buffer release mechanism, as it 
> > > only involves a CPU signalling over Wayland IPC, without any 3D driver 
> > > involvement. The choices were: explicit synchronisation extension or a 
> > > buffer copy in the compositor (i.e. compositor textures from the copy, so 
> > > the client can re-write the original), or some implicit synchronisation 
> > > in kernel space (but that wasn't an option in Broadcom driver).
> >
> > You can add your own explicit synchronisation extension.
> I could but that requires implementing in in the driver and in a
> number of compositors, therefore a standard extension
> zwp_linux_explicit_synchronization_v1 is much better choice here than
> a custom one.

EGL_WL_bind_wayland_display is explicitly designed to allow each
driver to implement its own private extensions without modifying
compositors. For instance, Mesa adds the `wl_drm` extension, which is
used for bidirectional communication between the EGL implementations
in the client and compositor address spaces, without modifying either.

> > In every cross-process and cross-subsystem usecase, synchronisation is
> > obviously required. The two options for this are to implement kernel
> > support for implicit synchronisation (as everyone else has done),
> That would require major changes in driver architecture or a 2nd
> mechanisms doing the same thing but in kernel space - both are
> non-starters.

OK. As it stands, everyone else has the kernel mechanism (e.g. via
dmabuf resv), so in this case if you are reinventing the underlying
platform in a proprietary stack, you get to solve the same problems
yourselves.

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


Re: [Mesa-dev] Plumbing explicit synchronization through the Linux ecosystem

2020-03-16 Thread Daniel Stone
Hi Tomek,

On Mon, 16 Mar 2020 at 12:55, Tomek Bury  wrote:
> I've been wrestling with the sync problems in Wayland some time ago, but only 
> with regards to 3D drivers.
>
> The guarantee given by the GL/GLES spec is limited to a single graphics 
> context. If the same buffer is accessed by 2 contexts the outcome is 
> unspecified. The cross-context and cross-process synchronisation is not 
> guaranteed. It happens to work on Mesa, because the read/write locking is 
> implemented in the kernel space, but it didn't work on Broadcom driver, which 
> has read-write interlocks in user space.

GL and GLES are not relevant. What is relevant is EGL, which defines
interfaces to make things work on the native platform. EGL doesn't
define any kind of synchronisation model for the Wayland, X11, or
GBM/KMS platforms - but it's one of the things which has to work. It
doesn't say that the implementation must make sure that the requested
format is displayable, but you sort of take it for granted that if you
ask EGL to display something it will do so.

Synchronisation is one of those mechanisms which is left to the
platform to implement under the hood. In the absence of platform
support for explicit synchronisation, the synchronisation must be
implicit.

>  A Vulkan client makes it even worse because of conflicting requirements: 
> Vulkan's vkQueuePresentKHR() passes in a number of semaphores but disallows 
> waiting. Wayland WSI requires wl_surface_commit() to be called from 
> vkQueuePresentKHR() which does require a wait, unless a synchronisation 
> primitive representing Vulkan samaphores is passed between Vulkan client and 
> the compositor.

If you are using EGL_WL_bind_wayland_display, then one of the things
it is explicitly allowed/expected to do is to create a Wayland
protocol interface between client and compositor, which can be used to
pass buffer handles and metadata in a platform-specific way. Adding
synchronisation is also possible.

> The most troublesome part was Wayland buffer release mechanism, as it only 
> involves a CPU signalling over Wayland IPC, without any 3D driver 
> involvement. The choices were: explicit synchronisation extension or a buffer 
> copy in the compositor (i.e. compositor textures from the copy, so the client 
> can re-write the original), or some implicit synchronisation in kernel space 
> (but that wasn't an option in Broadcom driver).

You can add your own explicit synchronisation extension.

In every cross-process and cross-subsystem usecase, synchronisation is
obviously required. The two options for this are to implement kernel
support for implicit synchronisation (as everyone else has done), or
implement generic support for explicit synchronisation (as we have
been working on with implementations inside Weston and Exosphere at
least), or implement private support for explicit synchronisation, or
do nothing and then be surprised at the lack of synchronisation.

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


Re: [Mesa-dev] gitlab.fd.o financial situation and impact on services

2020-02-28 Thread Daniel Stone
Hi Jan,

On Fri, 28 Feb 2020 at 10:09, Jan Engelhardt  wrote:
> On Friday 2020-02-28 08:59, Daniel Stone wrote:
> >I believe that in January, we had $2082 of network cost (almost
> >entirely egress; ingress is basically free) and $1750 of
> >cloud-storage cost (almost all of which was download). That's based
> >on 16TB of cloud-storage (CI artifacts, container images, file
> >uploads, Git LFS) egress and 17.9TB of other egress (the web service
> >itself, repo activity). Projecting that out [×12 for a year] gives
> >us roughly $45k of network activity alone,
>
> I had come to a similar conclusion a few years back: It is not very
> economic to run ephemereal buildroots (and anything like it) between
> two (or more) "significant locations" of which one end is located in
> a Large Cloud datacenter like EC2/AWS/etc.
>
> As for such usecases, me and my surrounding peers have used (other)
> offerings where there is 50 TB free network/month, and yes that may
> have entailed doing more adminning than elsewhere - but an admin
> appreciates $2000 a lot more than a corporation, too.

Yes, absolutely. For context, our storage & network costs have
increased >10x in the past 12 months (~$320 Jan 2019), >3x in the past
6 months (~$1350 July 2019), and ~2x in the past 3 months (~$2000 Oct
2019).

I do now (personally) think that it's crossed the point at which it
would be worthwhile paying an admin to solve the problems that cloud
services currently solve for us - which wasn't true before. Such an
admin could also deal with things like our SMTP delivery failure rate,
which in the past year has spiked over 50% (see previous email),
demand for new services such as Discourse which will enable user
support without either a) users having to subscribe to a mailing list,
or b) bug trackers being cluttered up with user requests and other
non-bugs, etc.

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


Re: [Mesa-dev] [Intel-gfx] gitlab.fd.o financial situation and impact on services

2020-02-28 Thread Daniel Stone
On Fri, 28 Feb 2020 at 10:06, Erik Faye-Lund
 wrote:
> On Fri, 2020-02-28 at 11:40 +0200, Lionel Landwerlin wrote:
> > Yeah, changes on vulkan drivers or backend compilers should be
> > fairly
> > sandboxed.
> >
> > We also have tools that only work for intel stuff, that should never
> > trigger anything on other people's HW.
> >
> > Could something be worked out using the tags?
>
> I think so! We have the pre-defined environment variable
> CI_MERGE_REQUEST_LABELS, and we can do variable conditions:
>
> https://docs.gitlab.com/ee/ci/yaml/#onlyvariablesexceptvariables
>
> That sounds like a pretty neat middle-ground to me. I just hope that
> new pipelines are triggered if new labels are added, because not
> everyone is allowed to set labels, and sometimes people forget...

There's also this which is somewhat more robust:
https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2569

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


Re: [Mesa-dev] [Intel-gfx] gitlab.fd.o financial situation and impact on services

2020-02-28 Thread Daniel Stone
On Fri, 28 Feb 2020 at 08:48, Dave Airlie  wrote:
> On Fri, 28 Feb 2020 at 18:18, Daniel Stone  wrote:
> > The last I looked, Google GCP / Amazon AWS / Azure were all pretty
> > comparable in terms of what you get and what you pay for them.
> > Obviously providers like Packet and Digital Ocean who offer bare-metal
> > services are cheaper, but then you need to find someone who is going
> > to properly administer the various machines, install decent
> > monitoring, make sure that more storage is provisioned when we need
> > more storage (which is basically all the time), make sure that the
> > hardware is maintained in decent shape (pretty sure one of the fd.o
> > machines has had a drive in imminent-failure state for the last few
> > months), etc.
> >
> > Given the size of our service, that's a much better plan (IMO) than
> > relying on someone who a) isn't an admin by trade, b) has a million
> > other things to do, and c) hasn't wanted to do it for the past several
> > years. But as long as that's the resources we have, then we're paying
> > the cloud tradeoff, where we pay more money in exchange for fewer
> > problems.
>
> Admin for gitlab and CI is a full time role anyways. The system is
> definitely not self sustaining without time being put in by you and
> anholt still. If we have $75k to burn on credits, and it was diverted
> to just pay an admin to admin the real hw + gitlab/CI would that not
> be a better use of the money? I didn't know if we can afford $75k for
> an admin, but suddenly we can afford it for gitlab credits?

s/gitlab credits/GCP credits/

I took a quick look at HPE, which we previously used for bare metal,
and it looks like we'd be spending $25-50k (depending on how much
storage you want to provision, how much room you want to leave to
provision more storage later, how much you care about backups) to run
a similar level of service so that'd put a bit of a dint in your
year-one budget.

The bare-metal hosting providers also add up to more expensive than
you might think, again especially if you want either redundancy or
just backups.

> > Yes, we could federate everything back out so everyone runs their own
> > builds and executes those. Tinderbox did something really similar to
> > that IIRC; not sure if Buildbot does as well. Probably rules out
> > pre-merge testing, mind.
>
> Why? does gitlab not support the model? having builds done in parallel
> on runners closer to the test runners seems like it should be a thing.
> I guess artifact transfer would cost less then as a result.

It does support the model but if every single build executor is also
compiling Mesa from scratch locally, how long do you think that's
going to take?

> > Again, if you want everything to be centrally
> > designed/approved/monitored/controlled, that's a fine enough idea, and
> > I'd be happy to support whoever it was who was doing that for all of
> > fd.o.
>
> I don't think we have any choice but to have someone centrally
> controlling it, You can't have a system in place that lets CI users
> burn largs sums of money without authorisation, and that is what we
> have now.

OK, not sure who it is who's going to be approving every update to
every .gitlab-ci.yml in the repository, or maybe we just have zero
shared runners and anyone who wants to do builds can BYO.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [Intel-gfx] gitlab.fd.o financial situation and impact on services

2020-02-28 Thread Daniel Stone
On Fri, 28 Feb 2020 at 03:38, Dave Airlie  wrote:
> b) we probably need to take a large step back here.
>
> Look at this from a sponsor POV, why would I give X.org/fd.o
> sponsorship money that they are just giving straight to google to pay
> for hosting credits? Google are profiting in some minor way from these
> hosting credits being bought by us, and I assume we aren't getting any
> sort of discounts here. Having google sponsor the credits costs google
> substantially less than having any other company give us money to do
> it.

The last I looked, Google GCP / Amazon AWS / Azure were all pretty
comparable in terms of what you get and what you pay for them.
Obviously providers like Packet and Digital Ocean who offer bare-metal
services are cheaper, but then you need to find someone who is going
to properly administer the various machines, install decent
monitoring, make sure that more storage is provisioned when we need
more storage (which is basically all the time), make sure that the
hardware is maintained in decent shape (pretty sure one of the fd.o
machines has had a drive in imminent-failure state for the last few
months), etc.

Given the size of our service, that's a much better plan (IMO) than
relying on someone who a) isn't an admin by trade, b) has a million
other things to do, and c) hasn't wanted to do it for the past several
years. But as long as that's the resources we have, then we're paying
the cloud tradeoff, where we pay more money in exchange for fewer
problems.

> If our current CI architecture is going to burn this amount of money a
> year and we hadn't worked this out in advance of deploying it then I
> suggest the system should be taken offline until we work out what a
> sustainable system would look like within the budget we have, whether
> that be never transferring containers and build artifacts from the
> google network, just having local runner/build combos etc.

Yes, we could federate everything back out so everyone runs their own
builds and executes those. Tinderbox did something really similar to
that IIRC; not sure if Buildbot does as well. Probably rules out
pre-merge testing, mind.

The reason we hadn't worked everything out in advance of deploying is
because Mesa has had 3993 MRs in the not long over a year since
moving, and a similar number in GStreamer, just taking the two biggest
users. At the start it was 'maybe let's use MRs if you want to but
make sure everything still goes through the list', and now it's
something different. Similarly the CI architecture hasn't been
'designed', so much as that people want to run dEQP and Piglit on
their hardware pre-merge in an open fashion that's actually accessible
to people, and have just done it.

Again, if you want everything to be centrally
designed/approved/monitored/controlled, that's a fine enough idea, and
I'd be happy to support whoever it was who was doing that for all of
fd.o.

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


Re: [Mesa-dev] gitlab.fd.o financial situation and impact on services

2020-02-28 Thread Daniel Stone
Hi Matt,

On Thu, 27 Feb 2020 at 23:45, Matt Turner  wrote:
> We're paying 75K USD for the bandwidth to transfer data from the
> GitLab cloud instance. i.e., for viewing the https site, for
> cloning/updating git repos, and for downloading CI artifacts/images to
> the testing machines (AFAIU).

I believe that in January, we had $2082 of network cost (almost
entirely egress; ingress is basically free) and $1750 of cloud-storage
cost (almost all of which was download). That's based on 16TB of
cloud-storage (CI artifacts, container images, file uploads, Git LFS)
egress and 17.9TB of other egress (the web service itself, repo
activity). Projecting that out gives us roughly $45k of network
activity alone, so it looks like this figure is based on a projected
increase of ~50%.

The actual compute capacity is closer to $1150/month.

> I was not aware that we were being charged for anything wrt GitLab
> hosting yet (and neither was anyone on my team at Intel that I've
> asked). This... kind of needs to be communicated.
>
> A consistent concern put forth when we were discussing switching to
> GitLab and building CI was... how do we pay for it. It felt like that
> concern was always handwaved away. I heard many times that if we
> needed more runners that we could just ask Google to spin up a few
> more. If we needed testing machines they'd be donated. No one
> mentioned that all the while we were paying for bandwidth... Perhaps
> people building the CI would make different decisions about its
> structure if they knew it was going to wipe out the bank account.

The original answer is that GitLab themselves offered to sponsor
enough credit on Google Cloud to get us started. They used GCP
themselves so they could assist us (me) in getting bootstrapped, which
was invaluable. After that, Google's open-source program office
offered to sponsor us for $30k/year, which was I believe last April.
Since then the service usage has increased roughly by a factor of 10,
so our 12-month sponsorship is no longer enough to cover 12 months.

> What percentage of the bandwidth is consumed by transferring CI
> images, etc? Wouldn't 75K USD would be enough to buy all the testing
> machines we need and host them within Google or wherever so we don't
> need to pay for huge amounts of bandwidth?

Unless the Google Cloud Platform starts offering DragonBoards, it
wouldn't reduce our bandwidth usage as the corporate network is
treated separately for egress.

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


Re: [Mesa-dev] Unable to find a matching EGL config on Wayland

2020-01-31 Thread Daniel Stone
Hi Devashish,
It sounds like your application, as well as eglinfo, are not even
trying to use Wayland. Maybe they are autodetecting the platform
incorrectly and trying to use GBM instead. This could perhaps be
solved by setting the $WAYLAND_DISPLAY environment variable to the
name of the socket Weston uses (usually 'wayland-0'). However you
should probably contact The Qt Company for support in using Qt, and
you should contact TI (or your BSP vendor) for support with the
proprietary Imagination EGL/GLES driver.

Cheers,
Daniel

On Fri, 31 Jan 2020 at 08:12, Devashish Tiwari  wrote:
>
> Hello,
>
>
> I have built a simple application using QT & SDL that has a button which 
> opens a preview on clicking, whenever camera (system/usb) is connected to the 
> EVM.
>
> My app successfully receives correct parameters related to camera 
> (resolution, frame rate, frame format) and I have verified it using debug 
> prints. However, when I click on preview button, it crashes and throws error 
> related to EGL.
>
>
> On executing it with gdb, I found out that it is not able to get a valid EGL 
> configuration. The eglChooseConfig function (in SDL_egl.c) doesn't find a 
> matching EGL config and it fails to create a surface and open the preview.
>
> Also, I do not get any "EGL 1.4 Initialised" prints when my app executes. 
> This print, on the contrary, is visible when I run OGLES2ChameleonMan in 
> /usr/bin/SGX/demos/Wayland.
>
>
> On digging further, I found that the "eglinfo" command displays the egl 
> configurations on the terminal.
>
> However, when it returns EGL_BAD_ALLOC on my EVM, if I run it without 
> stopping weston. It runs successfully only after stopping weston. I am 
> assuming this is the reason why my application is not able to find a matching 
> EGL config because it runs over weston.
>
> ---
>
> root@am57xx-evm:/mnt# eglinfo
>
> eglGetConfigs(): 
> == 
> ** EGL config number: 0 EGL vendor string: 
> Imagination Technologies EGL version string: 1.4 build 1.14@3699939 (MAIN) 
> EGL extensions: EGL_IMG_client_api_ogl EGL_KHR_image EGL_KHR_image_base 
> EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image 
> EGL_KHR_gl_renderbuffer_image EGL_KHR_vg_parent_image EGL_IMG_cl_image 
> EGL_KHR_fence_sync EGL_IMG_context_priority EGL_IMG_hibernate_process 
> EGL_IMG_image_plane_attribs EGL_KHR_surfaceless_context EGL_KHR_wait_sync 
> EGL_KHR_create_context EGL_WL_bind_wayland_display 
> EGL_EXT_image_dma_buf_import EGL client APIs are: OpenGL_ES EGL config 
> Attributes: EGL_CONFIG_ID = 0x1 EGL_BUFFER_SIZE = 0x20 EGL_RED_SIZE = 0x8 
> EGL_GREEN_SIZE = 0x8 EGL_BLUE_SIZE = 0x8 EGL_LUMINANCE_SIZE = 0x0 
> EGL_ALPHA_SIZE = 0x8 EGL_ALPHA_MASK_SIZE = 0x0 EGL_BIND_TO_TEXTURE_RGB = 0x1 
> EGL_BIND_TO_TEXTURE_RGBA = 0x1 EGL_COLOR_BUFFER_TYPE = 0x308e EGL_CONFI
 G_CAVEAT = 0x3038 EGL_CONFORMANT = 0x1 EGL_DEPTH_SIZE = 0x18 EGL_LEVEL = 0x0 
EGL_MAX_PBUFFER_WIDTH = 0x1000 EGL_MAX_PBUFFER_HEIGHT = 0x1000 
EGL_MAX_PBUFFER_PIXELS = 0x100 EGL_MAX_SWAP_INTERVAL = 0xa 
EGL_MIN_SWAP_INTERVAL = 0x1 EGL_NATIVE_RENDERABLE = 0x0 EGL_NATIVE_VISUAL_ID = 
0x0 EGL_NATIVE_VISUAL_TYPE = 0x0 EGL_RENDERABLE_TYPE = 0x1 EGL_OPENGL_ES_BIT 
EGL_SAMPLE_BUFFERS = 0x0 EGL_SAMPLES = 0x0 EGL_STENCIL_SIZE = 0x8 
EGL_SURFACE_TYPE = 0x5 EGL_PBUFFER_BIT EGL_WINDOW_BIT EGL_TRANSPARENT_TYPE = 
0x3038 EGL_TRANSPARENT_RED_VALUE = 0x0 EGL_TRANSPARENT_GREEN_VALUE = 0x0 
EGL_TRANSPARENT_BLUE_VALUE = 0x0 Creating Window surface.. PVR:(Error): 
WSEGL_CreateWindowDrawable: Couldn't set CRTC: Permission denied [0, ] Unable 
to create surface egl error 'EGL_BAD_ALLOC' (0x3003)
> ---
>
>
> Does anyone has any idea about this strange behaviour?
>
> Also, Is there any way to run eglinfo command without stopping weston? 
> Because I think my application is polling available egl configurations at the 
> run time, but is not returning anything as it runs over weston.
>
>
> The ldd of my application returns:
>
> ---
>
> root@am57xx-evm:/mnt# ldd cam_preview
> linux-vdso.so.1 (0xbec5)
> libpjsua.so.2 => /usr/local/PJSIP_ONLY/libpjsua.so.2 (0xb6e6e000)
> libpjsip-ua.so.2 => /usr/local/PJSIP_ONLY/libpjsip-ua.so.2 (0xb6e48000)
> libpjsip-simple.so.2 => /usr/local/PJSIP_ONLY/libpjsip-simple.so.2 
> (0xb6e28000)
> libpjsip.so.2 => /usr/local/PJSIP_ONLY/libpjsip.so.2 (0xb6dda000)
> libpjmedia-codec.so.2 => /usr/local/PJSIP_ONLY/libpjmedia-codec.so.2 
> (0xb6dba000)
> libpjmedia-videodev.so.2 => /usr/local/PJSIP_ONLY/libpjmedia-videodev.so.2 
> (0xb6d9e000)
> libpjmedia-audiodev.so.2 => /usr/local/PJSIP_ONLY/libpjmedia-audiodev.so.2 
> (0xb6d88000)
> libpjmedia.so.2 => /usr/local/PJSIP_ONLY/libpjmedia.so.2 (0xb6d12000)
> 

Re: [Mesa-dev] marge currently down

2020-01-10 Thread Daniel Stone
Hi,

On Fri, 3 Jan 2020 at 16:57, Eric Anholt  wrote:
> marge broke over the holidays due to a gitlab upgrade.  It's unclear
> when we'll get it back up -- daniels might do a downgrade but is
> currently out sick
>
> https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/228

I've pushed a fix to our GitLab instance, and Marge is now happy
again. Please resume using it.

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


Re: [Mesa-dev] Requiring a full author name when contributing to mesa?

2019-12-12 Thread Daniel Stone
On Wed, 11 Dec 2019 at 22:35, Timothy Arceri  wrote:
> So it seems lately we have been increasingly merging patches with made
> up names, or single names etc [1]. The latest submitted patch has the
> name Icecream95. This seems wrong to me from a point of keeping up the
> integrity of the project. I'm not a legal expert but it doesn't seem
> ideal to be amassing commits with these type of author tags from that
> point of view either.
>
> Is it just me or do others agree we should at least require a proper
> name on the commits (as fake as that may be also)? Seems like a low bar
> to me.

What benefit does it bring?

Icecream95 could just resubmit as 'John Johnson'; would we just take
that as face value that that was their 'real name' and accept the
contribution?

I know someone in Australia who changed their name via deed poll to
Stormy Wrathcauser (changed slightly to protect their privacy, but
very close). Would we accept their contribution if they posted, or
would we have to stop and take measures to verify that that was their
real legal name?

What about Chinese contributors, who as noted in thread tend to use
made-up non-legal pseudonyms anyway?

Unless we're actually trying to bring up and enforce a web of trust, I
don't think there's any point in requiring that the submitter's name
conforms to some notion of idealised naming - it's just window
dressing. I also don't see any point in trying to enforce a web of
trust. Debian's method of doing this involves a hundred people
standing around in a room looking at drivers' licenses from countries
they might not have even heard of before to verify identity. But I'm
certainly not an expert at identifying whether or not a Bolivian
drivers' license which is put in front of my face is forged or not,
and suspect no-one on this list is.

If someone is determined to compromise the legal integrity of Mesa's
codebase, requiring that they register as Juan Molinos or any other
name which seems like it could be 'legitimate' is not really any
barrier to entry.

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


Re: [Mesa-dev] [PATCH] Revert "st/dri2: Implement DRI2bufferDamageExtension"

2019-10-01 Thread Daniel Stone
On Tue, 1 Oct 2019 at 10:24, Boris Brezillon
 wrote:
> This reverts commit 492ffbed63a2a62759224b1c7d45aa7923d8f542.
>
> BACK_LEFT attachment can be outdated when the user calls
> KHR_partial_update(), leading to a damage region update on the
> wrong pipe_resource object.
> Let's not expose the ->set_damage_region() method until the core is
> fixed to handle that properly.
>
> Cc: mesa-sta...@lists.freedesktop.org
> Signed-off-by: Boris Brezillon 

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

Re: [Mesa-dev] [PATCH RFC 2/2] dri: Pass a __DRIcontext to ->set_damage_region()

2019-10-01 Thread Daniel Stone
Hi Boris,

On Tue, 1 Oct 2019 at 09:25, Boris Brezillon
 wrote:
> On Mon, 2 Sep 2019 16:32:01 +0200 Michel Dänzer  wrote:
> > On 2019-08-30 7:00 p.m., Boris Brezillon wrote:
> > > So, next question is, do you think it's acceptable to pass a
> > > DRIcontext here, and if not, do you have any idea how to solve this
> > > problem?
> >
> > Hmm, not sure. Maybe it would be better to explicitly pass in the
> > __DRIimage* to which the damage region applies?
>
> Sorry, for the late reply. I had a look at this proposal and I don't see
> how passing a __DRIimage object would help. There's this comment [1]
> that makes me think passing a drawable is the right thing to do, but at
> the same time I'm not sure how to rework the logic to make it work
> without having access to the pipe_context (sounds like an invasive
> change to me).
> So, I suggest that we revert [2] and [3] until we find a proper
> solution to address the problem.
>
> Daniel, Qiang, are you okay with that?

Yeah, I'm fine with that.

I can't remember the details of why passing a DRIimage directly
doesn't help. Writing that down somewhere would be good, I think.

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

Re: [Mesa-dev] Moving libglvnd to FreeDesktop Gitlab

2019-09-27 Thread Daniel Stone
Hi Kyle,

On Fri, 27 Sep 2019 at 17:06, Kyle Brenneman  wrote:
> Okay, I've imported the Github repository here:
> https://gitlab.freedesktop.org/glvnd/libglvnd

That's great, thanks! I've given Adam Jackson access as requested (go
to the 'members' tab from the glvnd group page). It sounds like it
would be good to give Matt access, as well.

Another thing to consider would be a CONTRIBUTING.md file, similar to
the ones in Wayland/Weston, setting out clear expectations for how
people should contribute, review, and ultimately merge code.

> It looks like the code, bug reports, and pull requests all came in cleanly. 
> The release tarballs didn't, though.
>
> I guess the next step is to figure out what to do with the Github repository. 
> I've seen Github repos that are explicitly labeled as being a mirror of 
> another repo, but I'll have to go figure out how to configure that.

https://gitlab.freedesktop.org/glvnd/libglvnd/-/settings/repository

You can set up a push mirror here using an SSH key or password.

> There's also some still-active discussions on the Github bug reports that 
> we'll need to migrate over.

What we've done everywhere else is to post a link to the matching
GitLab issue, note that it should be further discussed there, and then
closed.

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

Re: [Mesa-dev] Release workflow with gitlab issues

2019-09-18 Thread Daniel Stone
On Wed, 18 Sep 2019 at 20:43, Mark Janes  wrote:
> Adam Jackson  writes:
> > Strictly, the "Reporter" access level and above can manage labels,
> > milestones require "Developer" or above. Not super meaningful since the
> > mesa group really only has Developer or above.
> >
> > I'm not super worried about it to be honest, people tend not to be
> > malicious.
>
> I agree that malicious users will be less of a problem with gitlab
> issues.  I am somewhat worried about inadvertent mistakes.  "I thought I
> was in the browser tab with my forked repo..."
>
> That particular mistake would be hard to make, but it's hard to
> anticipate accidents.
>
> When you delete a label, gitlab warns that you can't get it back.
> Labels will hold a lot of information for us.

We keep daily backups. Obviously it would be an enormous pain to deal
with, but we could get the label information back if we really needed
to. I have a strong suspicion that the bugs keep their association to
the label, so we could probably even pull it out with some local Ruby,
without resorting to backups.

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

Re: [Mesa-dev] Moving libglvnd to FreeDesktop Gitlab

2019-09-04 Thread Daniel Stone
Hi,

On Wed, 4 Sep 2019 at 15:12, Chuck Atkins  wrote:
> Can we use Gitlab's GitHub import feature?
>
> https://gitlab.freedesktop.org/help/user/project/import/github.md
>
> I haven't used it before but it looks like it will migrate everything, i.e. 
> repo, issues, prs, etc.

Yeah, we definitely can. We can create a new namespace for GLVND and
import the project into there.

Who else should I add to the group?

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

Re: [Mesa-dev] Moving libglvnd to FreeDesktop Gitlab

2019-09-01 Thread Daniel Stone
Hi,

On Sat, 31 Aug 2019 at 20:34, Matt Turner  wrote:
> Getting patches into libglvnd has proven quite difficult (see [0] for
> example). There was some talk of moving it to FreeDesktop Gitlab on
> IRC recently. Can we move forward with that? Are there objections to
> doing so?

We'd be happy to have it in on fd.o. Moving the vendor-neutral
dispatch into a vendor-neutral space is probably a good move, even
without the difficulty in having things merged.

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

Re: [Mesa-dev] [PATCH v2 2/2] panfrost: protect access to shared bo cache and transient pool

2019-08-31 Thread Daniel Stone
Hi Boris,

On Sat, 31 Aug 2019 at 18:33, Boris Brezillon
 wrote:
> On Sat, 31 Aug 2019 17:06:30 +0100 Daniel Stone  wrote:
> > On Fri, 30 Aug 2019 at 17:00, Rohan Garg  wrote:
> > > Both the BO cache and the transient pool are shared across
> > > context's. Protect access to these with mutexes.
> >
> > These fixes seem right to me, and (minus the issues Boris pointed
> > out), both are:
> > Reviewed-by: Daniel Stone 
>
> Unfortunately, they've already been applied (maybe I should wait
> a bit longer before applying patches :-/).

No problem, they'd already been reviewed in a previous round anyway. :)

Have a great weekend!

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

Re: [Mesa-dev] [PATCH v2 3/3] panfrost: Stop passing a ctx to functions being passed a batch

2019-08-31 Thread Daniel Stone
Hi Boris,

On Sat, 31 Aug 2019 at 08:53, Boris Brezillon
 wrote:
> @@ -123,8 +123,7 @@ struct panfrost_batch *
>  panfrost_job_create_batch(struct panfrost_context *ctx);
>
>  void
> -panfrost_job_free_batch(struct panfrost_context *ctx,
> -struct panfrost_batch *batch);
> +panfrost_job_free_batch(struct panfrost_batch *batch);
>
>  struct panfrost_batch *
>  panfrost_job_get_batch(struct panfrost_context *ctx,
> @@ -149,18 +148,16 @@ panfrost_flush_jobs_reading_resource(struct 
> panfrost_context *panfrost,
>   struct pipe_resource *prsc);
>
>  void
> -panfrost_job_submit(struct panfrost_context *ctx, struct panfrost_batch 
> *batch);
> +panfrost_job_submit(struct panfrost_batch *batch);
>
>  void
> -panfrost_job_set_requirements(struct panfrost_context *ctx,
> -  struct panfrost_batch *batch);
> +panfrost_job_set_requirements(struct panfrost_batch *batch);
>
>  mali_ptr
>  panfrost_job_get_polygon_list(struct panfrost_batch *batch, unsigned size);
>
>  void
> -panfrost_job_clear(struct panfrost_context *ctx,
> -   struct panfrost_batch *batch,
> +panfrost_job_clear(struct panfrost_batch *batch,
> unsigned buffers,
> const union pipe_color_union *color,
>         double depth, unsigned stencil);

The series looks good to me and is:
Reviewed-by: Daniel Stone 

But as a follow-on, it seems like most of the panfrost_job_*()
functions should probably be panfrost_batch_*() to reduce confusion.

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

Re: [Mesa-dev] [PATCH] panfrost: Make transient allocation rely on the BO cache

2019-08-31 Thread Daniel Stone
Hi Boris,

On Sat, 31 Aug 2019 at 11:47, Boris Brezillon
 wrote:
> Right now, the transient memory allocator implements its own BO caching
> mechanism, which is not really needed since we already have a generic
> BO cache. Let's simplify things a bit.
>
> [...]
>
>  bool fits_in_current = (batch->transient_offset + sz) < 
> TRANSIENT_SLAB_SIZE;
>
> +if (likely(batch->transient_bo && fits_in_current)) {
> +/* We can reuse the current BO, so get it */
> +[...]
>  } else {
> -/* Create a new BO and reference it */
> -bo = panfrost_drm_create_bo(screen, ALIGN_POT(sz, 4096), 0);
> +size_t bo_sz = sz < TRANSIENT_SLAB_SIZE ?
> +   TRANSIENT_SLAB_SIZE : ALIGN_POT(sz, 4096);

Should we record the size of the allocated transient BO here, so we
can use the whole BO for transients when we allocate more than the
slab size?

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

Re: [Mesa-dev] [PATCH v2 2/2] panfrost: protect access to shared bo cache and transient pool

2019-08-31 Thread Daniel Stone
Hi Rohan,

On Fri, 30 Aug 2019 at 17:00, Rohan Garg  wrote:
> Both the BO cache and the transient pool are shared across
> context's. Protect access to these with mutexes.

These fixes seem right to me, and (minus the issues Boris pointed
out), both are:
Reviewed-by: Daniel Stone 

I think it might be worthwhile pushing both of these to the context in
the longer term. I wonder if we should also rename the 'BO cache' to
something else. (If only so I can stop saying the wrong thing about
'the BO cache'! Maybe we could call it 'BO reuse cache' or similar?)

Another use of BO caching (usually 'BO handle cache') is to handle the
exclusivity requirement around GEM handles. For any given kernel
buffer (wherever it comes from: a panfrost_gem_object allocated by us,
a panfrost_gem_object allocated by another process, a V4L2 buffer,
etc), for every DRM connection (a drm_file represents one open() of
the DRM device), there can only be one GEM handle referring to that
buffer.

drmPrimeFDToHandle() is where you will most often bump into this. If a
client imports the same underlying buffer twice, drmPrimeFDToHandle()
may return a GEM handle which you already have open. Since creating
and destroying GEM handles is not refcounted, this means that you may
get two panfrost_bo's referring to the same GEM handle. When you close
one of those, the other will be left hanging: either you cannot use it
(because the handle is invalid), or you will end up overlapping with
another buffer which later comes to use the same GEM handle. Neither
result is good.

Given that, on the screen (not on the context, since it needs to be
scoped to every user of the same DRM FD), we need a BO handle cache.
The screen would have a list of every panfrost_bo for that device, and
when panfrost_drm_import_bo() receives a GEM handle back from the
kernel, we need to walk the list of all BOs. If we find a panfrost_bo
with the same handle, we just bump the refcount and return that. This
would need a screen-wide lock on the BO handle list.

Would you be able to take a look at that please?

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

Re: [Mesa-dev] Switching to Gitlab Issues instead of Bugzilla?

2019-08-30 Thread Daniel Stone
Hi,

On Thu, 29 Aug 2019 at 21:35, Chris Wilson  wrote:
> Quoting Kristian Høgsberg (2019-08-29 21:20:12)
> > On Thu, Aug 29, 2019 at 12:44 PM Chris Wilson  
> > wrote:
> > > Quoting Kenneth Graunke (2019-08-29 19:52:51)
> > > > - Moving bug reports between the kernel and Mesa would be harder.
> > > >   We would have to open a bug in the other system.  (Then again,
> > > >   moving bugs between Mesa and X or Wayland would be easier...)
> > >
> > > All that I ask is that we move the kernel bugzilla along with it. Trying
> > > to keep abreast of the bugs in the whole stack is important. Fwiw, the
> > > kernel contains the 
> > > https:bugs.freedesktop.org/enter_bug.cgi?product=DRI
> > > URL so would need some redirection for a few years...
> >
> > Would Rob's suggestion of creating a placeholder drm kernel repo for
> > the purpose of issue tracking work for you?

We can definitely get placeholder DRM repos and move those issues too.
And set up redirects.

(To be honest, rather than one-by-one redirects, my thought with
Bugzilla was just to statically scrape all the bug pages and leave
them as read-only static copies frozen in amber for time eternal. I'd
welcome help from anyone who had the time to figure out the scripting
and Apache runes required to make those be proper HTTP redirects, but
am definitely not going to be able to do that myself.)

> I think so. I just want a list of all bugs that may affect the code I'm
> working on, wherever they were filed. I have a search in bugs.fdo, I
> just need instructions on how to get the same from gitlab, hopefully in
> a compact format.

It's not clear to me what you need. Can you please give more details?
If you want cross-component search results in a single list, that's
not really something we can do today, and I don't know if it would
land any time soon. You can however subscribe to particular issue
labels, and when you see something that catches your eye add a 'todo'
for it, then the main UI shows all your outstanding todos, including
where people have mentioned you etc.

> The issue URL will also need to be stable so that we can include it in
> commits. From a glance,
> https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/861,
> looks like it will be adjusted if it ever gets moved.

Sorry, 'moved' how? If you mean moved between components, yes the
issue will move and there will be a new URL for that. However, going
to that old URL will auto-redirect you to the new one.

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

Re: [Mesa-dev] Mesa GitLab <-> AppVeyor integration

2019-08-28 Thread Daniel Stone
Hi,

On Wed, 28 Aug 2019 at 11:18, Michel Dänzer  wrote:
> On 2019-08-28 3:08 a.m., Eric Engestrom wrote:
> > On Tuesday, 2019-08-27 13:31:22 +, Jose Fonseca wrote:
> >> Appveyor seems to be building other MR 1781:
> >>
> >>   https://ci.appveyor.com/project/mesa3d/mesa-re1yd/builds/26989425
> >>   https://ci.appveyor.com/project/mesa3d/mesa-re1yd/history
> >>   https://gitlab.freedesktop.org/eric/mesa/pipelines/59190
> >
> > You shouldn't take my MRs as an example for this, as I've set up the
> > hook on my account, so my MRs always get picked up by appveyor :)
>
> Yeah, the external integration settings are per GitLab project, and
> pre-merge CI pipelines for MRs run in the source project context, so the
> appveyor integration would need to be set up in each forked project used
> for MRs.
>
> This is a bit unfortunate, as it means the CI pipeline which runs (in
> the main project context) after an MR is merged could fail at the
> appveyor step, even if the pre-merge pipeline passed.
>
> Not sure what can be done about this though, other than requiring forked
> projects used for MRs to set up the appveyor integration as well.

To be honest, given the relative immaturity of external-job reporting,
and some of the problems reported in #freedesktop for NetworkManager
using it, I would probably suggest not using it.

For Panfrost CI, which executes on an external system (LAVA), we
create a new job in the GitLab CI pipeline with the 'idle-jobs' tag,
which submits an HTTP request to LAVA to schedule the job, then sits
waiting for it to report results and logs back. The 'idle-jobs' runner
can do something like 64 concurrent jobs, as it's supposed to only be
used for things like this.

That might help with some of the flakiness, and bring the result
reporting in line with the rest of execution.

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

Re: [Mesa-dev] Difference between TransformFeedback Gallium <-> Vulkan (V3D)

2019-08-26 Thread Daniel Stone
Hi Andreas,

On Sun, 25 Aug 2019 at 21:11, Andreas Bergmeier  wrote:
> For a few weeks now I am working on implementing Vulkan for VideoCore 6 AKA 
> 42 (using V3D/DRM). Don't hold you breath ;)

Great! I can't say much about the specifics of VideoCore hardware, but
at least for some of the common parts ...

> Currently I am trying to understand what is necessary or how to interact with 
> V3D. So I am looking at TransformFeedback because it interacts with quite a 
> few other parts of the pipeline and still seems less mangled into the big 
> logic than other features. So I am comparing how Gallium (V3D) is handling TF 
> in the state tracker VS how Vulkan (Intel) is handling the Extension.
>
> The following is what I so far think I gathered:
> 1. GV3D is handling TransformFeedback directly with other bound parts of the 
> pipeline (e.g. `emit_state` in _v3dx_emit.c_). It seems to look into the 
> shader and associated TF specs. It seems to use "streamout targets", although 
> I do not yet understand what these are really. Then it passes all the 
> offsets, indices and finally resources to V3D.

'Stream out' is basically just what DirectX calls its version of
transform feedback. The idea is the same: capturing output from
vertex/geometry stages.

> 2. The Vulkan Extension only knows about CounterBuffers and iterates over 
> these. Intel seems to call TF -> XF? and subsequently the buffers XFB. Have 
> also not yet gathered what is the difference and what all the gazillion 
> acronyms mean.

'XFB' is the most widely-used acronym for transform, as 'trans' or
'cross' can abbreviate to X. 'TF' is not as widely used as XFB.

> So far my idea would be to implement TF similar to Intel and instead of 
> iterating over "streamout targets" I would iterate XFBs.

So these would really be the same thing. A streamout target is where
the VC4 writes its output stream of data from these shading stages,
and a counter buffer is where Vulkan writes the output stream of data
from these shading stages.

> The problem with this approach is, that it will not be easy to mimic 
> `cl_emit` calls similar to Gallium.
> My question now is which parts of V3D emits have a dependency.
>
> I would assume that I can move TRANSFORM_FEEDBACK_SPECS and 
> TRANSFORM_FEEDBACK_ENABLE to cmd state flush in Vulkan.
> `vkCmdBeginTransformFeedbackEXT` shoudl then only need 
> TRANSFORM_FEEDBACK_BUFFER and TRANSFORM_FEEDBACK_OUTPUT_ADDRESS.
>
> Sorry if this is a bit confusing - I am really just trying to figure this out 
> one by one.

This is getting more into the specifics of how you've structured the
driver, as well as hardware specifics, but it sounds about right to
me.

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

Re: [Mesa-dev] [MR] Update README to recommend MRs instead of `git send-email`

2019-07-09 Thread Daniel Stone
Hi,

On Sat, 6 Jul 2019 at 18:39, Ilia Mirkin  wrote:
> I see this as driving away contributions, esp from new people. MR's
> are annoying to create, since they require dealing with the hosting
> provider, getting it to host clones, etc. Everyone has email.

My position - and the evidence of velocity from projects who have
switched - is already pretty clear, but you might be interested to
read that even kernel.org admins are trying to move away from email:
https://people.kernel.org/monsieuricon/patches-carved-into-developer-sigchains

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

Re: [Mesa-dev] [PATCH 3/3] panfrost: Add support for modifiers

2019-07-05 Thread Daniel Stone
Hi,

On Fri, 5 Jul 2019 at 14:51, Alyssa Rosenzweig
 wrote:
> > + switch(whandle->modifier) {
> > + case DRM_FORMAT_MOD_ARM_AFBC(AFBC_FORMAT_MOD_ROCKCHIP):
> > + rsc->layout = PAN_AFBC;
> > + break;
>
> Why ROCKCHIP in particular? AFBC fourcc codes are based on modifiers,
> and there are a *lot* of them. We need to figure out which upstream
> modifier PAN_AFBC actually enables and use that:
>
> [...]
>
> On other AFBC flags, I don't know. I'm also not sure if Arm would chime
> in one way or the other.
>
> Mainly the issue is that whandle->modifier could contain some other,
> non-Rockchip modifier, and then the whole stack collapses; AFBC
> modifiers are meant to be parsedd, not =='d. See the komeda driver in
> the kernel for reference.

Yes and no. See below.

> > + if (want_afbc || (is_renderable && can_afbc && !is_texture))
>
> This doesn't seem quite correct. We preselect AFBC if:
>
> - AFBC is explicitly requested, OR
> - We're rendering to something that's not bound as a texture
>   that could be AFBC
>
> In case one, what happens if AFBC is explicitly requested but we don't
> support AFBC on that format? It should fallback to linear, or error out.
>
> In case two, what if the modifier for linear or tiled is explicitly set?
> Now we've given them AFBC when they've asked for something else;
> switching it up is only safe for internal BOs.
>
> The logic in this code block has only ever been for internal BOs, where
> it's up to *us* to pick a format. Imports are logically distinct, since
> it's now up to the modifiers. Two different problems, unless the
> modifier is a "don't care".

It's still up to you-the-driver to pick a modifier.

EGL/Wayland/KMS all advertise sets of modifiers to clients. In
general, clients don't try to reason about the contents of those lists
- if they have multiple lists, they might intersect them, or they
might create their own list-of-one to be LINEAR, or whatever.

Modifier lists are explicitly unsorted. The list provided is the
modifiers which are acceptable to use. The driver is expected to sort
(on whatever metric) for 'optimality'. If none of the modifiers
provided are usable, then resource creation is free to fail. If the
provided modifiers are not optimal, then the driver just has to select
that less-optimal modifier. The only no-no is to select a modifier
which is not in the provided list.

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

Re: [Mesa-dev] [PATCH 2/3] panfrost: Allocate scanout BOs in panfrost device

2019-07-05 Thread Daniel Stone
On Fri, 5 Jul 2019 at 14:38, Alyssa Rosenzweig
 wrote:
> > +bool should_tile = !is_streaming && is_texture && is_2d && 
> > !is_scanout;
>
> I'm not opposed, but why can't we tile PIPE_BIND_SHARED textures? lima
> does exactly that. If we can't tile them, we certainly can't AFBC them.

We can't tile USE_SHARED unless it's explicitly listed in the modifiers.

If we don't have modifiers, then USE_SHARED means we'd be sending it
to a different process or subsystem (KMS, V4L, whatever) which isn't
going to know that it's tiled, because we aren't using modifiers to
tell it.

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

Re: [Mesa-dev] [PATCH 3/3] panfrost: Add support for modifiers

2019-07-04 Thread Daniel Stone
Hi,

On Thu, 4 Jul 2019 at 09:47, Tomeu Vizoso  wrote:
> On Thu, 4 Jul 2019 at 10:05, Tomeu Vizoso  wrote:
> > -pres->layout = should_tile ? PAN_TILED : PAN_LINEAR;
> > +   if (want_afbc || (is_renderable && can_afbc && !is_texture))
> > +pres->layout = PAN_AFBC;
>
> We regress here because we seem to have some bugs regarding AFBC usage
> with some formats such as rgba4 and rgb5_a1:
>
> https://gitlab.freedesktop.org/tomeu/mesa/-/jobs/399237
>
> I'm looking at only enabling AFBC when explicitly asked to by the winsys.

Again, the winsys just pulls the list of acceptable format/modifier
pairs from the EGL format query. If Panfrost declares 1555+AFBC to be
a supported combination, then the winsys will pass that on for clients
to use. If it isn't working, my suggestion is to just never advertise
it in the first place.

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

Re: [Mesa-dev] [PATCH 3/3] panfrost: Add support for modifiers

2019-07-04 Thread Daniel Stone
Hi Tomeu,

On Thu, 4 Jul 2019 at 09:05, Tomeu Vizoso  wrote:
> @@ -362,14 +392,19 @@ panfrost_resource_create_bo(struct panfrost_screen 
> *screen, struct panfrost_reso
>
>  /* Tiling textures is almost always faster, unless we only use it 
> once */
>
> +bool can_afbc = panfrost_format_supports_afbc(res->format);
> +bool want_afbc = 
> drm_find_modifier(DRM_FORMAT_MOD_ARM_AFBC(AFBC_FORMAT_MOD_ROCKCHIP), 
> modifiers, count);
> +bool want_linear = drm_find_modifier(DRM_FORMAT_MOD_LINEAR, 
> modifiers, count);
>
> [...]
> -bool should_tile = !is_streaming && is_texture && is_2d && 
> !is_scanout;
> +bool should_tile = !is_streaming && is_texture && is_2d && 
> !want_linear && !is_scanout;

I don't think this is right.

The list of modifiers we pass in is the total list of acceptable
modifiers. Clients don't make any judgement or discernment about them,
but just pass in the full list. For example, in Weston we use EGL to
query the list of all modifiers supported by the driver, and then give
those to the client as the list of acceptable modifiers; the EGL
Wayland winsys will then pass that list into DRIImage create.

This means that 'want_linear' will be true as long as Panfrost (or, on
GBM, the KMS driver) supports linear, which realistically is all the
time.

I think ultimately we want should_tile to be (in order of evaluation):
  * definitively false if we can't support it - GPU doesn't support
it, isn't a 2D texture/RT, etc
  * if the above passes, definitively true if the above conditions are
met and we have passed in a modifier set which includes AFBC
  * if we can do it (first test) but we have no modifiers,
definitively false if it's a shared/scanout buffer (i.e. we need to
export the buffer somewhere else but the client isn't modifier-aware),
or definitively true if it's just an internal buffer

That code seems pretty familiar from VC4 (which is in turn probably
from freedreno? everything else is). It could be semi-useful to look
at how VC4 has structured its resource creation decision tree for
modifiers, but on the other hand they also have an implicit fallback
mode; when modifiers aren't available, it will pass the tiling
information through a magic kernel side-channel, which we really don't
want to do here.

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

Re: [Mesa-dev] [PATCH kmscube] Search for a suitable config

2019-07-03 Thread Daniel Stone
Hi Drew,

On Wed, 3 Jul 2019 at 08:16, Drew DeVault  wrote:
> Instead of assuming the first will be suitable. kmscube fails to start
> for me without this change.

There are a couple of unrelated changes combined in here, but I think
the core one is good.

eglChooseConfig has some really useful properties, where it strictly
specifies a sort order, does not include EGL_NATIVE_VISUAL_ID in that
sort order, and silently accepts attributes which are not relevant for
the sort. Your change which takes all possible configs and then
queries them to make sure that the native visual ID is actually
correct is the right thing to do.

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

Re: [Mesa-dev] [PATCH v4 5/5] panfrost: Add support for KHR_partial_update()

2019-06-26 Thread Daniel Stone
Hi,
To be honest, I haven't been able to look too closely at this one. I
wasn't able to easily reason about the twists and turns, so had to run
away to reviews elsewhere. But as long as we reload every single
region passed in - be it individually or just lazily pulling in the
extents, it's correct.

There's no need to intersect the partial_update region with the
scissor, since rendering outside of the partial_update area is
explicitly undefined.

On Wed, 26 Jun 2019 at 18:51, Alyssa Rosenzweig
 wrote:
> > +binfo.src.resource = binfo.dst.resource = 
> > ctx->pipe_framebuffer.cbufs[0]->texture;
> > +binfo.src.level = binfo.dst.level = 0;
> > +binfo.src.box.x = binfo.dst.box.x = rect->x;
> > +binfo.src.box.y = binfo.dst.box.y = rect->y;
> > +binfo.src.box.width = binfo.dst.box.width = rect->width;
> > +binfo.src.box.height = binfo.dst.box.height = rect->height;
> >
> >   /* This avoids an assert due to missing nir_texop_txb support */
> >   //binfo.src.box.depth = binfo.dst.box.depth = 1;
>
> This will need to be rebased in a slightly messy way, since
> panfrost_blit_wallpaper was edited pretty heavily in the mipmap series
> that just landed. Sorry for the conflicts, although conceptually this
> looks good.
>
> Have you considered if this interacts with mipmapping, by the way? I
> suppose surfaces that get partial updates *by definition* are not
> mipmapped, so that's an easy "who cares?" :)

Yeah, partial_update only applies to winsys surfaces.

> > +u_box_2d(batch->minx, batch->miny, damage.minx - batch->minx,
> > + batch->maxy - batch->miny, [0]);
> > +u_box_2d(damage.maxx, batch->miny, batch->maxx - damage.maxx,
> > + batch->maxy - batch->miny, [1]);
> > +u_box_2d(damage.minx, batch->miny, damage.maxx - damage.minx,
> > + damage.miny - batch->miny, [2]);
> > +u_box_2d(damage.minx, damage.maxy, damage.maxx - damage.minx,
> > + batch->maxy - damage.maxy, [3]);
> > +
> > +for (unsigned i = 0; i < 4; i++) {
> > +if (!rects[i].width || !rects[i].height)
> > +continue;
>
> This 'if' statement seems a little magic. Does u_box_2d clamp
> width/height positive automatically? Is it possible to get negative
> width/height? If the answer is "yes; no" respectively, which seems to be
> how the code works, maybe add a quick comment explaining that.

Negative width or height isn't explicitly allowed in the
partial_update spec; by that omission I would say it's not defined
behaviour.

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

Re: [Mesa-dev] [PATCH] panfrost: Rewrite u-interleaving code

2019-06-25 Thread Daniel Stone
Hi Alyssa,

On Tue, 25 Jun 2019 at 19:54, Alyssa Rosenzweig
 wrote:
> @@ -2,6 +2,7 @@
>   * Copyright (c) 2011-2013 Luc Verhaegen 
>   * Copyright (c) 2018 Alyssa Rosenzweig 
>   * Copyright (c) 2018 Vasily Khoruzhick 
> + * Copyright (c) 2019 Collabora

Please use 'Collabora, Ltd.' as that's our full legal form.

Afraid I have no feelings on the actual code however. ;)

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

Re: [Mesa-dev] [PATCH v4 2/5] dri_interface: add DRI2_BufferDamage interface

2019-06-25 Thread Daniel Stone
On Tue, 25 Jun 2019 at 17:46, Boris Brezillon
 wrote:
> On Tue, 25 Jun 2019 18:37:46 +0200 Boris Brezillon 
>  wrote:
> > Add a new DRI2_BufferDamage interface to support the
> > EGL_KHR_partial_update extension, informing the driver of an overriding
> > scissor region for a particular drawable.
> >
> > Based on a commit originally authored by:
> > Harish Krupo 
> > renamed extension, retargeted at DRI drawable instead of context,
> > rewritten description
>
> Oops, this patch is missing Daniel's SoB.

Oops indeed!

Signed-off-by: Daniel Stone 

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

Re: [Mesa-dev] [PATCH] gbm: add gbm_{bo, surface}_create_with_modifiers2

2019-06-25 Thread Daniel Stone
Hi,

On Tue, 25 Jun 2019 at 16:07, Jason Ekstrand  wrote:
> On Tue, Jun 25, 2019 at 4:04 AM Daniel Stone  wrote:
>> On Tue, 25 Jun 2019 at 07:26, Simon Ser  wrote:
>> > > I noticed that original patch (v1) for gbm_bo_create_with_modifiers did
>> > > have usage at first but it was removed during the review. I'm having
>> > > trouble digging what was the reason for this?
>> >
>> > I'm not sure either. Daniel said it was a mistake.
>> >
>> > Adding the 63bd2ae7452d4 folks to the discussion. Ben, do you remember
>> > the details?
>>
>> We decided to remove it since we decided that modifiers were a good
>> enough proxy for usage; no need to pass SCANOUT or TEXTURE anymore,
>> because we already get the scanout modifiers from KMS and the texture
>> modifiers from EGL.
>>
>> In hindsight, I think this was a mistake since it only handles buffer
>> layout, and not buffer placement or cache configuration.
>
>
> It's not great but modifiers should be able to handle that as well.  You can 
> have _CONTIGUOUS versions of the modifiers supported by scanout and scanout 
> will only advertise those and the caller has to know to place them in 
> contiguous memory.  That's just an example but I think it would probably work 
> for a lot of the cases.  If not, I'd love to know why not.

Sometimes it's _CONTIGUOUS, sometimes it's _ON_THIS_PCIE_DEVICE.
Either way, it does seem like a bit of an abuse: it has nothing to do
with internal buffer layout, but how and where the backing pages are
sourced.

Given that it's completely orthogonal, I wouldn't like to go trying to
combine it into the same namespace.

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

Re: [Mesa-dev] [PATCH] gbm: add gbm_{bo, surface}_create_with_modifiers2

2019-06-25 Thread Daniel Stone
Hi,

On Mon, 24 Jun 2019 at 19:51, Simon Ser  wrote:
> +GBM_EXPORT struct gbm_bo *
> +gbm_bo_create_with_modifiers2(struct gbm_device *gbm,
> +  uint32_t width, uint32_t height,
> +  uint32_t format,
> +  const uint64_t *modifiers,
> +  const unsigned int count,
> +  uint32_t usage)
> +{
> +   if (width == 0 || height == 0) {
> +  errno = EINVAL;
> +  return NULL;
> +   }
> +
> +   if ((count && !modifiers) || (modifiers && !count)) {
> +  errno = EINVAL;
> +  return NULL;
> +   }
> +
> +   return gbm->bo_create(gbm, width, height, format, usage, modifiers, 
> count);

This will trip an assert inside gbm_dri_bo_create:
   /* Callers of this may specify a modifier, or a dri usage, but not both. The
* newer modifier interface deprecates the older usage flags.
*/
   assert(!(usage && count));

You can fix this without modifying the libgbm <-> backend interface,
given that the two should be tightly coupled together. But within
Mesa, you'll need a new version of the DRIimageExtension, adding a
createImageWithModifiers2() which re-adds the flags, given that
they're not there in the current createImageWithModifiers() hook.

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

Re: [Mesa-dev] [PATCH] gbm: add gbm_{bo, surface}_create_with_modifiers2

2019-06-25 Thread Daniel Stone
Hi,

On Tue, 25 Jun 2019 at 07:26, Simon Ser  wrote:
> > I noticed that original patch (v1) for gbm_bo_create_with_modifiers did
> > have usage at first but it was removed during the review. I'm having
> > trouble digging what was the reason for this?
>
> I'm not sure either. Daniel said it was a mistake.
>
> Adding the 63bd2ae7452d4 folks to the discussion. Ben, do you remember
> the details?

We decided to remove it since we decided that modifiers were a good
enough proxy for usage; no need to pass SCANOUT or TEXTURE anymore,
because we already get the scanout modifiers from KMS and the texture
modifiers from EGL.

In hindsight, I think this was a mistake since it only handles buffer
layout, and not buffer placement or cache configuration.

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

Re: [Mesa-dev] Move adriconf to mesa repositories

2019-04-02 Thread Daniel Stone
Hi,

On Tue, 2 Apr 2019 at 00:19, Rob Clark  wrote:
> On Mon, Apr 1, 2019 at 1:55 PM Jean Hertel  wrote:
> > As we have spoken already in the past, I have the intention to move 
> > adriconf under the mesa project umbrella, as an official tool for 
> > configuring DRI options.
> > I would like to ask your advice, as well as other mesa developers, on how 
> > to properly do this. (If people is willing to accept it)
> > So far the questions I have are:
> >
> > - What is the proccess to become an official mesa tool?
>
> Maybe a gitlab ticket?  Or ping daniels and ask?
>
> > - Do I need any approval? Like from other mesa developers or X.Org 
> > Foundation?
>
> No approval from X.Org foundation or anything like that.. maybe some
> general consensus among mesa dev's (or at least a few others who think
> it is a good idea).  For the record, I think living under
> gitlab.freedesktop.org/mesa/adriconf makes sense.

Right. As long as Mesa people agree then any project owner can just go
ahead and create the owner in Mesa themselves; no need for admins to
do anything.

> > - Also, what about gitlab? If we move, can we use it? I already know the 
> > tool and would really appreciate using it.
>
> Yes, I don't think the fd.o admin's are creating new non-gitlab projects.

Absolutely correct.

> > - Is there anyone else willing to have commit rights on it? I known the 
> > project is public, but I feel it would be nice to have someone else also 
> > with commit/admin rights in case I'm hit by a bus :)
>
> Hmm, I guess it is possible to set it up so anyone with mesa commit
> rights would have adriconf commit rights.  But afaiu gitlab is
> somewhat flexible on groups so we could I guess do something more fine
> grained.

It's quite fine-grained, yes. It inherits the permissions of the Mesa
group, so anyone who has permission to Mesa can commit to it. You can
also add committers specifically to the adriconf project, so they can
only commit to that. Again this doesn't need admin intervention, you
can just go ahead and do it yourself.

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

Re: [Mesa-dev] Mesa CI is too slow

2019-02-18 Thread Daniel Stone
Hi,

On Mon, 18 Feb 2019 at 18:58, Eric Engestrom  wrote:
> On Monday, 2019-02-18 17:31:41 +0000, Daniel Stone wrote:
> > Two hours of end-to-end pipeline time is also obviously far too long.
> > Amongst other things, it practically precludes pre-merge CI: by the
> > time your build has finished, someone will have pushed to the tree, so
> > you need to start again. Even if we serialised it through a bot, that
> > would limit us to pushing 12 changesets per day, which seems too low.
> >
> > I'm currently talking to two different hosts to try to get more
> > sponsored time for CI runners. Those are both on hold this week due to
> > travel / personal circumstances, but I'll hopefully find out more next
> > week. Eric E filed an issue
> > (https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/120) to
> > enable ccache cache but I don't see myself having the time to do it
> > before next month.
>
> Just to chime in to this point, I also have an MR to enable ccache per
> runner, which with our static runners setup is not much worse than the
> shared cache:
> https://gitlab.freedesktop.org/mesa/mesa/merge_requests/240
>
> From my cursory testing, this should already cut the compilations by
> 80-90% :)

That's great! Is there any reason not to merge it?

> > Doing the above would reduce the run time fairly substantially, for
> > what I can tell is no loss in functional coverage, and bring the
> > parallelism to a mere 1.5x oversubscription of the whole
> > organisation's available job slots, from the current 2x.
> >
> > Any thoughts?
>
> Your suggestions all sound good, although I can't speak for #1 and #2.
>
> #3 sounds good, I guess we can keep meson builds with the "oldest supported
> llvm" and the "current llvm version", and only the "oldest supported"
> for autotools?

We could have Meson building all the LLVM versions autotools does for
not much overhead at all. At the moment though Meson builds 3 and
autotools builds 6, which isn't bring us increased code coverage.

> You've suggested reducing the amount that's built (ccache,
> dropping/merging jobs) and making it more parallel (fewer jobs), but
> there's another avenue to look at: run the CI less often.
>
> In my opinion, the CI should run on every single commit. Since that's
> not realistic, we need to decide what's essential.
> From most to least important:
>
> - master: everything that hits master needs to be build- and smoke-tested
>
> - stable branches: we obviously don't want to break stable branches
>
> - merge requests: the reason I wrote the CI was to automatically test MRs
>
> - personal work on forks: it would be really useful to test things
>   before sending out an MR, especially with the less-used build systems
>   that we often forget to update, but this should be opt-in, not opt-out
>   as it is right now.
>
> Ideally, this means we add this to the .gitlab.yml:
>   only:
> - master
> - merge_requests
> - ci/*
>
> Until this morning, I thought `merge_requests` was an Enterprise Edition
> only feature, which I why I didn't put it in, but it appears I was wrong,
> see:
> https://docs.gitlab.com/ce/ci/merge_request_pipelines/
> (Thanks Caio for reading through the docs more carefully than I did! :)
>
> I'll send an MR in a bit with the above. This will mean that master and
> MRs get automatic CI, and pushes on forks don't (except the fork's
> master), but one can push a `ci/*` branch to their own fork to run the
> CI on it.
>
> I think this should massively drop the use of the CI, but mostly remove
> unwanted uses :)

It depends on the definition of 'unwanted', of course ... I personally
like the idea of having a very early canary in the coalmine, and
building it into peoples' workflows as quickly as possible. If a more
sensible job split could reduce compilation time by 30-40%, and using
ccache could drop the compilation overhead by a huge amount as well,
that sounds like more than enough to not need to stop CI on personal
forks. Why don't we pursue those avenues first, rather than
restricting the audience?

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

[Mesa-dev] Mesa CI is too slow

2019-02-18 Thread Daniel Stone
Hi all,
A few people have noted that Mesa's GitLab CI is just too slow, and
not usable in day-to-day development, which is a massive shame.

I looked into it a bit this morning, and also discussed it with Emil,
though nothing in this is speaking for him.

Taking one of the last runs as representative (nothing in it looks
like an outlier to me, and 7min to build RadeonSI seems entirely
reasonable):
https://gitlab.freedesktop.org/mesa/mesa/pipelines/19692/builds

This run executed 24 jobs, which is beyond the limit of our CI
parallelism. As documented on
https://www.freedesktop.org/wiki/Infrastructure/ we have 14 concurrent
job slots (each with roughly 4 vCPUs). Those 24 jobs cumulatively took
177 minutes of execution time, taking 120 minutes for the end-to-end
pipeline.

177 minutes of runtime is too long for the runners we have now: if it
perfectly occupies all our runners it will take over 12 minutes, which
means that even if no-one else was using the runners, they could
execute 5 Mesa builds per hour at full occupancy. Unfortunately,
VirGL, Wayland/Weston, libinput, X.Org, IGT, GStreamer,
NetworkManager/ModemManager, Bolt, Poppler, etc, would all probably
have something to say about that.

When the runners aren't occupied and there's less contention for jobs,
it looks quite good:
https://gitlab.freedesktop.org/anholt/mesa/pipelines/19621/builds

This run 'only' took 20.5 minutes to execute, but then again, 3
pipelines per hour isn't that great either.

Two hours of end-to-end pipeline time is also obviously far too long.
Amongst other things, it practically precludes pre-merge CI: by the
time your build has finished, someone will have pushed to the tree, so
you need to start again. Even if we serialised it through a bot, that
would limit us to pushing 12 changesets per day, which seems too low.

I'm currently talking to two different hosts to try to get more
sponsored time for CI runners. Those are both on hold this week due to
travel / personal circumstances, but I'll hopefully find out more next
week. Eric E filed an issue
(https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/120) to
enable ccache cache but I don't see myself having the time to do it
before next month.

In the meantime, it would be great to see how we could reduce the
number of jobs Mesa runs for each pipeline. Given we're already
exceeding the limits of parallelism, having so many independent jobs
isn't reducing the end-to-end pipeline time, but instead just
duplicating effort required to fetch and check out sources, cache (in
the future), start the container, run meson or ./configure, and build
any common files.

I'm taking it as a given that at least three separate builds are
required: autotools, Meson, and SCons. Fair enough.

It's been suggested to me that SWR should remain separate, as it takes
longer to build than the other drivers, and getting fast feedback is
important, which is fair enough.

Suggestion #1: merge scons-swr into scons-llvm. scons-nollvm will
already provide fast feedback on if we've broken the SCons build, and
the rest is pretty uninteresting, so merging scons-swr into scons-llvm
might help cut down on duplication.

Suggestion #2: merge the misc Gallium jobs together. Building
gallium-radeonsi and gallium-st-other are both relatively quick. We
could merge these into gallium-drivers-other for a very small increase
in overall runtime for that job, and save ourselves probably about 10%
of the overall build time here.

Suggestion #3: don't build so much LLVM in autotools. The Meson
clover-llvm builds take half the time the autotools builds do. Perhaps
we should only build one LLVM variant within autotools (to test the
autotools LLVM selection still works), and then build all the rest
only in Meson. That would be good for another 15-20% reduction in
overall pipeline run time.

Suggestion #4 (if necessary): build SWR less frequently. Can we
perhaps demote SWR to an 'only:' job which will only rebuild SWR if
SWR itself or Gallium have changed? This would save a good chunk of
runtime - again close to 10%.

Doing the above would reduce the run time fairly substantially, for
what I can tell is no loss in functional coverage, and bring the
parallelism to a mere 1.5x oversubscription of the whole
organisation's available job slots, from the current 2x.

Any thoughts?

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

[Mesa-dev] Fwd: PSA: Mailman changes, From addresses no longer accurate

2019-02-12 Thread Daniel Stone
Hi all,
Unfortunately, freedesktop.org's job of sending mail to a huge number
of people whilst pretending to be other people, has just got even
harder than it was.

fd.o can no longer (at least for the moment) send mail with the From
addresses of DMARC/DKIM/SPF-protected sender domains. When we try to
do so, large providers reject the mail, despite DMARC records
explicitly specifying that the mail should be accepted. Worse than
that, not only does the immediate delivery attempt fail, but it
punishes our sender reputation enough that _other_ mail delivery
fails: after we hit a DMARC-related failure, large providers often
refuse delivery attempts for mail from non-DMARC-protected domains.

As a result, if the sender domain has a DMARC record, we rewrite the
From address to be the list's address, preserving the original author
in Reply-To.

I'm chasing this up through a few channels, but in the meantime,
please be aware that the From address on mails may no longer be
accurate. If you are attempting to apply patches with git-am, please
check that the commit author is not 'Person Name via listname-devel
'.

If you are replying privately to a list mail, please be _very_ careful
that you are replying to the original sender (in Reply-To) and not the
list itself.

Cheers,
Daniel

-- Forwarded message -
From: Daniel Stone 
Date: Mon, 11 Feb 2019 at 23:38
Subject: PSA: Mailman changes, From addresses no longer accurate
To: , 


Hi all,
We have hit another step change in aggressive anti-spam techniques
from major mail providers. Over the past few days, we saw a huge spike
in the number of mails we were failing to deliver to GMail and
outlook.com in particular.

It looks like it is now no longer acceptable for us to break
DMARC/DKIM/SPF. These are DNS-based extensions to SMTP, which allow
domains to publish policies as to who should be allowed to send email
on their behalf. SPF provides source filtering, so e.g.
freedesktop.org could specify that no-one should accept mail with a
From: *@freedesktop.org unless it came from gabe.freedesktop.org.
Mailman completely breaks this: if I specified a filter only allowing
Google to send mail for @fooishbar.org, then anyone enforcing SPF
would reject receipt of this mail, as it would arrive from fd.o with
my From address.

DKIM allows domains to publish a public key in DNS, inserting a header
into mails sent from their domain cryptographically signing the value
of named headers. Mailman breaks this too: changing the Sender header
(such that bounces get processed by Mailman, rather than sending a
deluge of out-of-office and mailbox-over-quota messages to whoever
posts to the list) can break most DKIM signatures. Mailman adding the
unsubscribe footer also breaks this; we could make it not add the
footer, but in order to do so we'd have to convince ourselves that we
were not decreasing our GDPR compliance.

DMARC ties the two together, allowing domains to specify whether or
not DKIM/SPF should be mandatory, and if they fail, what action should
be taken. Despite some domains specifying a fail action of 'none'
(receiving MTA to send an advisory report to a named email address,
but still allow the email), it seems that popular services still
interpret 'none' as 'reject'.

As a result, Google in particular is dropping some number of our mails
on the floor. This does _not_ just apply to mails which fail
DMARC/DKIM/SPF: every mail we send that fails these filters (which is
a lot - e.g. Intel and NVIDIA both have SPF) decreases our sender
reputation with GMail and causes it to reject legitimate mails.

I've reached out to Google through a couple of channels to see what we
can do to increase our delivery rate to them. In the meantime, if your
mail is hosted by Google, or Outlook, and you think you're missing
mails - you probably are.

Mailman has also now been reconfigured such that if it spots a
potential DMARC violation, it rewrites the From address to be
@lists.freedesktop.org, keeping the original author in Reply-To. It
also strips DKIM headers. This seems to be about the best we can do,
unless and until the major mail service providers offer us some
alternate way to send mail. If you are replying privately to someone,
you should check very carefully that you are replying to them and not
to the list.

Unfortunately we don't have a good answer in the long run. The latest
published RFC at https://tools.ietf.org/html/rfc6377 suggests that
there are no good solutions. If anyone is blessed with an abundance of
time and familiar with the current email landscape, I would love to
talk to you and get your help to work on this. Unfortunately we don't
have the manpower to actually properly monitor email; it can often
take a collapse in successful-delivery rates for us to notice.

Ultimately, I suspect the best solution is to move most of our
discussions to dedicated fora like GitLab issues, or something like
Discourse. Fundamentally, the thing we're trying to do (send email

Re: [Mesa-dev] [PATCH 1/3] egl/android: Delete set_damage_region from egl dri vtbl

2019-02-08 Thread Daniel Stone
Hi,

On Fri, 20 Jul 2018 at 19:32, Eric Anholt  wrote:
> Harish Krupo  writes:
> > Thank you, understood it. I should have read the spec better :(.
> > Also, generalizing Android/deqp's usage seems to be wrong. Android's
> > deqp passed previously even when the driver wasn't restricting the
> > rendering to only the damaged regions.
> > Should I update these in the comments section of the extension?
>
> Yes, please.  If we're building an API, we should be documenting what it
> does.

I've resurrected this series in the form of a GitLab MR:
https://gitlab.freedesktop.org/wayland/weston/merge_requests/106

Looking at the original implementation, I think it was misguided: the
Intel driver hook replaced the scissor region in the context with the
extents of the damage region. Unless I've completely misread the spec,
the damage region should be additive to the scissor region, rather
than replacing it: it should also only apply to winsys buffers and not
user FBOs. Given that, I changed the DRI interface to target a
drawable rather than a context, as well as cleaned it up, renamed it,
added substantial documentation, and a Gallium + VC4 implementation.

The MR is tagged WIP because I still have a lot of outstanding
questions on how the implementation should look.

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


Re: [Mesa-dev] [PATCH] freedreno: Fix meson build.

2019-02-07 Thread Daniel Stone
On Thu, 7 Feb 2019 at 14:59, Eric Engestrom  wrote:
> On Wednesday, 2019-02-06 18:36:09 +, Vinson Lee wrote:
> > ../src/gallium/drivers/freedreno/freedreno_resource.c: In function 
> > ‘fd_resource_create_with_modifiers’:
> > ../src/gallium/drivers/freedreno/freedreno_resource.c:884:30: error: 
> > ‘DRM_FORMAT_MOD_QCOM_COMPRESSED’ undeclared (first use in this function)
> >allow_ubwc = find_modifier(DRM_FORMAT_MOD_QCOM_COMPRESSED, modifiers, 
> > count);
>
> That's a weird error... I would've expected the `#include `
> to fail with a "No such file". If you copied the wrong part of the error
> message, can you update that?

Presumably it just finds an outdated copy of drm_fourcc.h, which
doesn't have the Qualcomm modifier, from the system include path.

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


Re: [Mesa-dev] [PATCH 13/13] wayland: Add buffer handling and visuals for fp16 formats

2019-01-30 Thread Daniel Stone
Hi Kevin,

On Mon, 28 Jan 2019 at 18:43, Kevin Strasser  wrote:
> Set loader caps indicating that wayland can handle both rgba ordering and
> fp16 formats.
>
> NOTE: This requries libwayland to provide definitions for
> WL_SHM_FORMAT_XBGR16161616F and WL_SHM_FORMAT_ABGR16161616F

To be honest, we wouldn't be very likely to add those until at least
Pixman got support for FP16 formats. (Can you also upload those
through, e.g., TexImage2D when using GLES?)

>  static const __DRIimageLoaderExtension image_loader_extension = {
> diff --git a/src/egl/wayland/wayland-drm/wayland-drm.c 
> b/src/egl/wayland/wayland-drm/wayland-drm.c
> index 3c6696d..9dd7fd3 100644
> --- a/src/egl/wayland/wayland-drm/wayland-drm.c
> +++ b/src/egl/wayland/wayland-drm/wayland-drm.c
> @@ -117,6 +117,8 @@ drm_create_buffer(struct wl_client *client, struct 
> wl_resource *resource,
>  case WL_DRM_FORMAT_XRGB:
>  case WL_DRM_FORMAT_YUYV:
>  case WL_DRM_FORMAT_RGB565:
> +case WL_DRM_FORMAT_ABGR16161616F:
> +case WL_DRM_FORMAT_XBGR16161616F:
>  break;
>  default:
>  wl_resource_post_error(resource,
> @@ -220,6 +222,10 @@ bind_drm(struct wl_client *client, void *data, uint32_t 
> version, uint32_t id)
>WL_DRM_FORMAT_XRGB);
>  wl_resource_post_event(resource, WL_DRM_FORMAT,
> WL_DRM_FORMAT_RGB565);
> +wl_resource_post_event(resource, WL_DRM_FORMAT,
> +   WL_DRM_FORMAT_ABGR16161616F);
> +wl_resource_post_event(resource, WL_DRM_FORMAT,
> +   WL_DRM_FORMAT_XBGR16161616F);

These should only be advertised if the underlying driver actually
supports texturing from FP16.

Regardless, we try to avoid adding ~anything new to wl_drm. It would
be much better to have DRM FourCC definitions for these formats and
use them via the linux_dmabuf extension if available.

If the driver advertises DRM_FORMAT_*16161616F formats through the EGL
dmabuf format query extension, then the server will automatically
advertise them to clients and import will just work on the server side
without having to touch src/egl/wayland/wayland-drm/, which we'd
mostly prefer to be preserved in amber.

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


Re: [Mesa-dev] Fwd: Review for last remaining Mesa wayland-drm depth 30 bits?

2019-01-29 Thread Daniel Stone
Hi,

On Tue, 29 Jan 2019 at 16:05, Adam Jackson  wrote:
> On Tue, 2019-01-29 at 14:45 +0100, Mario Kleiner wrote:
> > could i get some review of the last two missing patches of mine for
> > depth 30 support in Mesa's egl/wayland wl-drm backend? They are over
> > six months old now, well-tested at time of original submission:
> >
> > https://patchwork.freedesktop.org/project/mesa/list/?submitter=14956
> >
> > Would be good to get this into Mesa 19 before new color formats are
> > added. Should be useful for new formats as well.
>
> 4 and 5 are:
>
> Reviewed-by: Adam Jackson 

And they are also:
Reviewed-by: Daniel Stone 

Thanks for chasing this up!

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


Re: [Mesa-dev] Thoughts after hitting 100 merge requests?

2019-01-27 Thread Daniel Stone
Hi,

On Fri, 25 Jan 2019 at 23:24, Rob Clark  wrote:
> (Hmm, I guess I should take a look at what sort of API gitlab offers,
> but that will probably have to wait until after the branchpoint.. tbh
> I'd actually be pretty happy w/ a gitlab equiv of 'git pw as -s' for
> merging things from cmdline.)

Add this to your Git remote specification:
fetch = +refs/merge-requests/*:refs/heads/mr/*

And then the actual branch submitted for an MR will be present as mr/100/head.

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


Re: [Mesa-dev] [PATCH] docs: add note about sending merge-requests from forks

2019-01-23 Thread Daniel Stone
Hi,

On Wed, 23 Jan 2019 at 10:09, Eric Engestrom  wrote:
> On Wednesday, 2019-01-23 10:36:15 +0100, Erik Faye-Lund wrote:
> > Sending MRs from the main Mesa repository increase clutter in the
> > repository, and decrease visibility of project-wide branches. So it's
> > better if MRs are sent from forks instead.
> >
> > Let's add a note about this, in case its not obvious to everyone.
>
> Yes please, we already have way too many dead branches in the main repo
> without adding that kind of things to it.
>
> One other thing is that (last time I checked) the scripts propagating
> the repo to github et al. don't propagate branch deletions, which means
> the clutter never gets cleaned there.

They're propagated from gitlab.fd.o to git.fd.o, as the hook is run
within regular post-receive, but you're right that pushing from
git.fd.o to GitHub doesn't notice old branches, as it just pushes
everything present in the git.fd.o repo to GitHub, and doesn't notice
any branches no longer present.

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


Re: [Mesa-dev] Thoughts after hitting 100 merge requests?

2019-01-17 Thread Daniel Stone
Hi,

On Thu, 17 Jan 2019 at 16:35, Jason Ekstrand  wrote:
> On January 17, 2019 08:58:03 Erik Faye-Lund  
> wrote:
> > Whoops! I meant to say something like "we'd need to be able to
> > distinguis between CI steps that are triggered due to new MRs versus
> > updated MRs, or pushes to existing branches".
> >
> >> Anyway, Jason did actually write that hook, and it's something I'm
> >> happy to host on existing fd.o machines. I just haven't got to doing
> >> it, since I ended up taking my sabbatical a lot more seriously than I
> >> expected, and now I'm back to work I've got a bit of a backlog. But
> >> we
> >> can definitely do it, and pretty soon.
> >
> > Cool, then I won't worry about it, and just assume it'll appear
> > magically soon :)
>
> My script was a total hack. It's probably massively insecure and doesn't
> include any code to provide a diffstat which has been requested by several
> people. Someone taking it a bit more seriously would probably be good
> before we deploy anything.

With the caveat that I can no longer see the script because it's been
expired out of the pastebin (why not make a GitLab repo or at least
upload it to a snippet?) ...

I had the same assumption when you posted it, but came to the
conclusion it was actually OK, or at least would be with very minimal
work. We can configure Apache and GitLab pretty easily so it can only
be triggered with a secret token which is buried in the repo config
and/or accessible only to admins. It calls back into GitLab to get the
changes, so there's no danger of it sending completely arbitrary
content even if someone does figure out how to trigger it when they
shouldn't. It also has GitLab project -> email destination hardcoded
in the script, so there's no danger of it being used to spam arbitrary
addresses either.

Even without that, given that people currently only need to sign up to
Bugzilla (without a captcha) in order to send email with arbitrary
content to mesa-dev@, 'less spam-prone than the status quo' is an
embarrassingly low bar anyway.

Whoever wants to see this happen should ping Jason to get the script
and his suggested changes, get it in a GitLab repo, then file an issue
on https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/new/
and I'll get it deployed.

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


Re: [Mesa-dev] Thoughts after hitting 100 merge requests?

2019-01-17 Thread Daniel Stone
Hi,

On Thu, 17 Jan 2019 at 07:38, Erik Faye-Lund
 wrote:
> 1. New MRs should probably get their cover-letter automatically sent to
> the mailing list for incrased visibility.
>
> [...]
>
> I don't think any of these issues are show-stoppers from moving
> entirely to MRs, though. Perhaps issue #1 here should be fixed first,
> dunno...
>
> Issue #1 is of course "just" a matter of writing some script that gets
> triggered by a hook. It's just work that needs to be done; any of us
> that complain about it could take up the work, I suppose.
>
> The only question is where to host such a service... perhaps it's just
> a gitlab CI step? That way we'd get some "automatic" cloud computing
> power to do the work, but it doesn't really seem like a perfect fit;
> we'd need to be able to distinguis between CI steps that are triggered
> due to new

Unfinished sentence?

Anyway, Jason did actually write that hook, and it's something I'm
happy to host on existing fd.o machines. I just haven't got to doing
it, since I ended up taking my sabbatical a lot more seriously than I
expected, and now I'm back to work I've got a bit of a backlog. But we
can definitely do it, and pretty soon.

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


Re: [Mesa-dev] Thoughts after hitting 100 merge requests?

2019-01-16 Thread Daniel Stone
Hi,

On Wed, 16 Jan 2019 at 13:01, Lionel Landwerlin
 wrote:
> - It seems we only get notifications when adding to an MR, I could like to 
> subscribe to particular tags

If you go to https://gitlab.freedesktop.org/mesa/mesa/labels/ then you
can subscribe to things per-label. That applies to both issues and
MRs, but might help.

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


Re: [Mesa-dev] Thoughts after hitting 100 merge requests?

2019-01-16 Thread Daniel Stone
Hi,

On Tue, 15 Jan 2019 at 23:47, Matt Turner  wrote:
> On Mon, Jan 14, 2019 at 4:36 AM Daniel Stone  wrote:
> > On Fri, 11 Jan 2019 at 17:05, Jason Ekstrand  wrote:
> > >  5. There's no way with gitlab for Reviewed-by tags to get automatically 
> > > applied as part of the merging process.  This makes merging a bit more 
> > > manual than it needs to be but is really no worse than it was before.
> >
> > I'm still on the side of not seeing the value in them.
>
> Reviewed-by tags are useful for measuring the quantity of patch review
> people do (which is useful in a corporate environment...). It's often
> a thankless task that's valued much lower than first order
> contributions, so having a way to at least quantify patch reviews
> shows that people are spending their time to help others contribute.
>
> The number of R-b tags is not a 100% accurate picture of the
> situation, but it gives at least a good overview of who is doing the
> tedious work of patch review. For instance, in 2018 the top reviewers
> are
>
> 620 Bas Nieuwenhuizen 
> 530 Marek Olšák 
> 505 Jason Ekstrand 
> 452 Kenneth Graunke 
>
> If my name were in there, it would definitely be something I put on my
> yearly review.

Obviously shell scripting will not do in the advanced enterprise
environment, so we're into the realm of Python. Nevertheless, I've
attached a script which will let you prove your individual worth to
the company, as well as producing a leaderboard for team morale
purposes:

~/tmp % ./kwg-gitlab-rb.py
kwg participated in 10 merged MRs this year (61 total):
MR  105: gallium: Add a PIPE_CAP_QUERY_PIPELINE_STATISTICS_SINGLE
capability and query type
MR   96: st/mesa: Optionally override RGB/RGBX dst alpha blend factors
MR   95: st/nir: Lower TES gl_PatchVerticesIn to a constant if
linked with a TCS.
MR   92: nir: Allow a non-existent sampler deref in
nir_lower_samplers_as_deref
MR   62: i965: fix VF cache issue workaround
MR   39: i965: Enable software support for
ARB_gpu_shader_fp64/ARB_gpu_shader_int64
MR   26: Revert "nir/lower_indirect: Bail early if modes == 0"
MR   12: Add preemption support to i965 on gen9+
MR9: Misc optimizations
MR4: mesa/st: Expose compute shaders when NIR support is advertised.

Top 10 MR participants:
 29 jekstrand
 16 anholt
 14 bnieuwenhuizen
 10 jljusten
 10 kwg
 10 idr
  9 dbaker
  9 eric
  8 llandwerlin
  6 cmarcelo

Cheers,
Daniel
#!/usr/bin/python3

from collections import Counter
import datetime
from itertools import chain
import gitlab
import os
import sys

MY_USERNAME="kwg"
LEADERBOARD_LEN=10

# Look back over the past year
end_of_year = datetime.datetime.now()
start_of_year = end_of_year - datetime.timedelta(days=365)

# ... or calendar years are available
#start_of_year = datetime.datetime(year=2017, month=12, day=31)
#end_of_year = datetime.datetime(year=2019, month=1, day=1)

gl = gitlab.Gitlab("https://gitlab.freedesktop.org;, os.environ["GITLAB_TOKEN"], api_version=4)
project = gl.projects.get(id="mesa/mesa")

merged_mrs = project.mergerequests.list(state="merged", updated_after=start_of_year, updated_before=end_of_year, all=True, as_list=False)
my_mrs = list(filter(lambda mr: MY_USERNAME in [p["username"] for p in mr.participants()], merged_mrs))
print("{user} participated in {me} merged MRs this year ({all} total):".format(user=MY_USERNAME, me=len(my_mrs), all=len(list(merged_mrs
for mr in my_mrs:
print("MR {:4d}: {}".format(mr.iid, mr.title))

print()
print("Top {} MR participants:".format(LEADERBOARD_LEN))

leaderboard = Counter(chain.from_iterable(map(lambda mr: [p["username"] for p in mr.participants()], merged_mrs)))
for hero, count in leaderboard.most_common(LEADERBOARD_LEN):
print("{:3d} {}".format(count, hero))
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] Thoughts after hitting 100 merge requests?

2019-01-15 Thread Daniel Stone
Hey,

On Tue, 15 Jan 2019 at 20:22, Rob Clark  wrote:
> On Tue, Jan 15, 2019 at 7:40 AM Daniel Stone  wrote:
> > My question would again be what value that brings you. Do you just
> > like seeing the name there, or do you go poke the people on IRC, or
> > follow up via email, or ... ? Again I personally go look through the
> > original review to see what came up during that first, but everyone's
> > different, so I'm just trying to understand what you actually do with
> > that information, so we can figure out if there's a better way to do
> > things for everyone rather than just blindly imitating what came
> > before.
>
> If I am curious or have some questions about why some code is the way
> it is I frequently use tig-blame, which makes it easy to step into the
> commit that made the change and see the commit msg and r-b tags..  I
> guess the most important part if I need to ping someone on IRC w/
> questions is the author, but it seems like having the other tags handy
> without context-switching to browser/gitlab is useful.
>
> I guess I don't as frequently dig into the history of the original
> patchset and it's review comments.. mostly because that isn't as easy
> with the email based review process.  Making this easier would defn be
> a win.  But in cases where I don't have to leave the comfort of tig,
> it would be nice not to have to start doing so..
>
> This is not an argument for sticking to email based process, just
> defence of what I think would be a useful feature for gitlab to gain
> ;-)

Thanks, that helps. How about this? It technically even fits in one
line, though you might wish it didn't.

~/mesa/mesa master ← → * % export
GITLAB_TOKEN=secret-api-token-you-get-from-web-UI
~/mesa/mesa master ← → * % export
GITLAB_COMMIT=f967273fb442de8281f8248e8c8bff5b13ab89e4
~/mesa/mesa master ← → * % curl --silent --header "PRIVATE-TOKEN:
$GITLAB_TOKEN" 
https://gitlab.freedesktop.org/api/v4/projects/mesa%2Fmesa/merge_requests/$(curl
--silent --header "PRIVATE-TOKEN: $GITLAB_TOKEN"
https://gitlab.freedesktop.org/api/v4/projects/mesa%2Fmesa/repository/commits/${GITLAB_COMMIT}/merge_requests
| jq -r '.[] | .iid')/participants | jq -r '.[] | { username:
.username, realname: .name }'
{
  "username": "sroland",
  "realname": "Roland Scheidegger"
}
{
  "username": "kwg",
  "realname": "Kenneth Graunke"
}
{
  "username": "mareko",
  "realname": "Marek Olšák"
}
{
  "username": "tpalli",
  "realname": "Tapani Pälli"
}

> (Also, I suppose preserving those artifacts of "the old process" is
> probably useful for folks who run git statistics, although personally
> that does not effect me.)

[mumbles something about GDPR]

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


Re: [Mesa-dev] [PATCH] egl/wayland: break double/tripple buffering feedback loops

2019-01-15 Thread Daniel Stone
Hi,

On Tue, 18 Dec 2018 at 17:59, Lucas Stach  wrote:
> Am Dienstag, den 18.12.2018, 17:43 + schrieb Emil Velikov:
> > > On Tue, 18 Dec 2018 at 11:16, Lucas Stach  wrote:
> > >   if (dri2_surf->back == NULL)
> > >  dri2_surf->back = _surf->color_buffers[i];
> > > - else if (dri2_surf->back->dri_image == NULL)
> > > + else if (dri2_surf->back->dri_image == NULL && 
> > > dri2_surf->color_buffers[i].dri_image)
> > >  dri2_surf->back = _surf->color_buffers[i];
> > > + age = dri2_surf->back->age;
> > >}
> > >
> >
> > AFAICT this is the wayland equivalent of
> > 4f1d27a406478d405eac6f9894ccc46a80034adb
> > Where the exact same logic/commit message applies.
>
> No it isn't. It's exactly what it says in the commit log. It's keeping
> the tripple buffer around for a bit, even if we don't strictly need it
> when the client is currently doing double buffering.

Right - the crucial part in Derek's GBM commit was removing the
'break' and adding the extra conditional on age.

Derek's patch stabilises the age of buffers handed back to the user,
by always returning the oldest available buffer. That slightly
pessimises rendering if there is a 'free' buffer in the queue: if four
buffers are allocated, then we will always return a buffer from three
flips ago, maybe meaning more rendering work. It means that, barring
the client holding on to one buffer for unexpectedly long, the age of
the oldest buffer in the queue will never be greater than the queue
depth.

This patch instead relies on unbalanced ages, where older buffers in
the queue are allowed to age far beyond the queue depth if not used
during normal rendering.

> When things are on the edge between double buffering being enough and
> sometimes a third buffer being needed to avoid stalling we would
> otherwise bounce rapidly between allocating and disposing the third
> buffer.
>
> The DRM platform has no such optimization and just keeps the third
> buffer around forever. This patch keeps the optimization in the Wayland
> platform, but adds a bit of hysteresis before disposing the buffer when
> going from tripple to double buffering to see if things are settling on
> double buffering.

Ideally we'd have globally optimal behaviour for both platforms, but
that doesn't really seem doable for now. I think this is a good
balance though. There will only be one GBM user at a time, so having
that allocate excessive buffers doesn't seem too bad, and the penalty
for doing so is your entire system stuttering as the compositor
becomes blocked. Given the general stability of compositors, if they
need a larger queue depth at some point, they are likely to need it
again in the near future.

Conversely, there may be a great many Wayland clients, and these
clients may bounce between overlay and GPU composition. Given that, it
seems reasonable to opportunistically free up buffers, to make sure we
have enough memory available across the system.

> > The age check here seems strange - both number used and it's relation
> > to double/triple buffering.
> > Have you considered tracking/checking how many buffers we have?
>
> A hysteresis value of 18 is just something that worked well in
> practice. It didn't appear to defer the buffer destruction for too long
>  while keeping the feedback loop well under control.

Yeah, having this #defined with a comment above it would be nice.

With that, this patch is:
Reviewed-by: Daniel Stone 

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


Re: [Mesa-dev] Thoughts after hitting 100 merge requests?

2019-01-15 Thread Daniel Stone
Hi,

On Tue, 15 Jan 2019 at 12:21, Rob Clark  wrote:
> On Tue, Jan 15, 2019 at 1:02 AM Tapani Pälli  wrote:
> > On 1/14/19 2:36 PM, Daniel Stone wrote:
> > > On Fri, 11 Jan 2019 at 17:05, Jason Ekstrand  wrote:
> > > In other projects, we looked for ways to apply the tags and ended up
> > > concluding that they didn't bring enough value to make it worthwhile.
> > > I don't know if that holds for Mesa, but it would be better to start
> > > with an actual problem statement - what value does R-b bring and how?
> > > - then look at ways to solve that problem, rather than just very
> > > directly finding a way to insert that literal text string into every
> > > commit message.
> >
> > IMO it brings some 'shared responsibility' for correctness of the patch

Oh, no doubt - we certainly haven't abandoned thorough review! So far
we haven't seen that compromised by not having a name in the commit
message.

> > and quickly accessible information on who were looking at the change. So
> > ideally later when filing bug against commit/series there would be more
> > people than just the committer that should take a look at the possible
> > regressions. At least in my experience people filing bugs tend to often
> > also CC the reviewer.

Yeah, that's really helpful. So maybe a useful flow - assuming we
eventually switch to GitLab issues - would be the ability to associate
an issue with a commit, which could then automatically drag in people
who commented on the MR which landed that commit, as well as (at
least) the reporter of the issue(s) fixed by that MR. That would need
some kind of clever - probably at least semi-manual - filtering to
make sure it wasn't just spamming the world, but it's at least a
starting point.

> +1 .. and also it is nice to see things like Reported-by/Reviewed-by
> without having to go search somewhere else (ie. outside of git/tig)

My question would again be what value that brings you. Do you just
like seeing the name there, or do you go poke the people on IRC, or
follow up via email, or ... ? Again I personally go look through the
original review to see what came up during that first, but everyone's
different, so I'm just trying to understand what you actually do with
that information, so we can figure out if there's a better way to do
things for everyone rather than just blindly imitating what came
before.

> (ofc it would be pretty awesome incentive to switch to gitlab issues
> if gitlab could automate adding Reported-by tags for MR's associated
> with an issue.. but I guess checkbox to add Reviewed-by tag would
> already make my day)

I saw this the other day, which might be more incentive:
https://csoriano.pages.gitlab.gnome.org/csoriano-blog/post/2019-01-07-issue-handling-automation/

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


Re: [Mesa-dev] Thoughts after hitting 100 merge requests?

2019-01-14 Thread Daniel Stone
Hi,

On Fri, 11 Jan 2019 at 17:05, Jason Ekstrand  wrote:
>  5. There's no way with gitlab for Reviewed-by tags to get automatically 
> applied as part of the merging process.  This makes merging a bit more manual 
> than it needs to be but is really no worse than it was before.

I'm still on the side of not seeing the value in them. Most of the
time when I go to pursue someone who reviewed a commit, I'll go to see
what came up in review anyway. Maybe someone had the same comment
which was found to be not applicable or otherwise explained away.
Reviewed-by and Acked-by are also pretty lossy anyway, and freeform
text descriptors in a comment can much better capture the intent (e.g.
'I'm strongly OK with the driver changes and weakly OK with the core
changes as it's not really my area of expertise').

In other projects, we looked for ways to apply the tags and ended up
concluding that they didn't bring enough value to make it worthwhile.
I don't know if that holds for Mesa, but it would be better to start
with an actual problem statement - what value does R-b bring and how?
- then look at ways to solve that problem, rather than just very
directly finding a way to insert that literal text string into every
commit message.

FWIW, if you go to
https://gitlab.freedesktop.org/mesa/mesa/commit/SHA1 then you get a
hyperlink from the web UI which points you to the MR. The API to do
this is pretty straightforward and amenable to piping through jq:
https://docs.gitlab.com/ce/api/commits.html#list-merge-requests-associated-with-a-commit

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


Re: [Mesa-dev] [PATCH v2] docs: Document GitLab merge request process (email alternative)

2018-12-07 Thread Daniel Stone
Hi,

On Sat, 8 Dec 2018 at 05:15, Eric Engestrom  wrote:
> On Friday, 2018-12-07 10:19:23 +0100, Erik Faye-Lund wrote:
> > Automated emails (and perhaps IRC bot) would be really nice.
>
> Agreed. Email would be great to help with the transition.
> There's work currently being done on GitLab to allow for mailing lists
> to be notified; this should cover 'new MR' as well.
> If we need this feature before GitLab is done, it should be possible to
> write a bot using the webhooks, just needs someone to take the time to
> do it :)
>
> For IRC, there's already some integration, but it's limited to notifying
> about git pushes for now:
> https://docs.gitlab.com/ee/user/project/integrations/irker.html
>
> There's an open issue about adding more events, but it hasn't seen much
> activity:
> https://gitlab.com/gitlab-org/gitlab-ce/issues/7965

Wayland uses a couple of eventd plugins chained together:
https://github.com/sardemff7/git-eventc

That notifies the channel when issues and MRs are opened or closed and
on push as well, including things like the labels. It's been pretty
useful so far.

> > Even better if it could be hooked up to scripts/get_reviewer.pl, and
> > automatically CC "the right people".
>
> Side note, I've been rewriting that script, although I need to send v2
> out at some point:
> https://patchwork.freedesktop.org/patch/226256/
>
> I would be trivial to hook that into a bot we'd write, but I don't think
> GitLab has support for something like this. I just opened an issue about
> adding support directly in GitLab:
> https://gitlab.com/gitlab-org/gitlab-ce/issues/55035

This already exists, as an EE-only feature called 'code owners':
https://docs.gitlab.com/ee/user/project/code_owners.html
https://gitlab.com/gitlab-org/gitlab-ee/issues/1012

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


Re: [Mesa-dev] [PATCH] docs: Document optional GitLab code review process

2018-11-30 Thread Daniel Stone
Hi all,
Thanks for the CC. I'm on a sabbatical until mid-January; I'll be
around but not following the lists/etc as actively as before. Please
feel free to liberally CC me (on this address, not work) or poke me on
IRC if there's something I should see or could contribute to. I'll
have limited time for the next week or so, but should be able to do
more on it next month, albeit in Australian timezone.

On Wed, 28 Nov 2018 at 17:23, Dylan Baker  wrote:
> Quoting Matt Turner (2018-11-27 19:20:09)
> > Discussion point: I think attempting to have simultaneous review in
> > two places is a recipe for wasted time. Strawman: maybe we can only
> > email the cover letter to the mailing list and include in it a link to
> > the MR?
>
> I think it's a *really* bad idea to allow both. Some people will immediately
> begin using MR/PR's only and never read the list, others will never check
> MR/PRs and only use the list. It'll leave the rest of us forced to use both. 
> We
> should either go all in and archive the mailing list and use only gitlab, or 
> not
> use PR/MR's IMHO.

I fully agree, for all the reasons listed here. It imposes a much
higher overhead on contributors, and means that reviewers effectively
need to work their way through both interfaces anyway. Since you don't
get stable links until you push, in order to link between the two, you
would need to submit a MR to GitLab, capture the URL, include that in
your cover letter / patches, git-send-email, then capture the message
ID / archive link and go back to GitLab to edit your cover letter and
insert the link. Not to mention that it would basically destroy the
usefulness of Patchwork overnight.

Weston has a pretty conservative development workflow, but even then
we've had near-zero pushback, and saw a pretty big leap in
contributions from people who have been sitting on patchsets for a
long time but not bothered to submit them when we had review on the
list. I was genuinely surprised at how big the uptick was.

> > > +  Never use the merge button on the GitLab page to push patches
> >
> > Can we disable this in Gitlab? If the button is there, people *will*
> > accidentally press it.
>
> I think Daniel was working on getting a "rebase and push" button like github 
> has
> so that we could use the button, CC'd.

This is already there, and can be configured per-repo. Under settings
-> merge requests, choose this as your merge strategy:
'Fast-forward merge
No merge commits are created and all merges are fast-forwarded, which
means that merging is only allowed if the branch could be
fast-forwarded.
When fast-forward merge is not possible, the user is given the option
to rebase.'

If the user selects the 'allow commits from members who can merge to
the target branch' checkbox when submitting the MR, reviewers can
themselves request a rebase. We have FF-only MRs in Weston, and when I
want to land a contribution after review, I hit rebase followed by
'merge after pipeline succeeds', which does what it says on the box,
i.e. waits until CI has finished and then automatically lands it.

There are a couple of rough edges here. First, users have to
explicitly select the checkbox for this to happen; an upstream feature
request to make this the default or even mandatory is at
https://gitlab.com/gitlab-org/gitlab-ce/issues/49323. Secondly, if
something else lands in the target branch between the rebase starting
and CI finishing (i.e. it's no longer an FF landing by the time CI
reports success), the reviewer has to request the rebase again. Jason
was discussing having GitLab busy-loop, running rebase+CI in a loop
until it could actually land. I don't have a link to hand for this
though.

> > I'm not sure if it's a custom thing or what (I can find out) but I'd
> > much prefer to automate things if we can. Just like patchwork, people
> > *will* forget to close merge requests if it's possible. (And people
> > currently *do* forget to close bugzilla bugs)
>
> Or we could just use gitlab's issue tracker, which will automatically close
> issues when a commit pushed to master has a tag like `Fixes: #1234` or
> `Closes: #1234`.

Right, and obviously if you land a MR through the web UI then it's
automatically closed.

> Personally speaking, I think that better next steps for gitlab integration 
> are:
> - migrate from bugzilla to gitlab issues

This is currently held up by a mutual death grip: both AMD and Intel
want to be able to move or reassign issues between kernel / Mesa / X11
within Bugzilla, so have requested that nothing moves until everything
moves. I don't know whether that has to be one big flag day or whether
the driver teams would find it acceptable for all three components to
have a documented plan with a timeline on it. Intel also have some
pretty heavy scripting and tooling around Bugzilla which would need to
be modified to track GitLab instead.

From an infrastructure point of view though, Bugzilla is getting less
and less acceptable to run as a service. It's no 

Re: [Mesa-dev] [Mesa-stable] [PATCH] vulkan/wsi/wayland: Respect non-blocking AcquireNextImage

2018-11-16 Thread Daniel Stone
Hi Emil,

On Thu, 8 Nov 2018 at 15:26, Emil Velikov  wrote:
> On Tue, 30 Oct 2018 at 12:57, Daniel Stone  wrote:
> > If the client has requested that AcquireNextImage not block at all, with
> > a timeout of 0, then don't make any non-blocking calls.
> >
> > This will still potentially block infinitely given a non-infinte
> > timeout, but the fix for that is much more involved.
>
> Did this fall through the cracks or there's another patch that supersedes it?

To be honest, I'm slightly apprehensive about merging it, given the
open questions in
https://bugs.freedesktop.org/show_bug.cgi?id=108540#c1

Getting some feedback from others would be great.

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


Re: [Mesa-dev] [PATCH 3/3] egl: Improve the debugging of gbm format matching in DRI configs.

2018-11-08 Thread Daniel Stone
On Thu, 8 Nov 2018 at 18:01, Eric Anholt  wrote:
> Previously the debug would be:
>
> libEGL debug: No DRI config supports native format 0x20203852
> libEGL debug: No DRI config supports native format 0x38385247
>
> but
>
> libEGL debug: No DRI config supports native format R8
> libEGL debug: No DRI config supports native format GR88
>
> is a lot easier to understand.

Series is:
Reviewed-by: Daniel Stone 
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 1/2] gbm: Introduce a helper function for printing GBM format names.

2018-11-06 Thread Daniel Stone
Hi,

On Tue, 6 Nov 2018 at 13:11, Eric Engestrom  wrote:
> On Friday, 2018-11-02 14:40:49 -0700, Eric Anholt wrote:
> > +GBM_EXPORT char *
> > +gbm_format_get_name(uint32_t gbm_format, struct gbm_format_name_desc *desc)
> > +{
>
> Actually, This won't work with the two GBM_BO_FORMAT_{X,A}RGB; you
> should add them as a special case here, something like:
>
>   if (gbm_format == GBM_BO_FORMAT_XRGB)
>  return "XRGB";
>
>   if (gbm_format == GBM_BO_FORMAT_ARGB)
>  return "ARGB";
>
> followed by your desc->name code.

Perhaps better would be to just lift gbm_format_canonicalize() from
src/gbm/backends/dri/gbm_dri.c and use it at function entry.

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


Re: [Mesa-dev] [PATCH] docs: mention EXT_shader_implicit_conversions

2018-11-02 Thread Daniel Stone
On Fri, 2 Nov 2018 at 15:58, Emil Velikov  wrote:
>  Ff| 2 ++
>  docs/relnotes/19.0.0.html | 2 +-
>  2 files changed, 3 insertions(+), 1 deletion(-)
>  create mode 100644 Ff
>
> diff --git a/Ff b/Ff
> new file mode 100644
> index 000..804e31ab99e
> --- /dev/null
> +++ b/Ff
> @@ -0,0 +1,2 @@
> +sdasdads
> +

... ?

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


[Mesa-dev] [PATCH] gbm: Clarify acceptable formats for gbm_bo

2018-11-01 Thread Daniel Stone
gbm_bo_create() was presumably meant to originally accept gbm_bo_format
enums, but it's accepted GBM_FORMAT_* tokens since the dawn of time.
This is good, since gbm_bo_format is rarely used and covers a lot less
ground than GBM_FORMAT_*.

Change the documentation to refer to both; this involves removing a 'see
also' for gbm_bo_format, since we can't also use \sa to refer to a
family of anonymous #defines.

Signed-off-by: Daniel Stone 
Reported-by: Pekka Paalanen 
---
 src/gbm/main/gbm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gbm/main/gbm.c b/src/gbm/main/gbm.c
index 0bf2922bacd..ee4fd3bd444 100644
--- a/src/gbm/main/gbm.c
+++ b/src/gbm/main/gbm.c
@@ -448,14 +448,14 @@ gbm_bo_destroy(struct gbm_bo *bo)
  * \param gbm The gbm device returned from gbm_create_device()
  * \param width The width for the buffer
  * \param height The height for the buffer
- * \param format The format to use for the buffer
+ * \param format The format to use for the buffer, from GBM_FORMAT_* or
+ * GBM_BO_FORMAT_* tokens
  * \param usage The union of the usage flags for this buffer
  *
  * \return A newly allocated buffer that should be freed with gbm_bo_destroy()
  * when no longer needed. If an error occurs during allocation %NULL will be
  * returned and errno set.
  *
- * \sa enum gbm_bo_format for the list of formats
  * \sa enum gbm_bo_flags for the list of usage flags
  */
 GBM_EXPORT struct gbm_bo *
-- 
2.19.1

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


[Mesa-dev] [PATCH] vulkan/wsi/wayland: Respect non-blocking AcquireNextImage

2018-10-30 Thread Daniel Stone
If the client has requested that AcquireNextImage not block at all, with
a timeout of 0, then don't make any non-blocking calls.

This will still potentially block infinitely given a non-infinte
timeout, but the fix for that is much more involved.

Signed-off-by: Daniel Stone 
Cc: mesa-sta...@lists.freedesktop.org
Cc: Chad Versace 
Cc: Jason Ekstrand 
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108540
---
 src/vulkan/wsi/wsi_common_wayland.c | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/vulkan/wsi/wsi_common_wayland.c 
b/src/vulkan/wsi/wsi_common_wayland.c
index e9cc22ec603..981243d8b14 100644
--- a/src/vulkan/wsi/wsi_common_wayland.c
+++ b/src/vulkan/wsi/wsi_common_wayland.c
@@ -699,9 +699,14 @@ wsi_wl_swapchain_acquire_next_image(struct wsi_swapchain 
*wsi_chain,
  }
   }
 
-  /* This time we do a blocking dispatch because we can't go
-   * anywhere until we get an event.
+  /* We now have to do a blocking dispatch, because all our images
+   * are in use and we cannot return one until the server does. However,
+   * if the client has requested non-blocking ANI, then we tell it up front
+   * that we have nothing to return.
*/
+  if (info->timeout == 0)
+ return VK_NOT_READY;
+
   int ret = wl_display_roundtrip_queue(chain->display->wl_display,
chain->display->queue);
   if (ret < 0)
-- 
2.19.1

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


Re: [Mesa-dev] [RFC] Allow fd.o to join forces with X.Org

2018-10-26 Thread Daniel Stone
Hi,

On Fri, 26 Oct 2018 at 11:57, Daniel Vetter  wrote:
> On Fri, Oct 26, 2018 at 10:13:51AM +1000, Peter Hutterer wrote:
> > On Wed, Oct 17, 2018 at 02:37:25PM +0200, Daniel Vetter wrote:
> > > On Wed, Oct 17, 2018 at 2:05 PM Daniel Stone  wrote:
> > > > Yeah, I think it makes sense. Some things we do:
> > > >   - provide hosted network services for collaborative development,
> > > > testing, and discussion, of open-source projects
> > > >   - administer, improve, and extend this suite of services as necessary
> > > >   - assist open-source projects in their use of these services
> > > >   - purchase, lease, or subscribe to, computing and networking
> > > > infrastructure allowing these services to be run
> > >
> > > I fully agree that we should document all this. I don't think the
> > > bylaws are the right place though, much better to put that into
> > > policies that the board approves and which can be adapted as needed.
> > > Imo bylaws should cover the high-level mission and procedural details,
> > > as our "constitution", with the really high acceptance criteria of
> > > 2/3rd of all members approving any changes. Some of the early
> > > discussions tried to spell out a lot of the fd.o policies in bylaw
> > > changes, but then we realized it's all there already. All the details
> > > are much better served in policies enacted by the board, like we do
> > > with everything else.
> > >
> > > As an example, let's look at XDC. Definitely one of the biggest things
> > > the foundation does, with handling finances, travel sponsoring grants,
> > > papers committee, and acquiring lots of sponsors. None of this is
> > > spelled out in the bylaws, it's all in policies that the board
> > > deliberates and approves. I think this same approach will also work
> > > well for fd.o.
> > >
> > > And if members are unhappy with what the board does, they can fix in
> > > the next election by throwing out the unwanted directors.
> >
> > yeah, fair call. though IMO in that case we can just reduce to
> >
> >\item Support free and open source projects through the freedesktop.org
> >infrastructure.
> >
> > because my gripe is less with the fdo bit but more with defining what
> > "project hosting" means, given that we use that term to exclude fdo projects
> > from getting anything else. I think just dropping that bit is sufficient.
>
> Hm yeah, through the lens of "everything not explicitly listed isn't in
> scope as X.org's purpose", leaving this out is probably clearest. And
> under 2.4 (i) the board already has the duty to interpret what exactly
> this means wrt membership eligibility.
>
> Harry, Daniel, what do you think?

Yeah, that's fine. I didn't specifically want the enumerated list of
what we do in the bylaws, just spelling it out for background as a
handy reference I could point to later. I think maybe we could reduce
it to something like:
  Administer, support, and improve the freedesktop.org hosting
infrastructure to support the projects it hosts

Gives us enough scope to grow in the future (e.g. we don't need a
bylaws change to move from pure-git to GitLab), avoids the sticky
question of what exactly fd.o hosts in the bylaws (e.g. if
NetworkManager needs a new repo then we don't have to consult
membership to add it), but is still pretty firmly limited in scope.

Any of the above have my in-principle ack though, I think they're all
reasonable colours for our lovely shed.

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


Re: [Mesa-dev] [RFC] Allow fd.o to join forces with X.Org

2018-10-17 Thread Daniel Stone
On Tue, 16 Oct 2018 at 08:17, Peter Hutterer  wrote:
> On Mon, Oct 15, 2018 at 10:49:24AM -0400, Harry Wentland wrote:
> > + \item Support free and open source projects through the 
> > freedesktop.org
> > + infrastructure. For projects outside the scope of item (\ref{1}) 
> > support
> > + extends to project hosting only.
> > +
>
> Yes to the idea but given that the remaining 11 pages cover all the legalese
> for xorg I think we need to add at least a section of what "project hosting"
> means. Even if it's just a "includes but is not limited to blah".  And some
> addition to 4.1 Powers is needed to spell out what the BoD can do in regards
> to fdo.

Yeah, I think it makes sense. Some things we do:
  - provide hosted network services for collaborative development,
testing, and discussion, of open-source projects
  - administer, improve, and extend this suite of services as necessary
  - assist open-source projects in their use of these services
  - purchase, lease, or subscribe to, computing and networking
infrastructure allowing these services to be run

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


Re: [Mesa-dev] [PATCH mesa 3/6] vulkan/wsi/display: pass the plane's modifiers to the image

2018-10-03 Thread Daniel Stone
On Thu, 27 Sep 2018 at 00:33, Keith Packard  wrote:
> Eric Engestrom  writes:
> > Signed-off-by: Eric Engestrom 
>
> (I'll have to let someone familiar with the formats and modifiers stuff
> review this one; I'm not comfortable with that at all).

For my sins, I am, and this patch is:
Reviewed-by: Daniel Stone 

I didn't have time to properly look at the others yet, but most of
what you said there makes sense to me, so I'll hang on for a v2.

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


Re: [Mesa-dev] [PATCH 4/5] vulkan/wsi: Use the interface from the real modifiers extension

2018-10-03 Thread Daniel Stone
Hi,

On Mon, 1 Oct 2018 at 22:25, Jason Ekstrand  wrote:
> index 70594d6c053..2850349a619 100644
> --- a/src/intel/vulkan/anv_image.c
> +++ b/src/intel/vulkan/anv_image.c
> @@ -109,6 +109,8 @@ choose_isl_tiling_flags(const struct 
> anv_image_create_info *anv_info,
> case VK_IMAGE_TILING_LINEAR:
>flags = ISL_TILING_LINEAR_BIT;
>break;
> +   case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT:
> +  flags = 1 << isl_mod_info->tiling;

This will break non-modifier-aware setups, as we'll call
choose_isl_tiling_flags(isl_mod_info == NULL) ...

> @@ -563,10 +562,13 @@ anv_image_create(VkDevice _device,
>
> const struct wsi_image_create_info *wsi_info =
>vk_find_struct_const(pCreateInfo->pNext, WSI_IMAGE_CREATE_INFO_MESA);
> -   if (wsi_info && wsi_info->modifier_count > 0) {
> +
> +   if (pCreateInfo->tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT) {
> +  const VkImageDrmFormatModifierListCreateInfoEXT *mod_info =
> + vk_find_struct_const(pCreateInfo->pNext, 
> IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT);
>isl_mod_info = choose_drm_format_mod(>instance->physicalDevice,
> -   wsi_info->modifier_count,
> -   wsi_info->modifiers);
> +   mod_info->drmFormatModifierCount,
> +   mod_info->pDrmFormatModifiers);
>assert(isl_mod_info);
> }

... when this branch is not taken.

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


Re: [Mesa-dev] [PATCH v2 0/5] Use GitLab CI to build Mesa

2018-09-28 Thread Daniel Stone
Hi all,

On Fri, 21 Sep 2018 at 20:59, Daniel Stone  wrote:
> On Wed, 29 Aug 2018 at 11:13, Juan A. Suarez Romero  
> wrote:
> > This is a first part, version 2, of a more complete proposal to use GitLab 
> > CI to
> > build and test Mesa. This first part just adds the required pieces to build
> > Mesa, using the different supported tools (meson, autotools, and scons).
> >
> > A second part, to be sent in the future, will use the results of the former 
> > to
> > run different tests and verify everything works fine.
> >
> > An example of the pipeline that will result from this patchset can be seen 
> > at
> > https://gitlab.freedesktop.org/jasuarez/mesa/pipelines/3070.
> >
> > I hope I can explain here all the rationale behind this proposal. Any 
> > question
> > is welcomed.
>
> I still have an open NAK since this would DoS our existing fd.o CI
> runner infrastructure; GitLab itself is fine, but subjecting our
> elderly build machine with a flaky network on the wrong continent to
> this would be too much.
>
> I'm pretty sure that I'll be able to stand up two sets of runners -
> one still based in the UK, but on modern and dedicated machines with
> better network; another on a US-based cloud provider, matching our
> us-east GitLab master location - before XDC starts, so during XDC we
> could get those as dedicated runners for a fork of the Mesa project
> and try to gather some stats and profiles on how they actually
> perform.
>
> Hopefully if it goes well then we should be able to switch them on
> almost immediately.

Unfortunately we're still externally stalled on this. I'd suggest that
we give Juan owner access to the Mesa project in GitLab, so he can
connect the existing Igalia runners to our project. These runners
already do the execution for the gitlab.com project, so should be more
than enough to run ours until we can get the external runners.

Anyone object, agree, other?

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


Re: [Mesa-dev] [PATCH v2 0/5] Use GitLab CI to build Mesa

2018-09-21 Thread Daniel Stone
Hi Juan,

On Wed, 29 Aug 2018 at 11:13, Juan A. Suarez Romero  wrote:
> This is a first part, version 2, of a more complete proposal to use GitLab CI 
> to
> build and test Mesa. This first part just adds the required pieces to build
> Mesa, using the different supported tools (meson, autotools, and scons).
>
> A second part, to be sent in the future, will use the results of the former to
> run different tests and verify everything works fine.
>
> An example of the pipeline that will result from this patchset can be seen at
> https://gitlab.freedesktop.org/jasuarez/mesa/pipelines/3070.
>
> I hope I can explain here all the rationale behind this proposal. Any question
> is welcomed.

I still have an open NAK since this would DoS our existing fd.o CI
runner infrastructure; GitLab itself is fine, but subjecting our
elderly build machine with a flaky network on the wrong continent to
this would be too much.

I'm pretty sure that I'll be able to stand up two sets of runners -
one still based in the UK, but on modern and dedicated machines with
better network; another on a US-based cloud provider, matching our
us-east GitLab master location - before XDC starts, so during XDC we
could get those as dedicated runners for a fork of the Mesa project
and try to gather some stats and profiles on how they actually
perform.

Hopefully if it goes well then we should be able to switch them on
almost immediately.

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


Re: [Mesa-dev] [PATCH mesa 0/6] Let's get rid of 99% of warnings :)

2018-09-21 Thread Daniel Stone
On Fri, 21 Sep 2018 at 19:48, Jason Ekstrand  wrote:

> You should try building with clang. 
>

If only there was some way we could do both, in some kind of automated
fashion!
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


  1   2   3   4   5   6   7   8   >