On Tue, Feb 4, 2014 at 10:29 AM, Rogovin, Kevin <kevin.rogo...@intel.com> wrote:
>
>
>> I don't believe our hardware can support GL_ARB_shader_stencil_export.
>> The render target write message can take RGBA, depth, and sample masks,
>> but not stencil.  Without that, it's not at all obvious how to implement it.
>
> There is a terrible hack-ish way to do it, but I stress the word terrible and 
> hackish and
> it may not work correctly depending on the tile modes and all that fun.
>
> Here goes. Assuming the depth-stencil is D24S8 we can do this and that the
> tile modes work out:
>
> Bind src depth-stencil as RGBA_8UI, the depth should be in RGB and the 
> stencil in A.
> Bind the dst  depth-stencil as RGBA_8UI as well. Fragment shader is simple 
> unfiltered
> read and write to dest. If not writing to depth or stencil, mask our RGB or A 
> respectively.
>
> The above does not handle MSAA->non-MSAA. Going further, it can be done in 
> general
> on *paper* with GL_ARB_texture_view if that is extended to allow D24S8 to be 
> on the same
> castable category as RGBA_8UI. The main catch is how the tile modes work out, 
> i.e. if the
> tile mode for a D24S8 is "compatible" with a RGBA_8UI render target.

This is how r300g does it. It blits D24S8 as RGBA_UNORM. Gallium has
texture views and it has no limitations on how you can change the
format, so it's pretty trivial. r300g changes the format, then calls
our "meta" code (u_blitter).

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

Reply via email to