llvmpipe: fix bogus layer clamping in setup
authorRoland Scheidegger <sroland@vmware.com>
Sat, 26 Oct 2013 02:22:55 +0000 (04:22 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Tue, 29 Oct 2013 16:54:03 +0000 (17:54 +0100)
commite4195acab57a6ab7a604073c46e72b7a49da9e21
treec59c0a9d81315c04986d1bbac990217be57cfaf1
parentbe0b67a1436eb2b899f9874725b2a68eb26f9f3f
llvmpipe: fix bogus layer clamping in setup

The layer coming from GS needs to be clamped (not sure if that's actually
the correct error behavior but we need something) as the number can be higher
than the amount of layers in the fb. However, this code was using the layer
calculation from the scene, and this was actually calculated in
lp_scene_begin_rasterization() hence too late (so setup was using the value
from the _previous_ scene or just zero if it was the first scene).
Since the value is used in both rasterization and setup, move calculation up
to lp_scene_begin_binning() though it's a bit more inconvenient to calculate
there. (Theoretically could move _all_ code which was in
lp_scene_begin_rasterization() to there, because ever since we got rid of
swizzled render/depth buffers our "map" functions preparing the fb data for
render don't actually change the data in there at all, but it feels like
it would be a hack.)

v2: improve comments

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/drivers/llvmpipe/lp_scene.c
src/gallium/drivers/llvmpipe/lp_scene.h