diff options
author | José Fonseca <[email protected]> | 2012-02-27 11:12:12 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2012-02-28 15:38:53 +0000 |
commit | 9773370eda1765b1014ba11a699d10244b88757c (patch) | |
tree | 617baefb5e56ad43baabaa8deb4bd8bcd90d4831 /src/gallium/drivers/svga/svga_screen.c | |
parent | d9c42097770f173804c7c7c40bf8bc6c4400673b (diff) |
svga: Advertise SVGA3D_DEVCAP_MAX_POINT_SIZE.
Backends usually advertise a SVGA3D_DEVCAP_MAX_POINT_SIZE between 63 and
256, so an hardcoded max point size of 80 is often incorrect.
This limitation does not apply for anti-aliased points (as they are done
via draw module) but we still advertise the same limit for both, because
all others pipe drivers do.
Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/gallium/drivers/svga/svga_screen.c')
-rw-r--r-- | src/gallium/drivers/svga/svga_screen.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index d29a5049e30..8badcb2a595 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -109,10 +109,7 @@ svga_get_paramf(struct pipe_screen *screen, enum pipe_capf param) case PIPE_CAPF_MAX_POINT_WIDTH: /* fall-through */ case PIPE_CAPF_MAX_POINT_WIDTH_AA: - /* Keep this to a reasonable size to avoid failures in - * conform/pntaa.c: - */ - return SVGA_MAX_POINTSIZE; + return svgascreen->maxPointSize; case PIPE_CAPF_MAX_TEXTURE_ANISOTROPY: if(!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_TEXTURE_ANISOTROPY, &result)) @@ -543,6 +540,15 @@ svga_screen_create(struct svga_winsys_screen *sws) } } + if (!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_POINT_SIZE, &result)) { + svgascreen->maxPointSize = 1.0F; + } else { + /* Keep this to a reasonable size to avoid failures in + * conform/pntaa.c: + */ + svgascreen->maxPointSize = MIN2(result.f, 80.0f); + } + pipe_mutex_init(svgascreen->tex_mutex); pipe_mutex_init(svgascreen->swc_mutex); |