Mesa (master): anv: Handle clamping of inverted depth ranges
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jul 7 22:11:44 UTC 2020
Module: Mesa
Branch: master
Commit: 1d5e1882f662fb4a922353ea272c1e94398f9155
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d5e1882f662fb4a922353ea272c1e94398f9155
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Tue Jul 7 11:08:31 2020 -0500
anv: Handle clamping of inverted depth ranges
Tested-by: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Reviewed-by: Ivan Briano <ivan.briano at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5792>
---
src/intel/vulkan/gen8_cmd_buffer.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/intel/vulkan/gen8_cmd_buffer.c b/src/intel/vulkan/gen8_cmd_buffer.c
index fe136ecd928..f2497231fea 100644
--- a/src/intel/vulkan/gen8_cmd_buffer.c
+++ b/src/intel/vulkan/gen8_cmd_buffer.c
@@ -104,9 +104,17 @@ gen8_cmd_buffer_emit_depth_viewport(struct anv_cmd_buffer *cmd_buffer,
for (uint32_t i = 0; i < count; i++) {
const VkViewport *vp = &viewports[i];
+ /* From the Vulkan spec:
+ *
+ * "It is valid for minDepth to be greater than or equal to
+ * maxDepth."
+ */
+ float min_depth = MIN2(vp->minDepth, vp->maxDepth);
+ float max_depth = MAX2(vp->minDepth, vp->maxDepth);
+
struct GENX(CC_VIEWPORT) cc_viewport = {
- .MinimumDepth = depth_clamp_enable ? vp->minDepth : 0.0f,
- .MaximumDepth = depth_clamp_enable ? vp->maxDepth : 1.0f,
+ .MinimumDepth = depth_clamp_enable ? min_depth : 0.0f,
+ .MaximumDepth = depth_clamp_enable ? max_depth : 1.0f,
};
GENX(CC_VIEWPORT_pack)(NULL, cc_state.map + i * 8, &cc_viewport);
More information about the mesa-commit
mailing list