llvmpipe: fix issues with depth clamp
authorRoland Scheidegger <sroland@vmware.com>
Sat, 20 Aug 2016 02:03:11 +0000 (04:03 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Sat, 20 Aug 2016 02:05:33 +0000 (04:05 +0200)
commit0849621891041498c7438080338ccea562440a9a
treeaef2cd8e6eccaa8386c6decff0c9e6e332efc73f
parentb0a647f284b24ca4e0ee1f70c4839d8ec3d1a4e6
llvmpipe: fix issues with depth clamp

We only did depth clamp when the value was written from the fs.
This is very wrong both for d3d10 and GL, and only passed the
corresponding piglit test due to pure luck (it no longer does
with the enhanced test).
Also, interpolation clamped values to 1.0 always, which can legitimately
happen if depth clip is disabled, so fix that as well (untested).
There is one unresolved issue left, d3d10 always does depth clamping,
whereas GL does not (but does [0,1] clamp instead for fs depth outputs)
- this information isn't in any gallium state object, leave it as-is
for now (though it looks like llvmpipe misses the [0,1] clamp as well).
This (with the previous patch) fixes piglit depth-clamp-range test.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/drivers/llvmpipe/lp_bld_interp.c
src/gallium/drivers/llvmpipe/lp_bld_interp.h
src/gallium/drivers/llvmpipe/lp_state_fs.c