[Mesa-dev] [Bug 97231] GL_DEPTH_CLAMP doesn't clamp to the far plane
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Sat Aug 13 01:36:28 UTC 2016
https://bugs.freedesktop.org/show_bug.cgi?id=97231
--- Comment #20 from Roland Scheidegger <sroland at vmware.com> ---
(In reply to Ilia Mirkin from comment #18)
> FWIW this also fails on nouveau right now... this is a part of the patch I'm
> going to have to apply (still working out the full details, but this should
> have the general idea):
>
> @@ -329,8 +329,21 @@ nvc0_validate_viewport(struct nvc0_context *nvc0)
> PUSH_DATA (push, (w << 16) | x);
> PUSH_DATA (push, (h << 16) | y);
>
> - zmin = vp->translate[2] - fabsf(vp->scale[2]);
> - zmax = vp->translate[2] + fabsf(vp->scale[2]);
> + if (nvc0->rast->pipe.clip_halfz) {
> + zmin = vp->translate[2];
> + zmax = vp->translate[2] + vp->scale[2];
> + if (zmax < zmin) {
> + float t = zmax;
> + zmax = zmin;
> + zmin = t;
> + }
> + } else {
> + zmin = vp->translate[2] - fabsf(vp->scale[2]);
> + zmax = vp->translate[2] + fabsf(vp->scale[2]);
> + }
>
> Note that the near/far planes have to be calculated differently based on
> whether clip_halfz is enabled.
Yes, that's pretty much what I had in mind for fixing llvmpipe. Albeit llvmpipe
already does different calculation depending on halfz.
It does:
if (lp->rasterizer->clip_halfz == 0) {
float half_depth = viewports[i].scale[2];
min_depth = viewports[i].translate[2] - half_depth;
max_depth = min_depth + half_depth * 2.0f;
} else {
min_depth = viewports[i].translate[2];
max_depth = min_depth + viewports[i].scale[2];
}
That said, it doesn't do the abs part. Is that really required?
And don't you need the zmin/zmax swap part too without clip_halfz?
(And as said, llvmpipe has problems with depth clamp as it does only actually
clamp the values if they are output by fs.)
--
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160813/b7e9fcce/attachment.html>
More information about the mesa-dev
mailing list