<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Sounds fine to me.  I just wanted to confirm that they are unrecoverable.</div><div class="gmail_quote"><br></div><div class="gmail_quote">Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div class="gmail_quote"><br></div><div class="gmail_quote">On Wed, Jun 27, 2018 at 9:13 AM, Keith Packard <span dir="ltr"><<a href="mailto:keithp@keithp.com" target="_blank">keithp@keithp.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> writes:<br>
<br>
> Is this the same thing that happens on VT switch?  If so, we may want to<br>
> return SURFACE_LOST for leases and OUT_OF_DATE for things running directly<br>
> on the display.<br>
<br>
</span>No, on VT switch, my code currently sits in the driver and waits for the<br>
VT to return. The errors here are unexpected and the driver doesn't<br>
currently have any way to recover from them. This patch came from<br>
reviewing the valid error returns from these functions with my broader<br>
understanding of Vulkan and evaluating which error message most<br>
accurately described the situation. SURFACE_LOST is more accurate than<br>
OUT_OF_DATE as a DRM lease termination (the only "normal" cause of these<br>
errors) definitely requires the application create a new surface.<br>
<br>
If there were errors we knew how to handle, and the way to handle them<br>
was to re-query the surface and re-create the swap chain, then we should<br>
return OUT_OF_DATE.<br>
<br>
On another note, I re-read the spec for vkAcquireXlibDisplayEXT when<br>
looking at this and found that it explicitly calls out VT switch as a<br>
case where the driver is supposed to return 'an appropriate error', but<br>
I can't see an error which would be appropriate in this case --<br>
DEVICE_LOST and SURFACE_LOST are both effectively fatal errors to the<br>
application while OUT_OF_DATE requires the application to re-query the<br>
surface and re-construct the swap chain. I guess we could have the<br>
surface query block until the VT returns? Is that better than just<br>
having the presentation block?<br>
<span class="HOEnZb"><font color="#888888"><br>
-- <br>
-keith<br>
</font></span></blockquote></div><br></div></div>