[Mesa-dev] [PATCH] gallium: add geometry shader output limits

Michel Dänzer michel at daenzer.net
Wed Feb 5 17:46:15 PST 2014


On Mit, 2014-02-05 at 22:58 +0100, Grigori Goronzy wrote:
> 
> diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
> index 14dfd30..2f4098c 100644
> --- a/src/gallium/drivers/radeonsi/si_pipe.c
> +++ b/src/gallium/drivers/radeonsi/si_pipe.c
> @@ -299,6 +299,12 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
>  	case PIPE_CAP_MAX_STREAM_OUTPUT_INTERLEAVED_COMPONENTS:
>  		return sscreen->b.has_streamout ? 32*4 : 0;
>  
> +	/* Geometry shader output. */
> +	case PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES:
> +		return 1024;
> +	case PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS:
> +		return 16384;

radeonsi currently can't handle more than 4095 total output components,
as the buffer resource for writing to the GSVS ring only has 14 bits for
the stride in bytes. This limit could be lifted in the future by falling
back to the pre-SI (supposedly slower) organization of the GSVS buffer
for larger numbers of total output components.


Also, might it make more sense for these to be shader caps than screen
caps?


-- 
Earthling Michel Dänzer            |                  http://www.amd.com
Libre software enthusiast          |                Mesa and X developer



More information about the mesa-dev mailing list