i965: fix point rasterization when rendering to FBO
authorRobert Ellison <papillo@vmware.com>
Tue, 24 Mar 2009 15:53:22 +0000 (09:53 -0600)
committerRobert Ellison <papillo@vmware.com>
Tue, 24 Mar 2009 16:01:23 +0000 (10:01 -0600)
commitcc8afbd3862fedfe42e51c3774960d1c7078ec53
treedb20a75c4acb2b24785d5bdce953742f9e9a826e
parent2312f697a27da366ecda9cbae9ddf8c63de910d5
i965: fix point rasterization when rendering to FBO

The FBO pixel coordinate system, with (0,0) as the
upper-left pixel, is inverted in Y compared to the
normal OpenGL pixel coordinate system, which has
(0,0) as its lower-left pixel.

Viewport and polygon stipple are sensitive to this
inversion; so is point rasterization.  The basic
fix is simple: when rendering to an FBO, instead
of the normal RASTRULE_UPPER_RIGHT that's
appropriate for OpenGL windows, use the Y inversion
RASTRULE_LOWER_RIGHT.

Unfortunately, current Intel documentation has this
value listed as "Reserved, but not seen as useful".
It does work on at least some i965-class devices,
though; and the worst that could happen if an
older device didn't support it would be incorrect
point rasterization to FBOs, which is what happens
already, so this fix is at least no worse than what
happens presently, and is better for some (and possibly
all) i965-class devices.
src/gallium/drivers/i965simple/brw_defines.h
src/mesa/drivers/dri/i965/brw_defines.h
src/mesa/drivers/dri/i965/brw_sf_state.c