radv: add multisample Z optimisation from amdvlk
authorDave Airlie <airlied@redhat.com>
Wed, 24 Jan 2018 03:13:49 +0000 (13:13 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 24 Jan 2018 20:48:11 +0000 (06:48 +1000)
This was just found while reading for other stuff,
src/core/hw/gfxip/gfx6/gfx6DepthStencilView.cpp.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_pipeline.c

index 41a206a634ecb17e8accd8bb8dc0d6c58383b569..62faa3e473beca0e30ae1f9c7611762de31f9a24 100644 (file)
@@ -714,6 +714,9 @@ radv_pipeline_init_depth_stencil_state(struct radv_pipeline *pipeline,
                                       S_028800_Z_WRITE_ENABLE(vkds->depthWriteEnable ? 1 : 0) |
                                       S_028800_ZFUNC(vkds->depthCompareOp) |
                                       S_028800_DEPTH_BOUNDS_ENABLE(vkds->depthBoundsTestEnable ? 1 : 0);
+
+               /* from amdvlk: For 4xAA and 8xAA need to decompress on flush for better performance */
+               ds->db_render_override2 |= S_028010_DECOMPRESS_Z_ON_FLUSH(attachment->samples > 2);
        }
 
        if (has_stencil_attachment && vkds->stencilTestEnable) {