[Mesa-dev] [PATCH 14/14] radeonsi: increase the maximum UBO size to 2 GB

Roland Scheidegger sroland at vmware.com
Thu Aug 9 05:35:26 UTC 2018


I'm not quite convinced you can really use huge ubos safely? At least
direct addressing in tgsi can't work (you've only got a 16bit register
index, and it's signed too).

Roland

Am 09.08.2018 um 01:55 schrieb Marek Olšák:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> Same as the closed driver.
> 
> This causes a failure in GL45-CTS.compute_shader.max, which has a trivial
> bug.
> ---
>  src/gallium/drivers/radeonsi/si_get.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c
> index 41b9cad071b..2852705c806 100644
> --- a/src/gallium/drivers/radeonsi/si_get.c
> +++ b/src/gallium/drivers/radeonsi/si_get.c
> @@ -420,21 +420,21 @@ static int si_get_shader_param(struct pipe_screen* pscreen,
>  	case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS:
>  	case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH:
>  		return 16384;
>  	case PIPE_SHADER_CAP_MAX_INPUTS:
>  		return shader == PIPE_SHADER_VERTEX ? SI_MAX_ATTRIBS : 32;
>  	case PIPE_SHADER_CAP_MAX_OUTPUTS:
>  		return shader == PIPE_SHADER_FRAGMENT ? 8 : 32;
>  	case PIPE_SHADER_CAP_MAX_TEMPS:
>  		return 256; /* Max native temporaries. */
>  	case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE:
> -		return 4096 * sizeof(float[4]); /* actually only memory limits this */
> +		return MIN2(sscreen->info.max_alloc_size, INT_MAX - 3); /* aligned to 4 */
>  	case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
>  		return SI_NUM_CONST_BUFFERS;
>  	case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
>  	case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
>  		return SI_NUM_SAMPLERS;
>  	case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
>  		return SI_NUM_SHADER_BUFFERS;
>  	case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
>  		return SI_NUM_IMAGES;
>  	case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
> 



More information about the mesa-dev mailing list