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

Dave Airlie airlied at gmail.com
Sat Aug 5 02:59:06 UTC 2017


On 4 August 2017 at 18:53, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> 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?

Well ideally we do nothing and let GPU reset happen, but I think we've
got a bit of work in that area first!.

This should be fine for now, hopefully they spot the missing rendering
if they attempt this.

Dave.


More information about the mesa-dev mailing list