Revert "Remove sentinal GLContext used in early days of Vulkan in our tools"
authorBrian Salomon <bsalomon@google.com>
Tue, 24 Jan 2017 22:22:05 +0000 (22:22 +0000)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Tue, 24 Jan 2017 22:22:17 +0000 (22:22 +0000)
This reverts commit bfd97c59350c112ad85301eb6ff6005ae4fd9e8c.

Reason for revert: Windows bots crashing.

Original change's description:
> Remove sentinal GLContext used in early days of Vulkan in our tools
>
> I've ran this through multiple variations of dm and nanobench on Linux
> and no longer see any crash/hangs. I forget what the original repo case
> for the bug was, but I'm at least not seeing it now with updated drivers.
>
> BUG=skia:
>
> Change-Id: I6b7129a4c4d67938baa35d2e2c720cb078fc4c18
> Reviewed-on: https://skia-review.googlesource.com/7441
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
>

TBR=egdaniel@google.com,bsalomon@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Change-Id: I94a16b2b13d09182232061b0aebd0d58df96db8a
Reviewed-on: https://skia-review.googlesource.com/7453
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
tools/gpu/GrContextFactory.cpp
tools/gpu/GrContextFactory.h

index 9c124bffa2afc7e15b171bb1f2b301d309437ea9..bd745bcfcd3a3b19fe570f4ea14a360573ffdb9d 100644 (file)
@@ -191,6 +191,15 @@ ContextInfo GrContextFactory::getContextInfo(ContextType type, ContextOptions op
                 return ContextInfo();
             }
 
+            // There is some bug (either in Skia or the NV Vulkan driver) where VkDevice
+            // destruction will hang occaisonally. For some reason having an existing GL
+            // context fixes this.
+            if (!fSentinelGLContext) {
+                fSentinelGLContext.reset(CreatePlatformGLTestContext(kGL_GrGLStandard));
+                if (!fSentinelGLContext) {
+                    fSentinelGLContext.reset(CreatePlatformGLTestContext(kGLES_GrGLStandard));
+                }
+            }
             backendContext = testCtx->backendContext();
             break;
 #endif
index 25ebee90e0099941a06d89c184fea5cb611724b1..a232112d753856c299c2bb56ad383049c898467c 100644 (file)
@@ -163,6 +163,7 @@ private:
         bool            fAbandoned;
     };
     SkTArray<Context, true>         fContexts;
+    std::unique_ptr<GLTestContext>  fSentinelGLContext;
     const GrContextOptions          fGlobalOptions;
 };
 }  // namespace sk_gpu_test