be more clever about different framebuffer state with/without zs
In debugging krh/mesa#16 (moved) I noticed that gallium HUD rebinds the color buffer without z/s to render the HUD overlay, which triggers an extra draw pass. For example (w/ cffdump --script parse-submits.lua
)
110: Batch:
-------
# of draws: 3
mode: RM6_GMEM
bin size: 352x256 (9 bins)
DEPTHTEST DEPTHWRITE
MRT[0x44d0000]: 1024x768 RB6_R8G8B8A8_UNORM CLEARED RESOLVED
MRT[0x41d0000]: 1024x768 DEPTH6_24_8 CLEARED RESOLVED
111: Batch:
-------
# of draws: 20
mode: RM6_GMEM
bin size: 512x384 (4 bins)
MRT[0x44d0000]: 1024x768 RB6_R8G8B8A8_UNORM RESTORED RESOLVED
112: NULL BATCH!
(we also end up w/ some null/no-op batches.. presumably because a fence was requested.. not sure if that hurts too much other than extra submit ioctls)