Issue metadata
Sign in to add a comment
|
GetDxDiagnostics DCHECKs when it requests an STA because GpuMain is already in an MTA |
||||||||||||||||||||||
Issue descriptionThe D3D11 WebGL CTS on passthrough fails consistently on Wintel, I thought it was because of the RGBA->BGRA blit ANGLE change but it kept failing after the revert. First failing builds: https://build.chromium.org/p/chromium.gpu.fyi/builders/Win10%20Debug%20%28Intel%20HD%20530%29/builds/1250 https://build.chromium.org/p/chromium.gpu.fyi/builders/Win10%20Release%20%28Intel%20HD%20530%29/builds/1135 The latter only has one suspicious CL: Always use DirectCompositionSurfaceWin when using DirectComposition https://chromium.googlesource.com/chromium/src/+/ac13d8266c1e18429a0584b780e7daa5bcf1542e jbauman@ To avoid reverting your CL, can we skip DirectComposition when --use-passthrough-cmd-decoder is in the cmdline args? +cc goefflang@ for passthrough cmd decoder fix. Failures here manifest themselves on this stack base!logging::LogMessage::~LogMessage+0x383 gpu!base::win::ScopedCOMInitializer::Initialize+0x125 gpu!base::win::ScopedCOMInitializer::ScopedCOMInitializer+0x1c gpu!gpu::GetDxDiagnostics+0x12 content!ui::GpuService::UpdateGpuInfoPlatform+0x11e content!ui::GpuService::RequestCompleteGpuInfo+0xd1 content!base::internal::FunctorTraits<void (__thiscall ui::GpuService::*)(b... content!base::internal::InvokeHelper<1,void>::MakeItSo<void (__thiscall ui:... content!base::internal::Invoker<base::internal::BindState<void (__thiscall ... content!base::internal::Invoker<base::internal::BindState<void (__thiscall ... base!base::Callback<void __cdecl(void),0,0>::Run+0x35 base!base::debug::TaskAnnotator::RunTask+0x1eb base!base::MessageLoop::RunTask+0x1fc base!base::MessageLoop::DeferOrRunPendingTask+0x32 base!base::MessageLoop::DoWork+0x112 base!base::MessagePumpDefault::Run+0x90 base!base::MessageLoop::Run+0xbf base!base::RunLoop::Run+0xba content!content::GpuMain+0x516 content!content::RunNamedProcessTypeMain+0x87 content!content::ContentMainRunnerImpl::Run+0x195 The suspicion here is that there are some NDEBUG and DCHECK mismatches, so this code was silently running when it should have DCHECKed. http://crrev.com/9666497883a375aae2ff5d8e1fb763810d09226b removed the NDEBUG check and let the DCHECK defines take over, which exposed the real issue.
,
Jul 27 2017
Sending to Rob.. feel free to send it back if you get too busy.
,
Jul 27 2017
,
Jul 27 2017
Assigning back to jbauman, as there is a fix in the CQ to not use DirectComposition on passthrough. Let's keep both bugs split because it isn't clear that the flakiness and the WebGL failures have the same root cause.
,
Jul 27 2017
robliao@ pointed out that the same assert appears in the failing WebGL CTS runs, I hadn't realized. Re-merging bugs and re-assigning again, sorry for the confusion.
,
Jul 27 2017
,
Jul 27 2017
,
Jul 27 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/39210eaeceb4aaac746eca89a273c77a0e36c757 commit 39210eaeceb4aaac746eca89a273c77a0e36c757 Author: John Bauman <jbauman@chromium.org> Date: Thu Jul 27 23:11:55 2017 Don't use DirectCompositionSurfaceWin with passthrough command buffer The passthrough command buffer doesn't yet support SetDrawRectangle. Bug: 749309 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: If79279a8b278f0e39f04f710f42c0f1a27150169 Reviewed-on: https://chromium-review.googlesource.com/588005 Commit-Queue: John Bauman <jbauman@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Cr-Commit-Position: refs/heads/master@{#490071} [modify] https://crrev.com/39210eaeceb4aaac746eca89a273c77a0e36c757/gpu/ipc/in_process_command_buffer.cc [modify] https://crrev.com/39210eaeceb4aaac746eca89a273c77a0e36c757/gpu/ipc/in_process_command_buffer.h [modify] https://crrev.com/39210eaeceb4aaac746eca89a273c77a0e36c757/gpu/ipc/service/direct_composition_surface_win_unittest.cc [modify] https://crrev.com/39210eaeceb4aaac746eca89a273c77a0e36c757/gpu/ipc/service/gpu_command_buffer_stub.cc [modify] https://crrev.com/39210eaeceb4aaac746eca89a273c77a0e36c757/gpu/ipc/service/gpu_command_buffer_stub.h [modify] https://crrev.com/39210eaeceb4aaac746eca89a273c77a0e36c757/gpu/ipc/service/gpu_vsync_provider_unittest_win.cc [modify] https://crrev.com/39210eaeceb4aaac746eca89a273c77a0e36c757/gpu/ipc/service/image_transport_surface_delegate.h [modify] https://crrev.com/39210eaeceb4aaac746eca89a273c77a0e36c757/gpu/ipc/service/image_transport_surface_win.cc
,
Jul 29 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1214b5eb866cc5d40ed4aea19a499a036fee7858 commit 1214b5eb866cc5d40ed4aea19a499a036fee7858 Author: Robert Liao <robliao@chromium.org> Date: Sat Jul 29 02:48:58 2017 Move the GetDxDiagnostics Call to an COM STA Task Runner Previously, ui::GpuService::UpdateGpuInfoPlatform would just directly call GetDxDiagnostics. This is incorrect as GetDxDiagnostics creates a COM STA only object and ui::GpuService::UpdateGpuInfoPlatform runs in a COM MTA. This went undetected because COM will implicitly create an STA on demand if the current thread is an MTA or did not initialize COM. A confluence of factors exposed this incorrect code: * Initializing GpuMain as MTA as it was using COM without a UI Message Pump. http://crrev.com/98bb92d4f01372663087fca693c687b55a06c261 * Cleaning up ScopedComInitializer to DCHECK on all DCHECK_IS_ON() builds instead of !NDEBUG and DCHECK_IS_ON(). http://crrev.com/9666497883a375aae2ff5d8e1fb763810d09226b This change routes the GetDxDiagnostics call into a COM STA Task Runner before completing the RequestCompleteGpuInfo request on Windows. To make this work with all platforms, the RequestCompleteGpuInfoCallback is invoked asynchronously on the main thread by UpdateGpuInfoPlatform. BUG= 749309 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: I69d5a784fa41896de8bb34d76ebd2f7931890f53 Reviewed-on: https://chromium-review.googlesource.com/590197 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Robert Liao <robliao@chromium.org> Cr-Commit-Position: refs/heads/master@{#490596} [modify] https://crrev.com/1214b5eb866cc5d40ed4aea19a499a036fee7858/gpu/config/gpu_dx_diagnostics_win.cc [modify] https://crrev.com/1214b5eb866cc5d40ed4aea19a499a036fee7858/services/ui/gpu/gpu_service.cc [modify] https://crrev.com/1214b5eb866cc5d40ed4aea19a499a036fee7858/services/ui/gpu/gpu_service.h
,
Jul 31 2017
The bots seem to be reasonably satisfied with this change. |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by kbr@chromium.org
, Jul 26 2017Labels: -Type-Bug -Pri-3 Pri-1 Type-Bug-Regression