[PossibleBug] Why "r.HZBOcclusion 0" param doesn't also disable BuildHZB pass?

I might be wrong here but I think there’s a possible logical bug in the engine code.
If I choose to disable HZBOcclusion with the “r.HZBOcclusion 0” parameter, I noticed in the Unreal GPU Visualizer that there’s still a “BuildHZB” pass being done every frame.

Looking in the code, I’ve found a possibly wrong condition check in the “DefferedShadingRenderer.cpp” → "FDefferedShadingSceneRenderer::RenderOcclusion(…) function:

...
    if (bSSAO || bHzbOcclusion || bSSR)
    {
    	BuildHZB(RHICmdList, Views[ViewIndex]);
    }
...

Notice the “bHzbOcclusion” bool. Even if HZB occlusion is set to false just because you might have turned on SSR or SSAO it will still update the HZB render target and corresponding downsampled mip levels.

On a GTX 780M @ 1920x1080 screen res I noticed this function costs around 0.25ms every frame (using the GPU Visualizer). I would consider gaining these milliseconds if I noticed that HZB Occlusion doesn’t benefit my particular project.

Can any Epic engine programmer confirm this?

it’s not a bug. HzbOcclusion will use hi-z to do bound volume culling, and screen space reflection use hi-z to help ray casting process.