Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(633)

Unified Diff: content/renderer/renderer_blink_platform_impl.cc

Issue 2267993002: Expose if we are using swiftshader via WebGraphicsContext3DProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: softwarerendering: . Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/renderer_blink_platform_impl.cc
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
index c0de4619230d9ce07d856915f076083e97c5eebd..b45e915dc0e1c300df90b955ac07991f01302ed8 100644
--- a/content/renderer/renderer_blink_platform_impl.cc
+++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -680,15 +680,6 @@ WebString RendererBlinkPlatformImpl::databaseCreateOriginIdentifier(
WebSecurityOriginToGURL(origin)));
}
-bool RendererBlinkPlatformImpl::canAccelerate2dCanvas() {
- RenderThreadImpl* thread = RenderThreadImpl::current();
- scoped_refptr<gpu::GpuChannelHost> host = thread->EstablishGpuChannelSync();
- if (!host)
- return false;
-
- return !host->gpu_info().software_rendering;
-}
-
bool RendererBlinkPlatformImpl::isThreadedCompositingEnabled() {
RenderThreadImpl* thread = RenderThreadImpl::current();
// thread can be NULL in tests.
@@ -1085,6 +1076,8 @@ RendererBlinkPlatformImpl::createOffscreenGraphicsContext3DProvider(
share_context = share_provider_impl->context_provider();
}
+ bool is_software_rendering = gpu_channel_host->gpu_info().software_rendering;
+
// This is an offscreen context, which doesn't use the default frame buffer,
// so don't request any alpha, depth, stencil, antialiasing.
gpu::gles2::ContextCreationAttribHelper attributes;
@@ -1116,18 +1109,35 @@ RendererBlinkPlatformImpl::createOffscreenGraphicsContext3DProvider(
GURL(top_document_web_url), automatic_flushes, support_locking,
gpu::SharedMemoryLimits(), attributes, share_context,
command_buffer_metrics::OFFSCREEN_CONTEXT_FOR_WEBGL));
- return new WebGraphicsContext3DProviderImpl(std::move(provider));
+ return new WebGraphicsContext3DProviderImpl(std::move(provider),
+ is_software_rendering);
}
//------------------------------------------------------------------------------
blink::WebGraphicsContext3DProvider*
RendererBlinkPlatformImpl::createSharedOffscreenGraphicsContext3DProvider() {
+ auto* thread = RenderThreadImpl::current();
+
scoped_refptr<ContextProviderCommandBuffer> provider =
- RenderThreadImpl::current()->SharedMainThreadContextProvider();
+ thread->SharedMainThreadContextProvider();
if (!provider)
return nullptr;
- return new WebGraphicsContext3DProviderImpl(std::move(provider));
+
+ scoped_refptr<gpu::GpuChannelHost> host = thread->EstablishGpuChannelSync();
+ // This shouldn't normally fail because we just got |provider|. But the
+ // channel can become lost on the IO thread since then. It is important that
+ // this happens after getting |provider|. In the case that this GpuChannelHost
+ // is not the same one backing |provider|, the context behind the |provider|
+ // will be already lost/dead on arrival, so the value we get for
+ // |is_software_rendering| will never be wrong.
+ if (!host)
+ return nullptr;
+
+ bool is_software_rendering = host->gpu_info().software_rendering;
+
+ return new WebGraphicsContext3DProviderImpl(std::move(provider),
+ is_software_rendering);
}
//------------------------------------------------------------------------------

Powered by Google App Engine
This is Rietveld 408576698