Pekka Paalanen wrote:

Bill Spitzak <[email protected]> wrote:

I always figured that the transformation of a subsurface is multiplied by the transformation of the parent surface. For the scaler proposal this means the output rectangle is in parent-surface buffer pixels.

You are confusing things.

Sub-surface is relative to its parent surface, and therefore in the
compositor implementation level, the surface transform of the parent is
multiplied into the transform of the child surface. That you got
correct.

However, we are not talking about surface transforms here.

We are talking about buffer transformations, which are private to each
surface. A buffer transform does not alter or affect the surface
transform.

The only thing a buffer transform does, is affect how the buffer
contents and size are interpreted.

The wl_scaler proposal is similar to buffer transforms: it is private
to a surface, and only affects the mapping between the surface and the
buffer. It does not affect the surface transform, and hence it has
absolutely no effect on any other surface, be it a parent surface or a
child sub-surface, or my uncle.

Bill and John, please adjust all your suggestions to this principle,
and we have one huge barrel of man-eating worms less.

No. Our proposal is that "pels" ARE EQUAL TO BUFFER PIXELS. This makes the term "pel" useless, but it may be easier to think of it that way:

In BOTH proposals the rectangle a subsurface occupies is specified in "pels". This is not different.

In our proposal pels are buffer pixels, therefore it is specified in buffer pixels of the parent.

In your proposal it is in the transform the compositor does to the outermost surface plus the xy offsets of each intermediate parent surface.

I think clients are going to want to align subsurfaces with features in their buffer, which is the primary reason I propose this, and I think why John is proposing it as well.

3. This makes the subsurface case of handing off to a library more complicated. In Alexander's implementation, the library would simply render at native resolution or not. With this, the client has to tell the library what surface scale to use and the library has to *EXACTLY* match. Maybe this isn't a huge issue, but there's no opportunity for a client to embed an older library.
This is true already for any third-party software called by a client that can draw directly into the client's output buffer.

Yes, which is why we have sub-surfaces, so that the third-party thing
can have its own buffer.

I can certainly imagine drawing libraries that can either draw into the client's buffer or use a subsurface depending on how they are currently set, or maybe use both. To draw into it's own buffer the client will have to tell the library the scale.

In addition video players that just resize to whatever rectangle they are told will not care about the scale and will work exactly the same in both proposals (except they will get events in video pixels in our proposal, which I think would be a little easier for them).
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to