mesa/src
Nanley Chery d5fb9cccdc intel/blorp: Disable depth testing for slow depth clears
We'll start doing slow depth clears more often on HIZ_CCS buffers in a
future commit. Reduce the performance impact by making them use less
bandwidth.

From the Depth Test section of the BSpec:

   This function is enabled by the Depth Test Enable state variable. If
   enabled, the pixel's ("source") depth value is first computed. After
   computation the pixel's depth value is clamped to the range defined
   by Minimum Depth and Maximum Depth in the selected CC_VIEWPORT state.
   Then the current ("destination") depth buffer value for this pixel is
   read.

and from the Depth Buffer Updates section of the BSpec:

   If depth testing is disabled or the depth test passed, the incoming
   pixel's depth value is written to the Depth Buffer.

Taken together, it's clear that depth testing isn't necessary to perform
a depth buffer clear. Mark Janes and I analyzed this patch with
frameretrace and a depthrange piglit test. I disabled HiZ to ensure we'd
get slow depth clears. We've observed the bandwidth consumption by the
depth buffer access to be cut ~50% on BDW and SKL during depth clears.
On a more graphically intensive workload, the Shadowmapping Sascha
benchmark, I took the average of 3 runs on a BDW with a display
resolution of about 1920x1200 (minus some desktop environment
decorations). I measured a 22.61% FPS improvement when HiZ is disabled.

v2. The BSpec doesn't mandate this behavior, update comment accordingly.
    (Ken)

Fixes: bc4bb5a7e3 ("intel/blorp: Emit more complete DEPTH_STENCIL state")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2019-10-28 10:47:05 -07:00
..
amd util: rename list_empty() to list_is_empty() 2019-10-28 11:24:38 +00:00
broadcom util: rename list_empty() to list_is_empty() 2019-10-28 11:24:38 +00:00
compiler glsl: Initialize all fields of ir_variable in constructor 2019-10-28 12:49:15 +00:00
drm-shim meson: replace libmesa_util with idep_mesautil 2019-08-03 00:08:37 +00:00
egl egl: implement new functions from EGL_EXT_image_flush_external 2019-10-25 19:59:04 -04:00
etnaviv util: remove LIST_IS_EMPTY macro 2019-10-28 11:24:39 +00:00
freedreno util: remove LIST_IS_EMPTY macro 2019-10-28 11:24:39 +00:00
gallium iris: Allow for non-Y-tiled aux allocation 2019-10-28 10:47:05 -07:00
gbm gbm: Add GBM_MAX_PLANES definition 2019-10-18 13:18:28 +00:00
getopt meson: build getopt when using msvc 2019-09-10 20:36:47 +00:00
glx dri: Avoid swapbuffer throttling in glXCopySubBufferMESA 2019-10-05 13:19:37 +00:00
gtest
hgl haiku: fix Mesa build 2019-10-01 10:31:02 +00:00
imgui
intel intel/blorp: Disable depth testing for slow depth clears 2019-10-28 10:47:05 -07:00
loader loader: Simplify handling of the radeonsi driver 2019-10-08 09:02:34 +00:00
mapi Revert "mapi: Inline call x86_current_tls." 2019-10-25 11:31:51 -05:00
mesa i965/miptree: Avoid -Wswitch for the Gen12 aux modes 2019-10-28 10:47:05 -07:00
panfrost pan/midgard: Express allocated registers as offsets 2019-10-25 08:45:39 -04:00
util util: remove LIST_IS_EMPTY macro 2019-10-28 11:24:39 +00:00
vulkan util: rename list_empty() to list_is_empty() 2019-10-28 11:24:38 +00:00
meson.build meson: rename glvnd_missing_pc_files to not glvnd_has_headers_and_pc_files 2019-10-10 22:18:04 +01:00
SConscript