v3dv: fix viewport Z
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 12 Mar 2020 08:06:16 +0000 (09:06 +0100)
committerMarge Bot <eric+marge@anholt.net>
Tue, 13 Oct 2020 21:21:28 +0000 (21:21 +0000)
Vulkan has Z NDC range in [0, 1], we where using OpenGL's [-1, 1].

Fixes:
dEQP-VK.draw.inverted_depth_ranges.nodepthclamp_deltasmall
dEQP-VK.draw.inverted_depth_ranges.nodepthclamp_deltaone

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>

src/broadcom/vulkan/v3dv_cmd_buffer.c

index 68d468d..511dceb 100644 (file)
@@ -1899,8 +1899,9 @@ emit_viewport(struct v3dv_cmd_buffer *cmd_buffer)
       clip.viewport_z_scale_zc_to_zs = vpscale[2];
    }
    cl_emit(&job->bcl, CLIPPER_Z_MIN_MAX_CLIPPING_PLANES, clip) {
-      float z1 = (vptranslate[2] - vpscale[2]);
-      float z2 = (vptranslate[2] + vpscale[2]);
+      /* Vulkan's Z NDC is [0..1], unlile OpenGL which is [-1, 1] */
+      float z1 = vptranslate[2];
+      float z2 = vptranslate[2] + vpscale[2];
       clip.minimum_zw = MIN2(z1, z2);
       clip.maximum_zw = MAX2(z1, z2);
    }