Hash :
8b9889bf
Author :
Date :
2021-03-31T12:52:00
Fix multithreaded crash on draw commands on D3D11 backend.
A crash can occur if thread A is executing eglDestroyContext while
thread B issues a draw call, if the threads are interleaved in such a
manner that a makeCurrent occurs without triggering a change to the
global context and a dirtyAllState call. We handle that case by
explicitly making current the proper contexts in the eglDestroyContext
call.
A test has been added that triggers a crash without this fix when
running on the D3D11 backend. In addition, all of MultithreadingTest
is enabled for the D3D11 backend.
Test: Ran MultithreadingTest. Test exhibits a crash before this
change, and does not after this change. Also ran:
dEQP-EGL.functional.sharing.gles2.multithread.*
dEQP-EGL.functional.multithread.*
Bug: b/183756357
Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>