VizDisplayCompositor Windows GPU crash |
|||||
Issue description
When running with --enable-features=VizDisplayCompositor there is a GPU process on startup. The crash happens 95% of the time when starting up the gpu process. Running with --use-gl=osmesa or --use-gl=swiftshader doesn't run into the same crash and works. Here is the crash stack:
[9508:11320:0208/114930.040:FATAL:gl_context.cc(340)] Check failed: virtual_context->IsCurrent(surface).
Backtrace:
base::debug::StackTrace::StackTrace [0x00007FFC5769CEDB+107] (\usr\local\google\data\chrome\src\base\debug\stack_trace_win.cc:286)
base::debug::StackTrace::StackTrace [0x00007FFC5769BF0F+31] (\usr\local\google\data\chrome\src\base\debug\stack_trace.cc:199)
logging::LogMessage::~LogMessage [0x00007FFC576FEAD6+134] (\usr\local\google\data\chrome\src\base\logging.cc:581)
gl::GLContext::MakeVirtuallyCurrent [0x00007FFC3E34859A+922] (\usr\local\google\data\chrome\src\ui\gl\gl_context.cc:342)
gpu::GLContextVirtual::MakeCurrent [0x00007FFC3CE070E6+118] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\gl_context_virtual.cc:37)
ui::ScopedReleaseCurrent::Restore [0x00007FFC3E38CEBB+395] (\usr\local\google\data\chrome\src\ui\gl\scoped_make_current.cc:70)
gpu::DirectCompositionChildSurfaceWin::Initialize [0x00007FFC2E4ED88C+780] (\usr\local\google\data\chrome\src\gpu\ipc\service\direct_composition_child_surface_win.cc:78)
gl::GLSurface::Initialize [0x00007FFC3E372521+81] (\usr\local\google\data\chrome\src\ui\gl\gl_surface.cc:32)
gpu::DirectCompositionSurfaceWin::RecreateRootSurface [0x00007FFC2E4FD34E+190] (\usr\local\google\data\chrome\src\gpu\ipc\service\direct_composition_surface_win.cc:1346)
gpu::DirectCompositionSurfaceWin::Resize [0x00007FFC2E4FD9EE+446] (\usr\local\google\data\chrome\src\gpu\ipc\service\direct_composition_surface_win.cc:1259)
gl::GLSurfaceAdapter::Resize [0x00007FFC3E373B1C+108] (\usr\local\google\data\chrome\src\ui\gl\gl_surface.cc:271)
gpu::gles2::GLES2DecoderImpl::HandleResizeCHROMIUM [0x00007FFC3CE4940B+1723] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\gles2_cmd_decoder.cc:5481)
gpu::gles2::GLES2DecoderImpl::DoCommandsImpl<0> [0x00007FFC3CE6E721+785] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\gles2_cmd_decoder.cc:5568)
gpu::gles2::GLES2DecoderImpl::DoCommands [0x00007FFC3CE6D9CE+142] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\gles2_cmd_decoder.cc:5619)
gpu::CommandBufferService::Flush [0x00007FFC4084C62B+1755] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\command_buffer_service.cc:89)
gpu::InProcessCommandBuffer::FlushOnGpuThread [0x00007FFC2E41D98F+271] (\usr\local\google\data\chrome\src\gpu\ipc\in_process_command_buffer.cc:585)
base::internal::FunctorTraits<void (gpu::InProcessCommandBuffer::*)(int, bool),void>::Invoke<const base::WeakPtr<gpu::InProcessCommandBuffer> &,const int &,const bool &> [0x00007FFC2E42C4A2+130] (\usr\local\google\data\chrome\src\base\bind_internal.h:211)
base::internal::InvokeHelper<1,void>::MakeItSo<void (gpu::InProcessCommandBuffer::*const &)(int, bool),const base::WeakPtr<gpu::InProcessCommandBuffer> &,const int &,const bool &> [0x00007FFC2E42C33A+170] (\usr\local\google\data\chrome\src\base\bind_internal.h:317)
base::internal::Invoker<base::internal::BindState<void (gpu::InProcessCommandBuffer::*)(int, bool),base::WeakPtr<gpu::InProcessCommandBuffer>,int,bool>,void ()>::RunImpl<void (gpu::InProcessCommandBuffer::*const &)(int, bool),const std::tuple<base::WeakPt [0x00007FFC2E42C283+147] (\usr\local\google\data\chrome\src\base\bind_internal.h:368)
base::internal::Invoker<base::internal::BindState<void (gpu::InProcessCommandBuffer::*)(int, bool),base::WeakPtr<gpu::InProcessCommandBuffer>,int,bool>,void ()>::Run [0x00007FFC2E42C0FD+61] (\usr\local\google\data\chrome\src\base\bind_internal.h:350)
base::RepeatingCallback<void ()>::Run [0x00007FFC2E41D692+66] (\usr\local\google\data\chrome\src\base\callback.h:94)
gpu::InProcessCommandBuffer::ProcessTasksOnGpuThread [0x00007FFC2E41D4BF+287] (\usr\local\google\data\chrome\src\gpu\ipc\in_process_command_buffer.cc:543)
base::internal::FunctorTraits<void (gpu::InProcessCommandBuffer::*)(),void>::Invoke<const base::WeakPtr<gpu::InProcessCommandBuffer> &> [0x00007FFC2E42A2B3+67] (\usr\local\google\data\chrome\src\base\bind_internal.h:211)
base::internal::InvokeHelper<1,void>::MakeItSo<void (gpu::InProcessCommandBuffer::*const &)(),const base::WeakPtr<gpu::InProcessCommandBuffer> &> [0x00007FFC2E42A1C8+120] (\usr\local\google\data\chrome\src\base\bind_internal.h:317)
base::internal::Invoker<base::internal::BindState<void (gpu::InProcessCommandBuffer::*)(),base::WeakPtr<gpu::InProcessCommandBuffer> >,void ()>::RunImpl<void (gpu::InProcessCommandBuffer::*const &)(),const std::tuple<base::WeakPtr<gpu::InProcessCommandBuf [0x00007FFC2E42A13B+75] (\usr\local\google\data\chrome\src\base\bind_internal.h:368)
base::internal::Invoker<base::internal::BindState<void (gpu::InProcessCommandBuffer::*)(),base::WeakPtr<gpu::InProcessCommandBuffer> >,void ()>::Run [0x00007FFC2E42A05D+61] (\usr\local\google\data\chrome\src\base\bind_internal.h:350)
base::OnceCallback<void ()>::Run [0x00007FFC5763A141+97] (\usr\local\google\data\chrome\src\base\callback.h:65)
base::debug::TaskAnnotator::RunTask [0x00007FFC576A0B9D+781] (\usr\local\google\data\chrome\src\base\debug\task_annotator.cc:55)
base::internal::IncomingTaskQueue::RunTask [0x00007FFC57731D14+212] (\usr\local\google\data\chrome\src\base\message_loop\incoming_task_queue.cc:124)
base::MessageLoop::RunTask [0x00007FFC5773B74B+971] (\usr\local\google\data\chrome\src\base\message_loop\message_loop.cc:395)
base::MessageLoop::DeferOrRunPendingTask [0x00007FFC5773BF93+83] (\usr\local\google\data\chrome\src\base\message_loop\message_loop.cc:410)
base::MessageLoop::DoWork [0x00007FFC5773C2A4+532] (\usr\local\google\data\chrome\src\base\message_loop\message_loop.cc:451)
base::MessagePumpDefault::Run [0x00007FFC577462C7+103] (\usr\local\google\data\chrome\src\base\message_loop\message_pump_default.cc:37)
base::MessageLoop::Run [0x00007FFC5773AFB4+532] (\usr\local\google\data\chrome\src\base\message_loop\message_loop.cc:348)
base::RunLoop::Run [0x00007FFC5781699E+510] (\usr\local\google\data\chrome\src\base\run_loop.cc:136)
content::GpuMain [0x00007FFC41BF1818+2152] (\usr\local\google\data\chrome\src\content\gpu\gpu_main.cc:355)
content::RunNamedProcessTypeMain [0x00007FFC45DB332F+223] (\usr\local\google\data\chrome\src\content\app\content_main_runner.cc:423)
content::ContentMainRunnerImpl::Run [0x00007FFC45DB3EB7+599] (\usr\local\google\data\chrome\src\content\app\content_main_runner.cc:713)
content::ContentServiceManagerMainDelegate::RunEmbedderProcess [0x00007FFC45DAFD5A+42] (\usr\local\google\data\chrome\src\content\app\content_service_manager_main_delegate.cc:51)
service_manager::Main [0x00007FFC33851CD3+1299] (\usr\local\google\data\chrome\src\services\service_manager\embedder\main.cc:456)
content::ContentMain [0x00007FFC45DB31C5+85] (\usr\local\google\data\chrome\src\content\app\content_main.cc:19)
ChromeMain [0x00007FFC48FDA2D0+416] (\usr\local\google\data\chrome\src\chrome\app\chrome_main.cc:144)
MainDllLoader::Launch [0x00007FF674029FC7+1127] (\usr\local\google\data\chrome\src\chrome\app\main_dll_loader_win.cc:199)
wWinMain [0x00007FF67401F46A+1130] (\usr\local\google\data\chrome\src\chrome\app\chrome_exe_main_win.cc:230)
invoke_main [0x00007FF67425765D+45] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:123)
__scrt_common_main_seh [0x00007FF674257797+295] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283)
__scrt_common_main [0x00007FF67425781E+14] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:326)
wWinMainCRTStartup [0x00007FF674257839+9] (f:\dd\vctools\crt\vcstartup\src\startup\exe_wwinmain.cpp:17)
BaseThreadInitThunk [0x00007FFC7E711FE4+20]
RtlUserThreadStart [0x00007FFC80D7EFB1+33]
Received fatal exception EXCEPTION_BREAKPOINT
Backtrace:
base::debug::BreakDebugger [0x00007FFC5769A5A6+38] (\usr\local\google\data\chrome\src\base\debug\debugger_win.cc:21)
logging::LogMessage::~LogMessage [0x00007FFC576FEFE0+1424] (\usr\local\google\data\chrome\src\base\logging.cc:844)
gl::GLContext::MakeVirtuallyCurrent [0x00007FFC3E34859A+922] (\usr\local\google\data\chrome\src\ui\gl\gl_context.cc:342)
gpu::GLContextVirtual::MakeCurrent [0x00007FFC3CE070E6+118] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\gl_context_virtual.cc:37)
ui::ScopedReleaseCurrent::Restore [0x00007FFC3E38CEBB+395] (\usr\local\google\data\chrome\src\ui\gl\scoped_make_current.cc:70)
gpu::DirectCompositionChildSurfaceWin::Initialize [0x00007FFC2E4ED88C+780] (\usr\local\google\data\chrome\src\gpu\ipc\service\direct_composition_child_surface_win.cc:78)
gl::GLSurface::Initialize [0x00007FFC3E372521+81] (\usr\local\google\data\chrome\src\ui\gl\gl_surface.cc:32)
gpu::DirectCompositionSurfaceWin::RecreateRootSurface [0x00007FFC2E4FD34E+190] (\usr\local\google\data\chrome\src\gpu\ipc\service\direct_composition_surface_win.cc:1346)
gpu::DirectCompositionSurfaceWin::Resize [0x00007FFC2E4FD9EE+446] (\usr\local\google\data\chrome\src\gpu\ipc\service\direct_composition_surface_win.cc:1259)
gl::GLSurfaceAdapter::Resize [0x00007FFC3E373B1C+108] (\usr\local\google\data\chrome\src\ui\gl\gl_surface.cc:271)
gpu::gles2::GLES2DecoderImpl::HandleResizeCHROMIUM [0x00007FFC3CE4940B+1723] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\gles2_cmd_decoder.cc:5481)
gpu::gles2::GLES2DecoderImpl::DoCommandsImpl<0> [0x00007FFC3CE6E721+785] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\gles2_cmd_decoder.cc:5568)
gpu::gles2::GLES2DecoderImpl::DoCommands [0x00007FFC3CE6D9CE+142] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\gles2_cmd_decoder.cc:5619)
gpu::CommandBufferService::Flush [0x00007FFC4084C62B+1755] (\usr\local\google\data\chrome\src\gpu\command_buffer\service\command_buffer_service.cc:89)
gpu::InProcessCommandBuffer::FlushOnGpuThread [0x00007FFC2E41D98F+271] (\usr\local\google\data\chrome\src\gpu\ipc\in_process_command_buffer.cc:585)
base::internal::FunctorTraits<void (gpu::InProcessCommandBuffer::*)(int, bool),void>::Invoke<const base::WeakPtr<gpu::InProcessCommandBuffer> &,const int &,const bool &> [0x00007FFC2E42C4A2+130] (\usr\local\google\data\chrome\src\base\bind_internal.h:211)
base::internal::InvokeHelper<1,void>::MakeItSo<void (gpu::InProcessCommandBuffer::*const &)(int, bool),const base::WeakPtr<gpu::InProcessCommandBuffer> &,const int &,const bool &> [0x00007FFC2E42C33A+170] (\usr\local\google\data\chrome\src\base\bind_internal.h:317)
base::internal::Invoker<base::internal::BindState<void (gpu::InProcessCommandBuffer::*)(int, bool),base::WeakPtr<gpu::InProcessCommandBuffer>,int,bool>,void ()>::RunImpl<void (gpu::InProcessCommandBuffer::*const &)(int, bool),const std::tuple<base::WeakPt [0x00007FFC2E42C283+147] (\usr\local\google\data\chrome\src\base\bind_internal.h:368)
base::internal::Invoker<base::internal::BindState<void (gpu::InProcessCommandBuffer::*)(int, bool),base::WeakPtr<gpu::InProcessCommandBuffer>,int,bool>,void ()>::Run [0x00007FFC2E42C0FD+61] (\usr\local\google\data\chrome\src\base\bind_internal.h:350)
base::RepeatingCallback<void ()>::Run [0x00007FFC2E41D692+66] (\usr\local\google\data\chrome\src\base\callback.h:94)
gpu::InProcessCommandBuffer::ProcessTasksOnGpuThread [0x00007FFC2E41D4BF+287] (\usr\local\google\data\chrome\src\gpu\ipc\in_process_command_buffer.cc:543)
base::internal::FunctorTraits<void (gpu::InProcessCommandBuffer::*)(),void>::Invoke<const base::WeakPtr<gpu::InProcessCommandBuffer> &> [0x00007FFC2E42A2B3+67] (\usr\local\google\data\chrome\src\base\bind_internal.h:211)
base::internal::InvokeHelper<1,void>::MakeItSo<void (gpu::InProcessCommandBuffer::*const &)(),const base::WeakPtr<gpu::InProcessCommandBuffer> &> [0x00007FFC2E42A1C8+120] (\usr\local\google\data\chrome\src\base\bind_internal.h:317)
base::internal::Invoker<base::internal::BindState<void (gpu::InProcessCommandBuffer::*)(),base::WeakPtr<gpu::InProcessCommandBuffer> >,void ()>::RunImpl<void (gpu::InProcessCommandBuffer::*const &)(),const std::tuple<base::WeakPtr<gpu::InProcessCommandBuf [0x00007FFC2E42A13B+75] (\usr\local\google\data\chrome\src\base\bind_internal.h:368)
base::internal::Invoker<base::internal::BindState<void (gpu::InProcessCommandBuffer::*)(),base::WeakPtr<gpu::InProcessCommandBuffer> >,void ()>::Run [0x00007FFC2E42A05D+61] (\usr\local\google\data\chrome\src\base\bind_internal.h:350)
base::OnceCallback<void ()>::Run [0x00007FFC5763A141+97] (\usr\local\google\data\chrome\src\base\callback.h:65)
base::debug::TaskAnnotator::RunTask [0x00007FFC576A0B9D+781] (\usr\local\google\data\chrome\src\base\debug\task_annotator.cc:55)
base::internal::IncomingTaskQueue::RunTask [0x00007FFC57731D14+212] (\usr\local\google\data\chrome\src\base\message_loop\incoming_task_queue.cc:124)
base::MessageLoop::RunTask [0x00007FFC5773B74B+971] (\usr\local\google\data\chrome\src\base\message_loop\message_loop.cc:395)
base::MessageLoop::DeferOrRunPendingTask [0x00007FFC5773BF93+83] (\usr\local\google\data\chrome\src\base\message_loop\message_loop.cc:410)
base::MessageLoop::DoWork [0x00007FFC5773C2A4+532] (\usr\local\google\data\chrome\src\base\message_loop\message_loop.cc:451)
base::MessagePumpDefault::Run [0x00007FFC577462C7+103] (\usr\local\google\data\chrome\src\base\message_loop\message_pump_default.cc:37)
base::MessageLoop::Run [0x00007FFC5773AFB4+532] (\usr\local\google\data\chrome\src\base\message_loop\message_loop.cc:348)
base::RunLoop::Run [0x00007FFC5781699E+510] (\usr\local\google\data\chrome\src\base\run_loop.cc:136)
content::GpuMain [0x00007FFC41BF1818+2152] (\usr\local\google\data\chrome\src\content\gpu\gpu_main.cc:355)
content::RunNamedProcessTypeMain [0x00007FFC45DB332F+223] (\usr\local\google\data\chrome\src\content\app\content_main_runner.cc:423)
content::ContentMainRunnerImpl::Run [0x00007FFC45DB3EB7+599] (\usr\local\google\data\chrome\src\content\app\content_main_runner.cc:713)
content::ContentServiceManagerMainDelegate::RunEmbedderProcess [0x00007FFC45DAFD5A+42] (\usr\local\google\data\chrome\src\content\app\content_service_manager_main_delegate.cc:51)
service_manager::Main [0x00007FFC33851CD3+1299] (\usr\local\google\data\chrome\src\services\service_manager\embedder\main.cc:456)
content::ContentMain [0x00007FFC45DB31C5+85] (\usr\local\google\data\chrome\src\content\app\content_main.cc:19)
ChromeMain [0x00007FFC48FDA2D0+416] (\usr\local\google\data\chrome\src\chrome\app\chrome_main.cc:144)
MainDllLoader::Launch [0x00007FF674029FC7+1127] (\usr\local\google\data\chrome\src\chrome\app\main_dll_loader_win.cc:199)
wWinMain [0x00007FF67401F46A+1130] (\usr\local\google\data\chrome\src\chrome\app\chrome_exe_main_win.cc:230)
invoke_main [0x00007FF67425765D+45] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:123)
__scrt_common_main_seh [0x00007FF674257797+295] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283)
__scrt_common_main [0x00007FF67425781E+14] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:326)
wWinMainCRTStartup [0x00007FF674257839+9] (f:\dd\vctools\crt\vcstartup\src\startup\exe_wwinmain.cpp:17)
BaseThreadInitThunk [0x00007FFC7E711FE4+20]
RtlUserThreadStart [0x00007FFC80D7EFB1+33]
+sunnyps do you have any ideas what this might be or where to start looking? VizDisplayCompositor worked on Windows approximately a month ago. Are there any recent changes to Windows GPU code I should look at first?
,
Feb 9 2018
I noticed that VizDisplayCompositor is using GLContextVirtual, which doesn't happen by default otherwise. That is decided here: https://cs.chromium.org/chromium/src/gpu/ipc/in_process_command_buffer.cc?l=357&rcl=14b157142ce0febc22c1bd836f7d8ccdc2931e81 service_->UseVirtualizedGLContexts() is always true. If I set that to false then I get a different crash.
,
Feb 9 2018
> +sunnyps do you have any ideas what this might be or where to start looking? > VizDisplayCompositor worked on Windows approximately a month ago. Are there > any recent changes to Windows GPU code I should look at first? Adding geofflang@ in case this is related to pass-through command buffer changes.
,
Feb 12 2018
It has nothing to do with viz. virtual contexts on Windows is broken. Kyle, if you don't mind, assign this to me and I'll take a look what went wrong.
,
Feb 13 2018
By the way, if this is blocking any viz progress, you can run Chrome now with --use-cmd-decoder=validating to bypass this bug. I'll discuss with geofflang to implement a fix soon.
,
Feb 13 2018
I don't see viz requesting virtualized context anywhere, which leaves the option that this is happening due to GPU blacklisting. kylechar@ could you please attach a copy of your 'about:gpu' information?
,
Feb 13 2018
vmiura: It's because VizDisplayCompositor uses InProcessCommandBuffer for the display compositor command buffers, since they're in the GPU process. InProcessCommandBuffer always uses virtual contexts, as far as I can tell, see here: https://cs.chromium.org/chromium/src/gpu/ipc/in_process_command_buffer.cc?l=358&rcl=1c849e92aef656ed495be99af74442c75243789c https://cs.chromium.org/chromium/src/gpu/ipc/gpu_in_process_thread_service.cc?l=33&rcl=1c849e92aef656ed495be99af74442c75243789c zmo: Thanks for the context. I talked to backer@ and got a bit more information and go things working. The InProcessComandBuffer (display compositor) was using the validating command decoder and the CommandBufferStub (browser/renderer) was using passthrough command decoder. Also InProcessCommandBuffer was using context virtualisation. If I make InProcessComandBuffer use the validating command decoder and turn off context virtualisation then it works. Talking to backer@ it sounds like making InProcessCommandBuffer use the pass through command decoder would be a better solution than making CommandBufferStub using validating command decoder. Are there any issues with that / any idea how big of a task it is? I'll land an interim fix to get VizDisplayCompositor working on Windows for now.
,
Feb 13 2018
I believe that InProcessCommandBuffer should be checking GPUInfo::passthrough_cmd_decoder and acting accordingly. The passthrough decoder should be faster and the additional validation is unnecessary if we are using Angle. Looks like this would have to be plumbed down through a few layers from GpuInit.
,
Feb 13 2018
Re #7: The pass-through command buffer is in a Finch trial. Viz should use the same setting as other contexts for pass-through / virtualization. fsamuel@ do you recall why the GpuInProcessThreadService defaults to virtualized GL contexts? Was it that way for WebView?
,
Feb 13 2018
I agree with backer@. Throughout Chrome we should either use validating command buffer or passthrough command buffer, not both. GPUInfo is where the decision is recorded.
,
Feb 13 2018
Right, both the InProcessCommandBuffer and the CommandBufferStub need to use the same type of decoder, otherwise we'll do some very very bad things (invalid casts etc.).
,
Feb 13 2018
The command decoder differences are caused because GpuPreferences isn't plumbed into GpuInProcessThreadService. That one has a simple fix. The logic around |use_virtualized_gl_context_| is a bit more complicated. backer@ pointed out GLES2CommandBufferStub::Initialize() has semi-complicated logic for setting |use_virtualized_gl_context_|. I think we need the same logic for InProcessCommandBuffer when it's with VizDisplayCompositor, so that InProcessCommandBuffer and GLES2CommandBufferStub do the same thing?
,
Feb 13 2018
This sounds like a good idea. On top of that, no matter what the logic is, we should not use virtualized gl contexts on Windows if the backend is D3D. Since we haven't whitelisted any OpenGL drivers on Windows yet, so D3D is the only supported shipping config today. I plan to insert a DCHECK somewhere, if it's Windows with D3D, and virtualized contexts are created, DCHECK(false).
,
Feb 14 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/47df6306404d6df93ec9d27d68a565a0e5c07854 commit 47df6306404d6df93ec9d27d68a565a0e5c07854 Author: kylechar <kylechar@chromium.org> Date: Wed Feb 14 01:45:48 2018 viz: Fix VizDisplayCompositor + EGL crashing GPU process. Using --enable-features=VizDisplayCompositor and EGL hardware acceleration didn't work. The GPU process would lose the GL context and crash because of bugs in InProcessCommandBuffer. InProcessCommandBuffer wasn't using the same command decoder as GLES2CommandBufferStub. This was happening because GpuPreferences weren't plumbed into GpuInProcessThreadService. InProcessCommandBuffer was also always using virtualized GL contexts. Virtualized contexts are broken on windows apparently. Plumb this into GpuInProcessThreadService. The default constructed version will continue to use virtualized contexts, while the VizMainImpl constructed version will not used virtualized contexts. There are some other differences in how InProcessCommandBuffer and GLES2CommandBufferStub decide whether to use virtualized contexts that needs to be resolved separately. Bug: 810424 , 811979 Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Change-Id: I230aeeefb4560407da816c15c47e4f5b4ce11138 Reviewed-on: https://chromium-review.googlesource.com/917014 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: kylechar <kylechar@chromium.org> Cr-Commit-Position: refs/heads/master@{#536596} [modify] https://crrev.com/47df6306404d6df93ec9d27d68a565a0e5c07854/components/viz/service/main/viz_main_impl.cc [modify] https://crrev.com/47df6306404d6df93ec9d27d68a565a0e5c07854/gpu/ipc/gpu_in_process_thread_service.cc [modify] https://crrev.com/47df6306404d6df93ec9d27d68a565a0e5c07854/gpu/ipc/gpu_in_process_thread_service.h [modify] https://crrev.com/47df6306404d6df93ec9d27d68a565a0e5c07854/gpu/ipc/in_process_command_buffer.cc
,
Feb 14 2018
|
|||||
►
Sign in to add a comment |
|||||
Comment 1 by kylec...@chromium.org
, Feb 8 2018