On Thu, 3 Jun 2010 13:24:08 -0400, Kristian Høgsberg <k...@bitplanet.net> wrote:
> On Thu, Jun 3, 2010 at 1:16 PM, Brian Paul <bri...@vmware.com> wrote:
> > Jakob Bornecrantz wrote:
> >>
> >> Currently these extensions try to address two use cases. Creating
> >> Images to be shared between processes. Creating resources to be used
> >> as a scanout target. Leaving the sharing aside until later. Lets look
> >> at some of the problems associated with that.
> >>
> >> Resources suitable for scanout can be used as a render target and as a
> >> sampling source. So renderbuffer and/or texture is a good
> >> representation of it, it is also how we want to operate on it, but
> >> they are both GL objects. A EGL image however can be both of these
> >> objects and more and is far more flexible then a EGL surface. So lets
> >> use EGL image as the sharing object.
> >>
> >> The problem is that we just can't go from a any texture that happens
> >> to be large enough to a scanout buffer. Most hardware have stricter
> >> limitations on stride, tiling, placement, etc on scanout buffers then
> >> textures/rendertargets or those limitation make certain uses slower or
> >> use more memory compared to normal textures/renderbuffers. So we can't
> >> just go around creating all texture and renderbuffer as suitable for
> >> scanout just because sometime we might use it as a scanout, because it
> >> would be slower and use more memory. Now we don't have a way to say a
> >> texture/renderbuffer should be scanoutable in GL. And creating a EGL
> >> image from a texture/rendertarget and then mutating it into a
> >> scanoutable format is bad, it would effectively orphan the original
> >> resource unless we do major hacking in the driver which I don't want
> >> to do. Enter MESA_create_image and MESA_image_syste_use to solve this
> >> problem. Ok now we have a EGL image that can be used as a scanout and
> >> be shared to all the API's we want to use to render to it.
> >
> >
> > What's the use-case for a scanout buffer that's used as a texture? That
> > seems like an unusual case.
> 
> You could be pageflipping between two scanout EGLImages.  If you're
> only rendering partial updates (using EGL_NOK_swap_region, for
> example) you want to copy the updated region back from the scanout
> buffer to the new backbuffer before rendering the next frame.

Also, implementing an X Server on GL without the scanout buffer being a
texture means either I can't accelerate a lot of operations that should
be fast, like background none composited window initialization, or I
have to keep a shadow texture and periodically update front.

Attachment: pgpuBN8hFSeMo.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to