gallium: clear interface changes
authorRoland Scheidegger <sroland@vmware.com>
Fri, 28 May 2010 21:57:47 +0000 (23:57 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Fri, 28 May 2010 21:57:47 +0000 (23:57 +0200)
commit0cd70b554cb0bb9280f83fddf4f1451fddd37230
tree39c4dfc0433c6190d78f1716ae8e54c96a757568
parentd3f598a506d911e7cbbe561a798d284a154da3cd
gallium: clear interface changes

clears were a bit limited in gallium:
- no scissoring (OGL only) nor explicit rectangle list (d3d9)
- no color/stencil masks (OGL only)
- no separate depth/stencil clears (d3d9/d3d10/OGL)
- cannot really clear single color buffer (only with resource_fill_region)

Additionally, d3d can clear surfaces not currently bound to the framebuffer.

It is, however, not easy to find some common ground what a clear should be able
to do, due to both API requirements and also hw differences (a case which might
be able to use a special clear path on one hw might need a "normal" quad render
on another).

Hence several clear methods are provided, and a driver should implement all of
them.
- clear: slightly modified to also be able to clear only depth or stencil in a
  combined depth/stencil surface. This is however optional based on driver
  capability though ideally it wouldn't be optional. AFAIK this is in fact
  something used by applications quite a bit.
  Otherwise, for now still doesn't allow clearing with scissors/mask (or single
  color buffers)
- clearRT: clears a single (potentially unbound) color surface. This was formerly
  roughly known as resource_fill_region. mesa st will not currently use this,
  though potentially would be useful for GL ClearBuffer.
- clearDS: similar to above except for depth stencil surfaces.

Note that clearDS/clearRT currently handle can handle partial clear. This might
change however.
src/gallium/docs/d3d11ddi.txt
src/gallium/docs/source/context.rst
src/gallium/include/pipe/p_context.h
src/gallium/include/pipe/p_defines.h