i965/guardband: Enable for all viewport dimensions (GEN8+)
authorBen Widawsky <benjamin.widawsky@intel.com>
Thu, 24 Jul 2014 00:55:40 +0000 (17:55 -0700)
committerBen Widawsky <benjamin.widawsky@intel.com>
Mon, 11 Aug 2014 00:13:36 +0000 (17:13 -0700)
commitf6725d627cb3945f2577b6ba637ee16830d0b13c
tree7582d06ad4f47113de69d35387f9529a11e6f07d
parent1a20e38ccfdc581a158a3e9f96e25465f2ab55df
i965/guardband: Enable for all viewport dimensions (GEN8+)

The goal of guardband clipping is to try to avoid 3d clipping because it
is an expensive operation. When guardband clipping is disabled, all
geometry that intersects the viewport is sent to the FF 3d clipper.
Objects which are entirely enclosed within the viewport are said to be
"trivially accepted" while those entirely outside of the viewport are,
"trivially rejected".

When guardband clipping is turned on the above behavior is changed such
that if the geometry is within the guardband, and intersects the
viewport, it skips the 3d clipper. Prior to GEN8, this was problematic
if the viewport was smaller than the screen as it could allow for
rendering to occur outside of the viewport. That could be mitigated if
the programmer specified a scissor region which was less than or equal
to the viewport - but this is not required for correctness in OpenGL. In
theory you could be clever with the guardband so as not to invoke this
problem. We do not do this, and have no data that suggests we should
bother (nor the converse data).

With viewport extents in place on GEN8, it should be safe to turn on
guardband clipping for all cases

While here, add a comment to the code which confused me thoroughly.

v2: Update grammar in commit message. Reword comments based on Ken's
suggestion.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/gen6_clip_state.c