[Mesa-dev] [PATCH] radv: avoid GPU hangs if someone does a resolve with non-multisample src (v2)

Nicolai Hähnle nhaehnle at gmail.com
Fri Aug 4 08:53:45 UTC 2017


On 04.08.2017 04:51, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> This is a bug in the app, but I'd rather avoid hanging the GPU,
> esp if someone is running in validation and it takes out their
> development environment.
> 
> v2: get it right, reverse the polarity.
> 
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>   src/amd/vulkan/radv_meta_resolve.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/src/amd/vulkan/radv_meta_resolve.c b/src/amd/vulkan/radv_meta_resolve.c
> index 6cd0c38..6023e0f 100644
> --- a/src/amd/vulkan/radv_meta_resolve.c
> +++ b/src/amd/vulkan/radv_meta_resolve.c
> @@ -382,6 +382,11 @@ void radv_CmdResolveImage(
>   	radv_meta_save_graphics_reset_vport_scissor_novertex(&saved_state, cmd_buffer);
>   
>   	assert(src_image->info.samples > 1);
> +	if (src_image->info.samples <= 1) {
> +		/* this causes GPU hangs if we get past here */
> +		fprintf(stderr, "radv: Illegal resolve operation (src not multisampled), will hang GPU.");
> +		return;

If you really want to make sure developers get this right, you should 
probably abort(); here? Although that might then bug users... maybe an 
abort() that can be skipped by explicitly setting an environment variable?

That's the usual problem with Vulkan, I guess...

Cheers,
Nicolai


> +	}
>   	assert(dest_image->info.samples == 1);
>   
>   	if (src_image->info.samples >= 16) {
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list