|
|
Created:
5 years ago by ananta Modified:
5 years ago CC:
chromium-reviews, posciak+watch_chromium.org, jam, mcasas+watch_chromium.org, feature-media-reviews_chromium.org, darin-cc_chromium.org, piman+watch_chromium.org Base URL:
https://chromium.googlesource.com/chromium/src.git@master Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionStop using the ANGLE D3D11 device for H/W decoding on Windows 8+
It looks like there are bugs in some GPU drivers like nvidia which causes the D3D11 context
state to get messed up when accessed from multiple threads. This inspite of us following the documented
way of accessing the context from multiple threads by enabling multi threaded mode.
This change reverts back to the old model of creating a D3D11 device per decoder instance. The ANGLE device
continues to be used for D3D9 based decoding on Windows 7, which will kick in if D3D11 is not available on that
platform.
BUG=548383
TBR=dalecurtis
Committed: https://crrev.com/8d746f4bc6f34c318eb24edf33a6e8e5dfd6eb94
Cr-Commit-Position: refs/heads/master@{#364272}
Patch Set 1 #
Total comments: 2
Patch Set 2 : Fixed comment #
Depends on Patchset: Messages
Total messages: 21 (7 generated)
ananta@chromium.org changed reviewers: + dalecurtis@chromium.org
Is it worth exploring the COM initializer to see if we should be using MTA mode with the multithreaded version? I believe the GPU one is initializing in STA mode which would me you need to marshall pointers between threads to ensure thread safety IIUC.
On 2015/12/09 20:54:25, DaleCurtis wrote: > Is it worth exploring the COM initializer to see if we should be using MTA mode > with the multithreaded version? I believe the GPU one is initializing in STA > mode which would me you need to marshall pointers between threads to ensure > thread safety IIUC. I think we should first get back to a reliable state and then explore other possibilities. crbug.com/548383 , a P1, has been open for over a month.
dalecurtis@chromium.org changed reviewers: + sandersd@chromium.org
=>sandersd for review.
On 2015/12/09 20:54:25, DaleCurtis wrote: > Is it worth exploring the COM initializer to see if we should be using MTA mode > with the multithreaded version? I believe the GPU one is initializing in STA > mode which would me you need to marshall pointers between threads to ensure > thread safety IIUC. The COM initializer would matter for objects which are created using classical COM functions like CoCreateInstance etc. In this particular use case that object is IMFTransform. Debugging through that object does not look like it follows any of COM marshaling paradigms. The interfaces we are having problems like the video context are not COM objects. They use COM contracts for convenience only.
On 2015/12/09 22:42:11, ananta wrote: > On 2015/12/09 20:54:25, DaleCurtis wrote: > > Is it worth exploring the COM initializer to see if we should be using MTA > mode > > with the multithreaded version? I believe the GPU one is initializing in STA > > mode which would me you need to marshall pointers between threads to ensure > > thread safety IIUC. > > The COM initializer would matter for objects which are created using classical > COM functions like CoCreateInstance etc. > In this particular use case that object is IMFTransform. Debugging through that > object does not look like it follows > any of COM marshaling paradigms. The interfaces we are having problems like the > video context are not COM objects. They > use COM contracts for convenience only. Attempting to marshal these interfaces using COM functions like CoMarshalInterThreadInterfaceInStream, returns the infamous error code 0x80040155, which indicates interface not registered, i.e no marshaling support exists for these interfaces.
lgtm https://codereview.chromium.org/1505353005/diff/1/content/common/gpu/media/dx... File content/common/gpu/media/dxva_video_decode_accelerator_win.cc (right): https://codereview.chromium.org/1505353005/diff/1/content/common/gpu/media/dx... content/common/gpu/media/dxva_video_decode_accelerator_win.cc:790: // 9.1 unless otherwise stated by the application, which is not our case. I'm not clear what the last sentence means.
https://codereview.chromium.org/1505353005/diff/1/content/common/gpu/media/dx... File content/common/gpu/media/dxva_video_decode_accelerator_win.cc (right): https://codereview.chromium.org/1505353005/diff/1/content/common/gpu/media/dx... content/common/gpu/media/dxva_video_decode_accelerator_win.cc:790: // 9.1 unless otherwise stated by the application, which is not our case. On 2015/12/09 23:02:49, sandersd wrote: > I'm not clear what the last sentence means. Fixed comment
Description was changed from ========== Stop using the ANGLE D3D11 device for H/W decoding on Windows 8+ It looks like there are bugs in some GPU drivers like nvidia which causes the D3D11 context state to get messed up when accessed from multiple threads. This inspite of us following the documented way of accessing the context from multiple threads by enabling multi threaded mode. This change reverts back to the old model of creating a D3D11 device per decoder instance. The ANGLE device continues to be used for D3D9 based decoding on Windows 7, which will kick in if D3D11 is not available on that platform. BUG=548383 ========== to ========== Stop using the ANGLE D3D11 device for H/W decoding on Windows 8+ It looks like there are bugs in some GPU drivers like nvidia which causes the D3D11 context state to get messed up when accessed from multiple threads. This inspite of us following the documented way of accessing the context from multiple threads by enabling multi threaded mode. This change reverts back to the old model of creating a D3D11 device per decoder instance. The ANGLE device continues to be used for D3D9 based decoding on Windows 7, which will kick in if D3D11 is not available on that platform. BUG=548383 TBR=dalecurtis ==========
TBR'ing dalecurtis. Will address comments in a follow up
Dan's lgtm should be enough, but here's mine.
The CQ bit was checked by ananta@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from sandersd@chromium.org Link to the patchset: https://codereview.chromium.org/1505353005/#ps20001 (title: "Fixed comment")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1505353005/20001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1505353005/20001
Message was sent while issue was closed.
Description was changed from ========== Stop using the ANGLE D3D11 device for H/W decoding on Windows 8+ It looks like there are bugs in some GPU drivers like nvidia which causes the D3D11 context state to get messed up when accessed from multiple threads. This inspite of us following the documented way of accessing the context from multiple threads by enabling multi threaded mode. This change reverts back to the old model of creating a D3D11 device per decoder instance. The ANGLE device continues to be used for D3D9 based decoding on Windows 7, which will kick in if D3D11 is not available on that platform. BUG=548383 TBR=dalecurtis ========== to ========== Stop using the ANGLE D3D11 device for H/W decoding on Windows 8+ It looks like there are bugs in some GPU drivers like nvidia which causes the D3D11 context state to get messed up when accessed from multiple threads. This inspite of us following the documented way of accessing the context from multiple threads by enabling multi threaded mode. This change reverts back to the old model of creating a D3D11 device per decoder instance. The ANGLE device continues to be used for D3D9 based decoding on Windows 7, which will kick in if D3D11 is not available on that platform. BUG=548383 TBR=dalecurtis ==========
Message was sent while issue was closed.
Committed patchset #2 (id:20001)
Message was sent while issue was closed.
Description was changed from ========== Stop using the ANGLE D3D11 device for H/W decoding on Windows 8+ It looks like there are bugs in some GPU drivers like nvidia which causes the D3D11 context state to get messed up when accessed from multiple threads. This inspite of us following the documented way of accessing the context from multiple threads by enabling multi threaded mode. This change reverts back to the old model of creating a D3D11 device per decoder instance. The ANGLE device continues to be used for D3D9 based decoding on Windows 7, which will kick in if D3D11 is not available on that platform. BUG=548383 TBR=dalecurtis ========== to ========== Stop using the ANGLE D3D11 device for H/W decoding on Windows 8+ It looks like there are bugs in some GPU drivers like nvidia which causes the D3D11 context state to get messed up when accessed from multiple threads. This inspite of us following the documented way of accessing the context from multiple threads by enabling multi threaded mode. This change reverts back to the old model of creating a D3D11 device per decoder instance. The ANGLE device continues to be used for D3D9 based decoding on Windows 7, which will kick in if D3D11 is not available on that platform. BUG=548383 TBR=dalecurtis Committed: https://crrev.com/8d746f4bc6f34c318eb24edf33a6e8e5dfd6eb94 Cr-Commit-Position: refs/heads/master@{#364272} ==========
Message was sent while issue was closed.
Patchset 2 (id:??) landed as https://crrev.com/8d746f4bc6f34c318eb24edf33a6e8e5dfd6eb94 Cr-Commit-Position: refs/heads/master@{#364272} |