[Mesa-dev] depth writing and missing something

Brian Paul brianp at vmware.com
Thu Sep 30 07:57:10 PDT 2010


On 09/29/2010 07:34 PM, Dave Airlie wrote:
> So I've been playing with stencil writing on r600, and it lead me to
> examine the depth writing.
>
> So at the moment in gallium if we are writing to depth via DrawPixels,
> we construct a fragment program that samples from a texture.
>
> TEX OUT[0].z, IN[1], SAMP[0], 2D
>
> Now from what I can see the format we pick to sample from is
> Z24_UNORM_S8_USCALED, which from the u_format.csv file seems to say it
> will put the results into X and Y components.

I think what the u_format.csv file says isn't totally consistant with 
what the table at the bottom of tgsi.rst says.

We never did nail down the Z/Gallium cell in the later table.

To be consistant with what the u_format.csv file says, I think the 
tgsi.rgs table needs to be updated to read:

  Texture Comps   Gallium        OpenGL               Direct3D 9
+--------------+--------------+--------------------+--------------+
| Z            | (Z, ?, ?, ?) | (z, z, z, 1)*      | (0, z, 0, 1) |
+--------------+--------------+--------------------+--------------+
| ZS           | (Z, S, ?, ?) | (z, z, z, 1)*      | tbd          |
+--------------+--------------+--------------------+--------------+
| S            | (?, S, ?, ?) | undefined          | tbd          |
+--------------+--------------+--------------------+--------------+

What do people think about that?


> Now if we sample from
> the X and Y components and the texture dest writemask is Z, I can't
> see how any value arrives in the right place. It seems to work but I'm
> a bit lost where the magic is.
>
> I'd have expected there to be swizzles in the sampler but I can't see
> them being set to anything special either.

I think we've just been getting lucky by the TEX instructions 
returning (Z,Z,Z,?).

If we go with the table changes above, we need to either specify a 
sampler swizzle or do something like this in the shader:

TEX TEMP[0].x, IN[1], SAMP[0], 2D
MOV OUT[0].z, TEMP[0].xxxx;

-Brian


More information about the mesa-dev mailing list