skia2/tools/gpu
Michael Ludwig ecc555540b Only terminate egl display once
Unblocks angle roller into skia that was triggering an assert in
EGLImageTest. In that test, there were two egl contexts created that
shared the same egl display. The child context was destroyed first,
and ANGLEGLContext's destroyGLContext() implementation always called
eglTerminate on the display. According to the egl spec you're not
supposed to do anything with the terminated display other than call
makeCurrent() to release any active context.

In this case, the child context's termination would cause the display
to be deferred until the parent context was destroyed. This triggered
a bug in ANGLE's D3D backend, leading to the assert. However, with
that fixed, we then trigger critical error messages about calling
eglDestroySurface, etc. in the parent context's destroyGLContext()
function since the display was terminated out from beneath it.

This change adds a rudimentary ownership tracking mechanism to the
ANGLEGLContext so that when a child context is cleaned up it won't
call eglTerminate on its display. This happens to avoid the bug in
ANGLE's D3D backend as well as silencing the critical warnings if it
were fixed.

Bug: skia:12413
Change-Id: I31f64189315a1921adbee204d11138272d4b40af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/446182
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2021-09-07 23:48:46 +00:00
..
d3d Revert "Reland "Use Microsoft's ComPtr to wrap D3D12 objects."" 2020-09-21 22:02:12 +00:00
dawn Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'. 2020-09-03 03:41:26 +00:00
gl Only terminate egl display once 2021-09-07 23:48:46 +00:00
mock Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'. 2020-09-03 03:41:26 +00:00
mtl Reland "Remove ARC from tools lib." 2021-02-22 17:55:52 +00:00
vk Fix additional cases of variable shadowing. 2021-08-16 17:47:14 +00:00
BackendSurfaceFactory.cpp Revert "Revert "Reland "asyncRescaleAndRead supports unpremul results on GPU""" 2021-01-22 14:21:01 +00:00
BackendSurfaceFactory.h Revert "Reland "Revert "Use ManagedBackendTexture in place of TestUtils backend texture helpers.""" 2020-10-13 01:22:13 +00:00
BackendTextureImageFactory.cpp Take origin when creating/updating backend texture using pixmaps. 2020-12-07 20:31:10 +00:00
BackendTextureImageFactory.h Revert "Reland "Revert "Use ManagedBackendTexture in place of TestUtils backend texture helpers.""" 2020-10-13 01:22:13 +00:00
FenceSync.h
FlushFinishTracker.cpp Update additional tools to take a GrDirectContext 2020-07-01 20:42:25 +00:00
FlushFinishTracker.h Update additional tools to take a GrDirectContext 2020-07-01 20:42:25 +00:00
GpuTimer.h Replace skstd::exchange with std::exchange 2020-04-30 11:14:20 +00:00
GrContextFactory.cpp Add a cmdbuffer_es3 config 2021-06-28 18:30:56 +00:00
GrContextFactory.h Fix -Wdeprecated-copy warnings 2021-08-03 16:06:11 +00:00
GrTest.cpp Move more Ops to skgpu::v1 namespace (take 2) 2021-09-01 18:57:02 +00:00
ManagedBackendTexture.cpp Bitmap.asImage() 2020-12-23 15:54:57 +00:00
ManagedBackendTexture.h Use the ManagedBackendTexture helper in fiddle_main 2020-12-08 17:39:12 +00:00
MemoryCache.cpp Migrate PersistentCacheUtils logic into a cpp file. 2021-04-12 14:09:59 +00:00
MemoryCache.h Reland "Redesign program key construction" 2021-03-03 17:44:00 +00:00
ProxyUtils.cpp Store the correct number of samples in GrProgramInfo 2021-08-26 17:24:47 +00:00
ProxyUtils.h Store the correct number of samples in GrProgramInfo 2021-08-26 17:24:47 +00:00
TestContext.cpp Enable ClangTidy check llvm-namespace-comment. 2020-08-06 19:07:52 +00:00
TestContext.h Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'. 2020-09-03 03:41:26 +00:00
TestOps.cpp Store the correct number of samples in GrProgramInfo 2021-08-26 17:24:47 +00:00
TestOps.h Switch GrMeshDrawOp::Target to be the stand alone GrMeshDrawTarget class 2021-06-17 19:57:43 +00:00
YUVUtils.cpp YUVUtils function for splitting image into yuva planes. 2021-05-24 14:10:39 +00:00
YUVUtils.h YUVUtils function for splitting image into yuva planes. 2021-05-24 14:10:39 +00:00