swr: call swr_update_derived unconditionally when drawing/clearing
authorIlia Mirkin <imirkin@alum.mit.edu>
Sun, 20 Nov 2016 05:04:42 +0000 (00:04 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Tue, 22 Nov 2016 02:11:26 +0000 (21:11 -0500)
commit16d42f2f3dcc8bec8d75b53d1e9e9cf5af6e528c
tree59f0190f35cd89da9aa73fc42a1ce1a8b13ce3ea
parentee0b6597a9579342029e46bf2bc4a8dd887f7896
swr: call swr_update_derived unconditionally when drawing/clearing

Currently a sequence like draw/map/draw/map will cause the second map to
not wait for the second draw. This is because the first map will clear
the resource business bit, and the second draw won't reset it since no
state has changed.

swr_update_derived does a tiny bit of extra work, including updating the
SWR_BACKEND_STATE as well as waiting for prending fences. If that's a
problem, we could call swr_update_resource_status directly from
draw/clear handlers.

Fixes clearbuffer-stencil, clearbuffer-depth, clearbuffer-depth-stencil,
and clearbuffer-display-lists.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
src/gallium/drivers/swr/swr_clear.cpp
src/gallium/drivers/swr/swr_draw.cpp