i965: Use RED for depth texture formats rather than INTENSITY.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 27 Nov 2013 07:15:39 +0000 (23:15 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 21 Dec 2013 00:14:35 +0000 (16:14 -0800)
commit9f330481c3979724300881891dfa17e99a5698ab
tree1a795b0cb0ed86fd68acaeacda9bce9fa16e5f87
parent1a928816a1b717201f3b3cc998a42731b280e6ba
i965: Use RED for depth texture formats rather than INTENSITY.

While looking through the documentation, I found this in the Sandybridge
PRM (Volume 4, Part 1, Page 140):
"Use of sample_c with SURFTYPE_CUBE surfaces is undefined with the
 following surface formats: I24X8_UNORM, L24X8_UNORM, A24X8_UNORM,
 I32_FLOAT, L32_FLOAT, A32_FLOAT."

I haven't observed this to be true, but it suggests that we may want to
use other formats.

We already perform DEPTH_TEXTURE_MODE swizzling in the shaders, and
don't rely on the surface format to splat things appropriately.  So
using RED should work just as well as INTENSITY.

A few notes about the formats:
- R24_UNORM_X8_TYPELESS has the exact same properties as I24X8_UNORM.
- R16_UNORM and R32_FLOAT are additionally supported as a render target,
  while the old I16_UNORM/I32_FLOAT formats are not.
- R32_FLOAT_X8X24_TYPELESS is not supported as a render target, while
  the old format (R32G32_FLOAT) was.  However, it shares the same
  properties as the formats we use for Z24, so it should suffice.

This makes translate_tex_format and brw_blorp_surface_info::set
a bit more similar.

No Piglit changes on Sandybridge or Ivybridge.  No oglconform changes on
Sandybridge.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/dri/i965/brw_surface_formats.c