[Mesa-dev] [PATCH 6/7] i965: add functional changes for AMD_depth_clamp_separate
Sagar Ghuge
sagar.ghuge at intel.com
Wed Aug 22 00:02:06 UTC 2018
Gen >= 9 have ability to control clamping of depth values separately at
near and far plane.
z_w is clamped to the range [min(n,f), 0] if clamping at near plane is
enabled, [0, max(n,f)] if clamping at far plane is enabled and [min(n,f)
max(n,f)] if clamping at both plane is enabled.
Signed-off-by: Sagar Ghuge <sagar.ghuge at intel.com>
---
src/mesa/drivers/dri/i965/genX_state_upload.c | 23 +++++++++++++++----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c
index dc54cb67af..4e978bed91 100644
--- a/src/mesa/drivers/dri/i965/genX_state_upload.c
+++ b/src/mesa/drivers/dri/i965/genX_state_upload.c
@@ -2343,7 +2343,13 @@ genX(upload_cc_viewport)(struct brw_context *brw)
if (ctx->Transform.DepthClampNear && ctx->Transform.DepthClampFar) {
ccv.MinimumDepth = MIN2(vp->Near, vp->Far);
ccv.MaximumDepth = MAX2(vp->Near, vp->Far);
- } else {
+ } else if (ctx->Transform.DepthClampNear) {
+ ccv.MinimumDepth = MIN2(vp->Near, vp->Far);
+ ccv.MaximumDepth = 0.0;
+ } else if (ctx->Transform.DepthClampFar) {
+ ccv.MinimumDepth = 0.0;
+ ccv.MaximumDepth = MAX2(vp->Near, vp->Far);
+ }else {
ccv.MinimumDepth = 0.0;
ccv.MaximumDepth = 1.0;
}
@@ -4607,16 +4613,23 @@ genX(upload_raster)(struct brw_context *brw)
raster.ScissorRectangleEnable = ctx->Scissor.EnableFlags;
/* _NEW_TRANSFORM */
+#if GEN_GEN < 9
if (!(ctx->Transform.DepthClampNear &&
ctx->Transform.DepthClampFar)) {
-#if GEN_GEN >= 9
- raster.ViewportZFarClipTestEnable = true;
- raster.ViewportZNearClipTestEnable = true;
-#else
raster.ViewportZClipTestEnable = true;
+ }
#endif
+
+#if GEN_GEN >= 9
+ if (!ctx->Transform.DepthClampNear) {
+ raster.ViewportZNearClipTestEnable = true;
}
+ if (!ctx->Transform.DepthClampFar) {
+ raster.ViewportZFarClipTestEnable = true;
+ }
+#endif
+
/* BRW_NEW_CONSERVATIVE_RASTERIZATION */
#if GEN_GEN >= 9
raster.ConservativeRasterizationEnable =
--
2.17.1
More information about the mesa-dev
mailing list