From fbd61d2b0204e3875155cf5a9a6a8b7947fd3f7e Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 4 Nov 2021 10:33:58 -0400 Subject: [PATCH] zink: set new point/line caps Part-of: --- src/gallium/drivers/zink/zink_screen.c | 20 +++++++++++++++++--- src/mesa/state_tracker/st_extensions.c | 4 ++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 2786f46aa9b..393ec41d477 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -698,13 +698,27 @@ zink_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param) switch (param) { case PIPE_CAPF_MIN_LINE_WIDTH: case PIPE_CAPF_MIN_LINE_WIDTH_AA: + if (!screen->info.feats.features.wideLines) + return 1.0f; + return MAX2(screen->info.props.limits.lineWidthRange[0], 0.01); + case PIPE_CAPF_MIN_POINT_SIZE: case PIPE_CAPF_MIN_POINT_SIZE_AA: - return 1; + if (!screen->info.feats.features.largePoints) + return 1.0f; + return MAX2(screen->info.props.limits.pointSizeRange[0], 0.01); + + + case PIPE_CAPF_LINE_WIDTH_GRANULARITY: + if (!screen->info.feats.features.wideLines) + return 0.1f; + return screen->info.props.limits.lineWidthGranularity; case PIPE_CAPF_POINT_SIZE_GRANULARITY: - case PIPE_CAPF_LINE_WIDTH_GRANULARITY: - return 0.1; + if (!screen->info.feats.features.largePoints) + return 0.1f; + return screen->info.props.limits.pointSizeGranularity; + case PIPE_CAPF_MAX_LINE_WIDTH: case PIPE_CAPF_MAX_LINE_WIDTH_AA: diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 738e46c9fb8..f83a574f6d0 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -139,8 +139,8 @@ void st_init_limits(struct pipe_screen *screen, c->MaxPointSizeAA = _maxf(1.0f, screen->get_paramf(screen, PIPE_CAPF_MAX_POINT_SIZE_AA)); - c->MinPointSize = screen->get_paramf(screen, PIPE_CAPF_MIN_POINT_SIZE); - c->MinPointSizeAA = screen->get_paramf(screen, PIPE_CAPF_MIN_POINT_SIZE_AA); + c->MinPointSize = MAX2(screen->get_paramf(screen, PIPE_CAPF_MIN_POINT_SIZE), 0.01); + c->MinPointSizeAA = MAX2(screen->get_paramf(screen, PIPE_CAPF_MIN_POINT_SIZE_AA), 0.01); c->PointSizeGranularity = screen->get_paramf(screen, PIPE_CAPF_POINT_SIZE_GRANULARITY); c->MaxTextureMaxAnisotropy =