webvr.info/samples/03-vr-presentation.html cannot present in HMD with latest nv driver |
|||||||||
Issue descriptionChrome Version: 66.0.3328.0 (Official Build) canary (64-bit) (cohort: Clang-64) OS: win10 16299.125 Graphics Card : GTX 1060 (could reproduce on RX480 and HD630) What steps will reproduce the problem? (1) Setup HTC Vive and updated nv graphics driver to 23.21.13.9065 (2) Open Canary and access https://webvr.info/samples/03-vr-presentation.html (3) Click "Enter VR" What is the expected result? Present in HMD What happens instead? Present nothing in HMD and gl errors generated BTW, other samples under webvr.info/samples works fine. Please use labels and text to provide additional information. My canary configure (copy from command line): --flag-switches-begin --enable-webvr --enable-features=OpenVR --disable-features=WebXR --flags-switches-end --flag-switches-begin --enable-webvr -- For graphics-related bugs, please copy/paste the contents of the about:gpu page at the end of this report. [372:11472:0123/094248.637:WARNING:angle_platform_impl.cc(59)] : compileToBinary(228): C:\fakepath(47,8-56): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them C:\fakepath(55,9-41): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them [372:5384:0123/094248.644:WARNING:angle_platform_impl.cc(59)] : compileToBinary(228): C:\fakepath(46,8-56): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them C:\fakepath(54,9-41): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them [372:11472:0123/094248.651:WARNING:angle_platform_impl.cc(59)] : compileToBinary(228): C:\fakepath(29,8-56): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them C:\fakepath(37,9-41): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them [372:5384:0123/094248.660:WARNING:angle_platform_impl.cc(59)] : compileToBinary(228): C:\fakepath(50,8-56): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them C:\fakepath(58,9-41): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them [372:11472:0123/094248.751:WARNING:angle_platform_impl.cc(59)] : compileToBinary(228): C:\fakepath(65,10-34): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them C:\fakepath(87,10-34): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them [372:5384:0123/094254.494:WARNING:angle_platform_impl.cc(59)] : compileToBinary(228): C:\fakepath(46,8-56): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them C:\fakepath(54,9-41): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them [372:2476:0123/094654.866:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094654.898:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094654.920:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094654.940:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094654.963:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094654.985:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.008:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.030:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.052:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.075:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.097:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.119:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.142:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.164:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.186:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.209:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.231:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.253:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.276:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.298:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.320:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation. [372:2476:0123/094655.343:ERROR:gl_utils.cc(278)] : [.Offscreen-For-WebGL-0000028792B78400] GL_INVALID_OPERATION: Invalid operation.
,
Jan 23 2018
Updated : I've tested RX480 and HD630 myself, and find they all works with their latest driver. So only GTX1060 generate these errors. Sorry for the wrong reproduce message.
,
Jan 23 2018
If it helps narrow things down (looks as if 1060 may be part of the issue?) https://webvr.info/samples/03-vr-presentation.html presenting correctly (except only 45fps) (Nvidia driver 390.65, Version 66.0.3328.2 (Official Build) canary (64-bit), 1080, Vive, Windows 10, Dec 5th SteamVR)
,
Jan 23 2018
Not sure what the milestone and prio for this is. Bill, please add.
,
Jan 24 2018
Updated : two things updated. 1. The issue could be reproduced on i7-7700, with GTX1060, GTX 1080, HD630. And I don't test RX480 now. But it couldn't be reproduced on i3(that's why I got different conclusion above) 2. It's a regression and I bisect. And here's the result https://chromium.googlesource.com/chromium/src/+log/8b44f53c3173fca3d2e66bde791b97de5b7826f6..746227693eb6d8e8567c5e04d2d38f3efd250ee5 plus angle patch https://chromium.googlesource.com/angle/angle/+/ceffd20ce2d6ce3d5e92c7c3792af97bfa23fdf2 Further narrow down is in progress.
,
Jan 24 2018
I appear to have the same issue with GTX1080, i7-6700K.
,
Jan 24 2018
SteamVR just updated to Jan 9th version (not sure why it hadn't updated before). Chrome updated to Version 66.0.3330.1 (Official Build) canary SyzyASan (32-bit) (not sure why the update took me from 64 bit to 32 bit) Nvidia still 390.65 i7-6700 Still working.
,
Jan 24 2018
Version 66.0.3330.0 (Official Build) canary (64-bit); still working. (If generating too many comments is an issue let me know; I hope they are helping narrow it down.) I use lots of extensions in my regular Chrome but none in Canary apart from a few Google ones for Drive and Docs that it seems to have installed automatically.
,
Jan 24 2018
I believe this is related to the GPU command decoder used. Try passing commandline flags to Chrome: --use-cmd-decoder=validating appears to work, while --use-cmd-decoder=passthrough shows black in the headset when presenting sample 03. The validating command decoder handles some format conversions in the GPU process when processing webgl draw commands, while the passthrough just passes the commands to ANGLE, and depends on the validation that ANGLE does internally. (I ran Chrome Canary from C:\Users\<username>\AppData\Local\Google\Chrome SxS\Application with those arguments).
,
Jan 25 2018
We try to copy the WebGL canvas contents to a D3D texture that can be shared cross-process. That copy is failing because ANGLE thinks the formats of the two images aren't compatible (RGBA destination, RGB source). 00 libglesv2!gl::Format::EquivalentForBlit 01 libglesv2!gl::ValidateBlitFramebufferANGLE 02 libglesv2!gl::BlitFramebufferANGLE 03 libglesv2!glBlitFramebufferANGLE 04 gl_wrapper!gl::GLApiBase::glBlitFramebufferFn 05 gles2!gpu::gles2::GLES2DecoderPassthroughImpl::DoBlitFramebufferCHROMIUM 06 gles2!gpu::gles2::GLES2DecoderPassthroughImpl::HandleBlitFramebufferCHROMIUM 07 gles2!gpu::gles2::GLES2DecoderPassthroughImpl::DoCommandsImpl<0> 08 gles2!gpu::gles2::GLES2DecoderPassthroughImpl::DoCommands 09 gpu!gpu::CommandBufferService::Flush 0a gpu_ipc_service!gpu::CommandBufferStub::OnAsyncFlush 0b gpu_ipc_service!base::DispatchToMethodImpl<gpu::CommandBufferStub *,void (gpu::CommandBufferStub::*)(int, unsigned int, bool) __attribute__((thiscall)),std::tuple<int,unsigned int,bool>,0,1,2> 0c gpu_ipc_service!base::DispatchToMethod<gpu::CommandBufferStub *,void (gpu::CommandBufferStub::*)(int, unsigned int, bool) __attribute__((thiscall)),std::tuple<int,unsigned int,bool> > 0d gpu_ipc_service!IPC::DispatchToMethod<gpu::CommandBufferStub,void (gpu::CommandBufferStub::*)(int, unsigned int, bool) __attribute__((thiscall)),void,std::tuple<int,unsigned int,bool> > 0e gpu_ipc_service!IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta,std::tuple<int,unsigned int,bool>,void>::Dispatch<gpu::CommandBufferStub,gpu::CommandBufferStub,void,void (gpu::CommandBufferStub::*)(int, unsigned int, bool) __attribute__((thiscall))> 0f gpu_ipc_service!gpu::CommandBufferStub::OnMessageReceived 10 ipc!IPC::MessageRouter::RouteMessage 11 gpu_ipc_service!gpu::GpuChannel::HandleMessageHelper 12 gpu_ipc_service!gpu::GpuChannel::HandleMessage 13 gpu_ipc_service!base::internal::FunctorTraits<void (gpu::GpuChannel::*)(const IPC::Message &) __attribute__((thiscall)),void>::Invoke<base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta> > 14 gpu_ipc_service!base::internal::InvokeHelper<1,void>::MakeItSo<void (gpu::GpuChannel::*)(const IPC::Message &) __attribute__((thiscall)),base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta> > 15 gpu_ipc_service!base::internal::Invoker<base::internal::BindState<void (gpu::GpuChannel::*)(const IPC::Message &) __attribute__((thiscall)),base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta> >,void ()>::RunImpl<void (gpu::GpuChannel::*)(const IPC::Message &) __attribute__((thiscall)),std::tuple<base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta> >,0,1> 16 gpu_ipc_service!base::internal::Invoker<base::internal::BindState<void (gpu::GpuChannel::*)(const IPC::Message &) __attribute__((thiscall)),base::WeakPtr<gpu::GpuChannel>,IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta> >,void ()>::RunOnce 17 gpu!base::OnceCallback<void ()>::Run 18 gpu!gpu::Scheduler::RunNextTask 19 gpu!base::internal::FunctorTraits<void (gpu::Scheduler::*)() __attribute__((thiscall)),void>::Invoke<const base::WeakPtr<gpu::Scheduler> &> 1a gpu!base::internal::InvokeHelper<1,void>::MakeItSo<void (gpu::Scheduler::*const &)() __attribute__((thiscall)),const base::WeakPtr<gpu::Scheduler> &> 1b gpu!base::internal::Invoker<base::internal::BindState<void (gpu::Scheduler::*)() __attribute__((thiscall)),base::WeakPtr<gpu::Scheduler> >,void ()>::RunImpl<void (gpu::Scheduler::*const &)() __attribute__((thiscall)),const std::tuple<base::WeakPtr<gpu::Scheduler> > &,0> *** WARNING: Unable to verify checksum for C:\src\chromium2\src\out\Debug\base.dll 1c gpu!base::internal::Invoker<base::internal::BindState<void (gpu::Scheduler::*)() __attribute__((thiscall)),base::WeakPtr<gpu::Scheduler> >,void ()>::Run 1d base!base::OnceCallback<void ()>::Run 1e base!base::debug::TaskAnnotator::RunTask 1f base!base::internal::IncomingTaskQueue::RunTask 20 base!base::MessageLoop::RunTask 21 base!base::MessageLoop::DeferOrRunPendingTask 22 base!base::MessageLoop::DoWork 23 base!base::MessagePumpDefault::Run 24 base!base::MessageLoop::Run *** WARNING: Unable to verify checksum for C:\src\chromium2\src\out\Debug\content.dll 25 base!base::RunLoop::Run 26 content!content::GpuMain 27 content!content::RunNamedProcessTypeMain 28 content!content::ContentMainRunnerImpl::Run *** WARNING: Unable to verify checksum for C:\src\chromium2\src\out\Debug\embedder.dll 29 content!content::ContentServiceManagerMainDelegate::RunEmbedderProcess 2a embedder!service_manager::Main *** WARNING: Unable to verify checksum for C:\src\chromium2\src\out\Debug\chrome.dll 2b content!content::ContentMain *** WARNING: Unable to verify checksum for chrome.exe 2c chrome_10670000!ChromeMain 2d chrome!MainDllLoader::Launch 2e chrome!wWinMain 2f chrome!invoke_main 30 chrome!__scrt_common_main_seh 31 chrome!__scrt_common_main 32 chrome!wWinMainCRTStartup 33 KERNEL32!BaseThreadInitThunk 34 ntdll_77370000!__RtlUserThreadStart 35 ntdll_77370000!_RtlUserThreadStart As a temporary workaround, running with --use-cmd-decoder=validating appears to fix the issue (going through a different ANGLE path for copying the image).
,
Jan 25 2018
With double checks, this patch https://chromium.googlesource.com/angle/angle/+/ceffd20ce2d6ce3d5e92c7c3792af97bfa23fdf2 trigger this issue(use passthrough command buffer black screen).
,
Jan 25 2018
Interesting. As a matter of side interest, how do two very similarly setup machines calling Chrome Canary without any flags manage to get launched with different md-decoder options? Or must there be some other difference between the machine setups?
,
Jan 25 2018
--use-cmd-decoder=validating does indeed allow presenting to the VR display here.
,
Jan 30 2018
#13: There is no difference between the machine setups. This is an experimental feature set by server config. I have the fix out for review. https://chromium-review.googlesource.com/c/chromium/src/+/892091 It should be in Canary within the next couple days.
,
Jan 31 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9c0c4b5f603dab118934d27979507a4405c9f1e1 commit 9c0c4b5f603dab118934d27979507a4405c9f1e1 Author: Bill Orr <billorr@chromium.org> Date: Wed Jan 31 07:36:07 2018 Fix black screen when presenting on some WebVR pages on Windows The issue here was that glBlitFramebufferANGLE fails when the color formats of the source and destination image aren't compatible. The color format for pBufferSurfaces wrapping dxgi textures has changed to report the underlying dxgi format instead of the egl config used to create the surface, so we were sometimes failing to copy the WebGL contents onto our cross-process-sharing texture. The fix is to use CopySubTextureCHROMIUM instead of blitting framebuffers. This API won't create new destination textures, and will convert formats for us. It also has the benefit of handling flipping y-direction for us, so we could avoid a copy. BUG= 804628 Change-Id: Ibc55dd092bacbdd1f751adb0b6a854f58e64e22b Reviewed-on: https://chromium-review.googlesource.com/892091 Reviewed-by: Klaus Weidner <klausw@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Bill Orr <billorr@chromium.org> Cr-Commit-Position: refs/heads/master@{#533224} [modify] https://crrev.com/9c0c4b5f603dab118934d27979507a4405c9f1e1/third_party/WebKit/Source/platform/graphics/GpuMemoryBufferImageCopy.cpp [modify] https://crrev.com/9c0c4b5f603dab118934d27979507a4405c9f1e1/third_party/WebKit/Source/platform/graphics/GpuMemoryBufferImageCopy.h
,
Jan 31 2018
,
Feb 7 2018
,
Feb 7 2018
,
Feb 8 2018
I'm seeing a black screen again: Google Chrome 66.0.3342.0 (Official Build) canary (64-bit) (cohort: Clang-64) Revision 7a08be580eb458170d11b34a8de66fe08db41bc5-refs/heads/master@{#534887} Investigating, but I will file a new bug if this turns out to be a different issue.
,
Feb 8 2018
Could reproduce it with command buffer(--use-cmd-decoder=validating) on webvr.info/samples/03-vr-presentation.html. pass through command buffer works fine.
,
Feb 8 2018
,
Feb 9 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/134756fec9112709f082c0895fe8921142797f82 commit 134756fec9112709f082c0895fe8921142797f82 Author: Bill Orr <billorr@chromium.org> Date: Fri Feb 09 04:11:43 2018 Fix black screen when presenting on some WebVR pages on Windows The previous fix was incomplete - it fixed the passthrough command buffer, but doesn't work with the validating command buffer. This has been tested with both command buffers. The issue is that the validating command buffer's implementation of CopySubTextureCHROMIUM allows conversions RGB->RGBA, but not RGBA->RGB, while the passthrough is ultimately ignoring the fact that the destination was requesting to be RGB. BUG= 804628 Change-Id: Ia3c900c2d4a73af832c592964e67f33f93dbbd2d Reviewed-on: https://chromium-review.googlesource.com/910450 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Bill Orr <billorr@chromium.org> Cr-Commit-Position: refs/heads/master@{#535631} [modify] https://crrev.com/134756fec9112709f082c0895fe8921142797f82/third_party/WebKit/Source/platform/graphics/GpuMemoryBufferImageCopy.cpp
,
Mar 8 2018
,
Jul 4
,
Jul 4
|
|||||||||
►
Sign in to add a comment |
|||||||||
Comment 1 by ddorwin@chromium.org
, Jan 23 2018