viz: InProcessCommandBuffer use virtualized context decision logic |
|||||
Issue descriptionThe logic that decides |use_virtualized_gl_context_| in InProcessCommandBuffer is a subset of the logic that exists in GLES2CommandBufferStub. Here are the missing checks: https://cs.chromium.org/chromium/src/gpu/ipc/service/gles2_command_buffer_stub.cc?l=115&rcl=8802d7750b9638cb700dcf1638d956c9f63b8bae https://cs.chromium.org/chromium/src/gpu/ipc/service/gles2_command_buffer_stub.cc?l=123&rcl=8802d7750b9638cb700dcf1638d956c9f63b8bae https://cs.chromium.org/chromium/src/gpu/ipc/service/gles2_command_buffer_stub.cc?l=159&rcl=8802d7750b9638cb700dcf1638d956c9f63b8bae https://cs.chromium.org/chromium/src/gpu/ipc/service/gles2_command_buffer_stub.cc?l=198&rcl=8802d7750b9638cb700dcf1638d956c9f63b8bae
,
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 16 2018
The drift in the logic has shown itself in crashes of viz_content_browsertests on Mac: https://ci.chromium.org/buildbot/tryserver.chromium.mac/mac_chromium_rel_ng/652523 It would be good to union the logic of those two paths into a shared location.
,
Mar 12 2018
From triage meeting: There are 8 divergent pieces of code that touch this. We'll need a resource to help get these all using one centralized location. This will block Viz Finch trials on Mac
,
Apr 13 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/22b5641e249102f203176077163f1152d09a254f commit 22b5641e249102f203176077163f1152d09a254f Author: kylechar <kylechar@chromium.org> Date: Fri Apr 13 15:58:21 2018 Improve InProcessCommandBuffer logic. This CL implements logic from GLES2CommandBufferStub::Initialize() in InProcessCommandBuffer::InitializeOnGpuThread(). Some differences are not addressed and I've left TODOs instead. Bug: 832243, 811979 Change-Id: I1139a33f594280ea4c17b3a7223391e33bc15ad6 Reviewed-on: https://chromium-review.googlesource.com/1006038 Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Bo <boliu@chromium.org> Commit-Queue: kylechar <kylechar@chromium.org> Cr-Commit-Position: refs/heads/master@{#550630} [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/android_webview/browser/deferred_gpu_command_service.cc [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/android_webview/browser/deferred_gpu_command_service.h [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/components/viz/service/main/viz_main_impl.cc [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/gpu/ipc/gpu_in_process_thread_service.cc [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/gpu/ipc/gpu_in_process_thread_service.h [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/gpu/ipc/in_process_command_buffer.cc [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/gpu/ipc/in_process_command_buffer.h
,
Apr 13 2018
The logic should be the same now. I filed crbug.com/832243 for doing more work with regards to unifying the logic.
,
Apr 17 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/22b5641e249102f203176077163f1152d09a254f commit 22b5641e249102f203176077163f1152d09a254f Author: kylechar <kylechar@chromium.org> Date: Fri Apr 13 15:58:21 2018 Improve InProcessCommandBuffer logic. This CL implements logic from GLES2CommandBufferStub::Initialize() in InProcessCommandBuffer::InitializeOnGpuThread(). Some differences are not addressed and I've left TODOs instead. Bug: 832243, 811979 Change-Id: I1139a33f594280ea4c17b3a7223391e33bc15ad6 Reviewed-on: https://chromium-review.googlesource.com/1006038 Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Bo <boliu@chromium.org> Commit-Queue: kylechar <kylechar@chromium.org> Cr-Commit-Position: refs/heads/master@{#550630} [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/android_webview/browser/deferred_gpu_command_service.cc [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/android_webview/browser/deferred_gpu_command_service.h [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/components/viz/service/main/viz_main_impl.cc [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/gpu/ipc/gpu_in_process_thread_service.cc [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/gpu/ipc/gpu_in_process_thread_service.h [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/gpu/ipc/in_process_command_buffer.cc [modify] https://crrev.com/22b5641e249102f203176077163f1152d09a254f/gpu/ipc/in_process_command_buffer.h |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by piman@chromium.org
, Feb 14 2018Blocking: 730193