aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/virgl/virgl_context.c3
-rw-r--r--src/gallium/drivers/virgl/virgl_screen.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/src/gallium/drivers/virgl/virgl_context.c b/src/gallium/drivers/virgl/virgl_context.c
index f68ac815f15..bbb5247c86f 100644
--- a/src/gallium/drivers/virgl/virgl_context.c
+++ b/src/gallium/drivers/virgl/virgl_context.c
@@ -464,6 +464,9 @@ static void *virgl_create_rasterizer_state(struct pipe_context *ctx,
vrs->rs = *rs_state;
vrs->handle = virgl_object_assign_handle();
+ assert(rs_state->depth_clip_near ||
+ virgl_screen(ctx->screen)->caps.caps.v1.bset.depth_clip_disable);
+
virgl_encode_rasterizer_state(vctx, vrs->handle, rs_state);
return (void *)vrs;
}
diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
index e1a9f4ef385..37e75b5e048 100644
--- a/src/gallium/drivers/virgl/virgl_screen.c
+++ b/src/gallium/drivers/virgl/virgl_screen.c
@@ -115,7 +115,11 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param)
case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
return vscreen->caps.caps.v1.bset.fragment_coord_conventions;
case PIPE_CAP_DEPTH_CLIP_DISABLE:
- return vscreen->caps.caps.v1.bset.depth_clip_disable;
+ if (vscreen->caps.caps.v1.bset.depth_clip_disable)
+ return 1;
+ if (vscreen->caps.caps.v2.host_feature_check_version >= 3)
+ return 2;
+ return 0;
case PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS:
return vscreen->caps.caps.v1.max_streamout_buffers;
case PIPE_CAP_MAX_STREAM_OUTPUT_SEPARATE_COMPONENTS: