mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 07:58:07 +02:00
swr/rast: Fix early z / query interaction
For certain cases, we perform early z for optimization. The GL_SAMPLES_PASSED
query was providing erroneous results because we were counting the number
of samples passed before the fragment shader, which did not work if the
fragment shader contained a discard.
Account properly for discard and early z, by anding the zpass mask with
the post fragment shader active mask, after the fragment shader.
Fixes the following piglit tests:
- occlusion-query-discard
- occlusion_query_meta_fragments
Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
parent
b7eb86c617
commit
3695c8ec1e
1 changed files with 4 additions and 0 deletions
|
|
@ -593,6 +593,10 @@ void BackendSingleSample(DRAW_CONTEXT *pDC, uint32_t workerId, uint32_t x, uint3
|
|||
pDepthBuffer, depthPassMask, vCoverageMask, pStencilBuffer, stencilPassMask);
|
||||
goto Endtile;
|
||||
}
|
||||
} else {
|
||||
// for early z, consolidate discards from shader
|
||||
// into depthPassMask
|
||||
depthPassMask = _simd_and_ps(depthPassMask, vCoverageMask);
|
||||
}
|
||||
|
||||
uint32_t statMask = _simd_movemask_ps(depthPassMask);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue