diff options
-rw-r--r-- | src/gallium/drivers/virgl/virgl_context.c | 3 | ||||
-rw-r--r-- | src/gallium/drivers/virgl/virgl_screen.c | 6 |
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: |