Jerome Glisse wrote:
> Hi all,
> 
> There have been discussion on irc and elsewhere about the need or not
> of an object describing a render buffer (could be scan-out buffer or
> or other specialized card render buffer: color buffer, zbuffer, ...).
> This would mostly act as a wrapper around BO.
> 
> Here is what i can imagine as an interface for this:
>       - RenderCreate(properties)
>       - RenderMapLinear
>       - RenderMap
>       - RenderUnmap
>       - Renderunreference
> Properties would be a set of common properties like:
> - width
> - height
> - bit per pixel
> - pitch
> - scan out buffer
> And also driver private properties like:
> - compressed in this weird specific format
> - ...
> At creation you give a set of properties and you can't change them
> afterward (well i think it's good enough rules).
> 
> For what this could be use full ? Well first it would be very useful
> for mode setting as we can then just have a place where constraint on
> scan out buffer memory layout are properly checked. Right now we just
> blindly trust user space to provide a big enough buffer.
> 
> This could also be use full for creating render buffer making cmd
> checking a lot easier (as we would have access to width, height,
> pitch or whatever information is needed to make sure that we have
> a proper target for our rendering command.
> 
> Also we could offer common interface for scan out buffer where
> the driver should allocate a proper buffer using only default
> properties like (width, height, bit per pixel) and it would be
> up to driver to fill in other properties with good safe default
> value (alignment, pitch, compressed, ...)
> 
> I believe having render buffer object concept in kernel make
> sense for the above mentioned reasons and because in graphics
> world render buffer are a key concept and every things in end
> have to deal with it. So to sum-up:
>       - easy checking of proper render buffer in kernel
>       - easy checking of proper scan out buffer in kernel
>       - make user space easier and safer (others things than
>         a dri driver will allocate proper buffer without
>         having to duplicate code).
> 
> Few more words on map i think it could be use full to provide
> two different map method one linear specifically means that
> you want a linear mapping of the buffer (according to width,
> height, pitch and bpp) the others just ask for mapping and
> driver could pass some informations on the layout of the mapped
> memory (tiled, compressed, ...).
> 
> For implementation is see two possible way:
> - wrap render buffer around BO
> - make render buffer a specialized BO by adding
>   a flag into BO and ptr to render buffer structure
> 
> Second solution likely the easier one. Anyway what are people thought
> on all that ?

Pretty much every buffer is potentially a render target, for instance 
all texture buffers when generating mipmaps, etc.

In the example above, different parts of individual buffers may be 
rendered to with different pitches, etc, ie when targetting different 
mipmaps.  Intel hardware uses the same pitch for all mipmaps, but this 
is not universal.

Furthermore things like GL's pixel buffers may be used with different 
pitches etc according to the user's whim.

In general one of the nicest things about the current memory manager is 
that it does *not* impose this type of thing on regular buffer 
management.  I've worked with systems that do and it can be very 
burdensome.

It's not like this presents a security issue to the system at large, so 
the question then is why make it a kernel function?  You just end up 
running into the limitations you've encoded into the kernel in 
generation n when you're trying to do the work for generation n+1.

One motiviation for this sort of thing might be making allocation of 
fenced memory regions easier (fenced in the sense used in Intel HW, 
referring to tiled memory).  I think that might be better handled 
specially without encumbering the system as a whole with a fixed 
interpretation of buffer layout.

Is there a specific issue that this proposal is trying to address?

Keith

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to