r300g: enable Hyper-Z by default on r500
authorMarek Olšák <maraeo@gmail.com>
Sun, 2 Dec 2012 16:06:49 +0000 (17:06 +0100)
committerMarek Olšák <maraeo@gmail.com>
Sun, 2 Dec 2012 17:07:26 +0000 (18:07 +0100)
commit12dcbd5954676ee32604d82cacbf9a4259967e13
tree4a5fa1aa119b6f39e7b1aff1e513032e05276998
parent0222b2bd4107b9e5cabfbc06c1a6ca3eaec3cf0d
r300g: enable Hyper-Z by default on r500

I fixed the only known bugs on r500 with 0222b2bd4107b9e5cabfbc06c1a6ca3eae.
Now there are no piglit regressions with Hyper-Z and all apps I tested seem
to work.

To summarize how it works:
- Only one process can use it at a time. This is a hardware limitation.
- The first process to clear a zbuffer gets the exclusive access to use
  Hyper-Z.
- Compositors don't use any zbuffer, so they won't steal it, but some web
  browsers do, so make sure there's no web browser running if you want your
  game to use Hyper-Z.
- There's no need to restart an app which couldn't get the access to Hyper-Z.
  Just quit the app which took it, the driver can turn it on for the other app
  in the middle of rendering.
- If an app gets the access to Hyper-Z, it prints "radeon: Acquired Hyper-Z"
  to stdout.

r300-r400:
  Hyper-Z will be enabled by default on r300-r400 once sufficient testing is
  done with piglit and Lightsmark at least.
  Be sure to set the env var RADEON_HYPERZ and run piglit with parameters: -c 0
src/gallium/drivers/r300/r300_blit.c
src/gallium/winsys/radeon/drm/radeon_drm_winsys.c