i915: set SPRITE_POINT_ENABLE bit correctly
authorYuanhan Liu <yuanhan.liu@linux.intel.com>
Sat, 17 Mar 2012 02:48:23 +0000 (10:48 +0800)
committerYuanhan Liu <yuanhan.liu@linux.intel.com>
Mon, 9 Apr 2012 01:59:17 +0000 (09:59 +0800)
commitc6532875493ffe7de9c37924c70ebf6d0472e23d
treedf8d3f624e3b9ce8f08da5c9f5bfcd2ebfb71419
parent8b5b3b93d73d80a54d12d0d7a6a74fb97b27bf8a
i915: set SPRITE_POINT_ENABLE bit correctly

When SPRITE_POINT_ENABLE bit is set, the texture coord would be
replaced, and this is only needed when we called something like
glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE).

And more,  we currently handle varying inputs as texture coord,
we would be careful when setting this bit and set it just when
needed, or you will find the value of varying input is not right
and changed.

Thus we do set SPRITE_POINT_ENABLE bit only when all enabled tex
coord units need do CoordReplace. Or fallback is needed to make
sure the rendering is right.

With handling the bit setup at i915_update_sprite_point_enable(),
we don't need the relative code at i915Enable then.

This patch would _really_ fix the webglc point-size.html test case and
of course, not regress piglit point-sprite and glean-pointSprite
testcase.

NOTE: This is a candidate for stable release branches.

v2: fallback just when all enabled tex coord units need do
    CoordReplace (Eric)
v3: move the sprite point validate code at I915InvalidateState (Eric)
v4: sprite point enable bit update based on _NEW_PROGRAM, too
    add relative _NEW-state comments to show what state is being used(Eric)

Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
src/mesa/drivers/dri/i915/i915_context.c
src/mesa/drivers/dri/i915/i915_context.h
src/mesa/drivers/dri/i915/i915_state.c
src/mesa/drivers/dri/i915/intel_tris.c