[Mesa-dev] [PATCH 10/15] radeonsi: disallow constant buffers with a 64-bit address in slot 0

Samuel Pitoiset samuel.pitoiset at gmail.com
Mon Jan 8 21:15:33 UTC 2018


9-10:

Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

On 01/06/2018 12:12 PM, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> State trackers must use a user buffer or const_uploader,
> or set pipe_resource::flags same as const_uploader->flags.
> ---
>   src/gallium/drivers/radeonsi/si_descriptors.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
> index 17115e1..b372090 100644
> --- a/src/gallium/drivers/radeonsi/si_descriptors.c
> +++ b/src/gallium/drivers/radeonsi/si_descriptors.c
> @@ -1207,20 +1207,26 @@ void si_set_rw_buffer(struct si_context *sctx,
>   
>   static void si_pipe_set_constant_buffer(struct pipe_context *ctx,
>   					enum pipe_shader_type shader, uint slot,
>   					const struct pipe_constant_buffer *input)
>   {
>   	struct si_context *sctx = (struct si_context *)ctx;
>   
>   	if (shader >= SI_NUM_SHADERS)
>   		return;
>   
> +	if (slot == 0 && input && input->buffer &&
> +	    !(r600_resource(input->buffer)->flags & RADEON_FLAG_32BIT)) {
> +		assert(!"constant buffer 0 must have a 32-bit VM address, use const_uploader");
> +		return;
> +	}
> +
>   	slot = si_get_constbuf_slot(slot);
>   	si_set_constant_buffer(sctx, &sctx->const_and_shader_buffers[shader],
>   			       si_const_and_shader_buffer_descriptors_idx(shader),
>   			       slot, input);
>   }
>   
>   void si_get_pipe_constant_buffer(struct si_context *sctx, uint shader,
>   				 uint slot, struct pipe_constant_buffer *cbuf)
>   {
>   	cbuf->user_buffer = NULL;
> 


More information about the mesa-dev mailing list