!UPSTREAM: i965/gen7+: Allocate MCS buffers for use by fast color clears.

TODO:

- write blorp code to do fast color clears

- write blorp code to do color resolves

- write code to ensure that color resolves happen when necessary

- write code to do fast rather than slow color clears when possible

- Create a bit to keep track of whether a resolve is necessary

- Figure out an appropriate initial state for the buffer and the
  "needs resolve" bit.  Probably initialize the MCS buffer to all 1's
  and set "needs resolve" to true.

- Do we need to do any extra work for window system color buffers?

- Can we save time by detecting redundant clears?  (i.e. if a clear
  follows a clear with no rendering in between, then on the second
  clear, don't bother writing to the MCS buffer; just update the
  buffer's clear value).

- In circumstances where SwapBuffers() makes the back buffer contents
  undefined (when is this?), can we save time by doing a pre-emptive
  fast color clear?  (Seems like it would save time by avoiding
  unnecessary reads when rendering causes a cache miss) Note: a lot of
  apps probably do a glClear() as the first operation after a swap, so
  to avoid slowing down those apps, we probably would only want to do
  this if we also were able to detect redundant clears (see above).
!UPSTREAM: WIP

TODO:

- Support integers in is_color_fast_clear_compatible() (or maybe it's
  easier to just bail on integer fast clears).

- Test that the new blorp program puts the right data in the MCS
  buffer.

- When doing a fast color clear, flag the surface as needing a fast
  color resolve.

- Create a field in intel_mipmap_tree to store clear color bits.

- When configuring SURFACE_STATE, copy clear color bits from
  intel_mipmap_tree.

- In brw_blorp_clear_params constructor, if doing a fast clear, store
  appropriate bits in intel_mipmap_tree to represent the clear color.

- Support more than just (0.0, 0.0, 0.0, 0.0) in
  is_color_fast_clear_compatible().