summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGert Wollny <[email protected]>2019-07-25 10:44:39 +0200
committerGert Wollny <[email protected]>2019-08-01 05:58:53 +0000
commitb2e92c45ce30f1aa039cf1ca72c4869992c77ae3 (patch)
treeff41de9bbc8609fb3133b57a1a60511d342d1be0
parent616f3207456c8165d15232ec80bfccb8c2826bcf (diff)
gallium: Make PIPE_CAP_DEPTH_CLIP_DISABLE a tri-state value and use it
Use value "2" to signal that lowering is needed and supported and enable it accordingly. v2: - Note in CAP description that this lowering currently requires TGSI - use "true" instead of GL_TRUE (both Erik) Signed-off-by: Gert Wollny <[email protected]> Reviewed-by: Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/gallium/docs/source/screen.rst4
-rw-r--r--src/mesa/state_tracker/st_context.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
index 12de59a4d80..065eb8fd2f1 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
@@ -67,7 +67,9 @@ The integer capabilities:
* ``PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER``: Whether the TGSI
property FS_COORD_PIXEL_CENTER with value INTEGER is supported.
* ``PIPE_CAP_DEPTH_CLIP_DISABLE``: Whether the driver is capable of disabling
- depth clipping (through pipe_rasterizer_state)
+ depth clipping (=1) (through pipe_rasterizer_state) or supports lowering
+ depth_clamp in the client shader code (=2), for this the driver must
+ currently use TGSI.
* ``PIPE_CAP_DEPTH_CLIP_DISABLE_SEPARATE``: Whether the driver is capable of
disabling depth clipping (through pipe_rasterizer_state) separately for
the near and far plane. If not, depth_clip_near and depth_clip_far will be
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 00e77250eb8..eeceaf9ddd4 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -699,6 +699,9 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe,
}
}
+ if (screen->get_param(screen, PIPE_CAP_DEPTH_CLIP_DISABLE) == 2)
+ st->clamp_frag_depth_in_shader = true;
+
/* called after _mesa_create_context/_mesa_init_point, fix default user
* settable max point size up
*/