[D3D12, Enc] Use shared fence for D3D11/D3D12 interop scenarios sync [chromium/src : main]

0 views
Skip to first unread message

Qiu, Jianlin (Gerrit)

unread,
Nov 25, 2025, 11:43:42 PM11/25/25
to Ma, Yingying, AyeAye, chromium...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
Attention needed from Ma, Yingying

Qiu, Jianlin added 4 comments

File media/gpu/windows/d3d12_helpers.h
Line 119, Patchset 4:// A helper for synchronization between D3D11 and D3D12 in interop scenarios.
Qiu, Jianlin . unresolved

```suggestion
// Helpers for sychronizing same underlying resource between D3D11 and D3D12.
```

File media/gpu/windows/d3d12_video_encode_accelerator.cc
Line 938, Patchset 4:BASE_FEATURE(kSharedFence, base::FEATURE_ENABLED_BY_DEFAULT);
Qiu, Jianlin . unresolved

kD3D12VideoEncodeAccleratorUseSharedFence

File media/gpu/windows/d3d12_video_encoder_wrapper.cc
Line 185, Patchset 4:
if (fence_and_value) {
command_queue_->Wait(fence_and_value->first.Get(), fence_and_value->second);
}
Qiu, Jianlin . unresolved

Similar as in VP, you should first record commands and then wait on GPU queue, before executing the commands.

File media/gpu/windows/d3d12_video_processor_wrapper.cc
Line 138, Patchset 4:
if (fence_and_value) {
command_queue_->Wait(fence_and_value->first.Get(), fence_and_value->second);
}
Qiu, Jianlin . unresolved

You should first record the commands and then wait on GPU queue before executing the command list, though the difference is trivial.

Open in Gerrit

Related details

Attention is currently required from:
  • Ma, Yingying
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
Gerrit-Change-Number: 7201201
Gerrit-PatchSet: 4
Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
Gerrit-Comment-Date: Wed, 26 Nov 2025 04:43:33 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Ma, Yingying (Gerrit)

unread,
Nov 26, 2025, 12:25:15 AM11/26/25
to Rafael Cintron, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
Attention needed from Qiu, Jianlin

Ma, Yingying added 4 comments

File media/gpu/windows/d3d12_helpers.h
Line 119, Patchset 4:// A helper for synchronization between D3D11 and D3D12 in interop scenarios.
Qiu, Jianlin . resolved

```suggestion
// Helpers for sychronizing same underlying resource between D3D11 and D3D12.
```

Ma, Yingying

Done

File media/gpu/windows/d3d12_video_encode_accelerator.cc
Line 938, Patchset 4:BASE_FEATURE(kSharedFence, base::FEATURE_ENABLED_BY_DEFAULT);
Qiu, Jianlin . resolved

kD3D12VideoEncodeAccleratorUseSharedFence

Ma, Yingying

Done

File media/gpu/windows/d3d12_video_encoder_wrapper.cc
Line 185, Patchset 4:
if (fence_and_value) {
command_queue_->Wait(fence_and_value->first.Get(), fence_and_value->second);
}
Qiu, Jianlin . resolved

Similar as in VP, you should first record commands and then wait on GPU queue, before executing the commands.

Ma, Yingying

Done

File media/gpu/windows/d3d12_video_processor_wrapper.cc
Line 138, Patchset 4:
if (fence_and_value) {
command_queue_->Wait(fence_and_value->first.Get(), fence_and_value->second);
}
Qiu, Jianlin . resolved

You should first record the commands and then wait on GPU queue before executing the command list, though the difference is trivial.

Ma, Yingying

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Qiu, Jianlin
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
    Gerrit-Change-Number: 7201201
    Gerrit-PatchSet: 7
    Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
    Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
    Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
    Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
    Gerrit-Attention: Qiu, Jianlin <jianl...@intel.com>
    Gerrit-Comment-Date: Wed, 26 Nov 2025 05:25:03 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Qiu, Jianlin <jianl...@intel.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Rafael Cintron (Gerrit)

    unread,
    Dec 2, 2025, 6:45:24 PM12/2/25
    to Ma, Yingying, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
    Attention needed from Eugene Zemtsov and Ma, Yingying

    Rafael Cintron added 5 comments

    File media/gpu/windows/d3d12_helpers.h
    Line 132, Patchset 9 (Latest): D3D11FenceAndValue GetD3D11FenceWithNextValue() {
    Rafael Cintron . unresolved
    ```suggestion
    D3D11FenceAndValue GetD3D11FenceAndIncrementValue() {
    ```
    File media/gpu/windows/d3d12_video_encode_accelerator.cc
    Line 249, Patchset 9 (Latest): if (SUCCEEDED(context4->Signal(fence_and_value->first.Get(),
    fence_and_value->second))) {
    Rafael Cintron . unresolved

    I think we should simplify the complexity of this work by:
    -Treat failures from Signal as equivalent to device removed.
    -Use D3D11 video decoder if ID3D11DeviceContext4 is not present. Check this early in the lifetime of the decoder, not here in the middle of sync token generation.

    Trying to limp along if we get failures in Signal isn't worth the complexity, especially since I do not see any included tests that verify this code path. To be clear, I'm not suggesting you write them.

    Line 942, Patchset 9 (Latest): if (!d3d11_device || FAILED(d3d11_device.As(&device5))) {
    Rafael Cintron . unresolved

    Can we check for D3D11Device5 availability when the decoder is created instead of attempting to gracefully handle failures during the middle of operation?

    Line 969, Patchset 9 (Latest): interop_fence_ = TryCreateInteropFence(
    Rafael Cintron . unresolved

    Code here does not check the return value of `TryCreateInteropFence` in case of failure. Does ResolveQueuedSharedImages handle this? How do we prevent the code getting into a continual state of fail? Seems like we want to create the interop fence early in the decoder's lifetime instead of doing it on demand.

    File media/gpu/windows/d3d12_video_encode_delegate.cc
    Line 309, Patchset 9 (Latest): fence_and_value.reset();
    Rafael Cintron . unresolved

    Please add a comment describing why we want to reset fence_and_value here.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Eugene Zemtsov
    • Ma, Yingying
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
      Gerrit-Change-Number: 7201201
      Gerrit-PatchSet: 9
      Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
      Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
      Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
      Gerrit-Comment-Date: Tue, 02 Dec 2025 23:45:16 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Ma, Yingying (Gerrit)

      unread,
      Dec 3, 2025, 4:16:39 AM12/3/25
      to Chromium LUCI CQ, Rafael Cintron, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
      Attention needed from Rafael Cintron

      Ma, Yingying added 3 comments

      File media/gpu/windows/d3d12_helpers.h
      Line 132, Patchset 9: D3D11FenceAndValue GetD3D11FenceWithNextValue() {
      Rafael Cintron . resolved
      ```suggestion
      D3D11FenceAndValue GetD3D11FenceAndIncrementValue() {
      ```
      Ma, Yingying

      Done

      File media/gpu/windows/d3d12_video_encode_accelerator.cc
      Line 942, Patchset 9: if (!d3d11_device || FAILED(d3d11_device.As(&device5))) {
      Rafael Cintron . unresolved

      Can we check for D3D11Device5 availability when the decoder is created instead of attempting to gracefully handle failures during the middle of operation?

      Ma, Yingying

      You probably mean encoder rather than decoder? If D3D11Device5 is not supported, or if the creation of `interop_fence_`(which is optional) fails, we can fall back to the current solution and wait on the CPU side. I prefer to regard this as a tolerable error. However, if `interop_fence_` has already been created but an error occurs in `GenerateResourceOnSynTokenReleased`, this should be treated as a fatal error(updated in the latest patchset),WDYT?

      File media/gpu/windows/d3d12_video_encode_delegate.cc
      Line 309, Patchset 9: fence_and_value.reset();
      Rafael Cintron . resolved

      Please add a comment describing why we want to reset fence_and_value here.

      Ma, Yingying

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Rafael Cintron
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
      Gerrit-Change-Number: 7201201
      Gerrit-PatchSet: 10
      Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
      Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
      Gerrit-Attention: Rafael Cintron <rafael....@microsoft.com>
      Gerrit-Comment-Date: Wed, 03 Dec 2025 09:16:28 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Rafael Cintron <rafael....@microsoft.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Rafael Cintron (Gerrit)

      unread,
      Dec 3, 2025, 3:58:44 PM12/3/25
      to Ma, Yingying, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
      Attention needed from Ma, Yingying

      Rafael Cintron added 1 comment

      File media/gpu/windows/d3d12_video_encode_accelerator.cc
      Line 942, Patchset 9: if (!d3d11_device || FAILED(d3d11_device.As(&device5))) {
      Rafael Cintron . unresolved

      Can we check for D3D11Device5 availability when the decoder is created instead of attempting to gracefully handle failures during the middle of operation?

      Ma, Yingying

      You probably mean encoder rather than decoder? If D3D11Device5 is not supported, or if the creation of `interop_fence_`(which is optional) fails, we can fall back to the current solution and wait on the CPU side. I prefer to regard this as a tolerable error. However, if `interop_fence_` has already been created but an error occurs in `GenerateResourceOnSynTokenReleased`, this should be treated as a fatal error(updated in the latest patchset),WDYT?

      Rafael Cintron

      Yes, I meant encoder.

      Are there machines where we can't use D3D12 encoder for reasons besides lack of fences? If so, I think we can simplify further and use that fallback when there is no fence support.

      Once your change is enabled, few people are going to test the "current solution" as the code evolves and there are no tests to ensure it stays working. The fewer fallbacks we have to maintain, the better.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Ma, Yingying
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
      Gerrit-Change-Number: 7201201
      Gerrit-PatchSet: 10
      Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
      Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
      Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
      Gerrit-Comment-Date: Wed, 03 Dec 2025 20:58:35 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Rafael Cintron <rafael....@microsoft.com>
      Comment-In-Reply-To: Ma, Yingying <yingy...@intel.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Ma, Yingying (Gerrit)

      unread,
      Dec 8, 2025, 3:18:19 AM12/8/25
      to Chromium Metrics Reviews, Chromium LUCI CQ, Rafael Cintron, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
      Attention needed from Eugene Zemtsov and Rafael Cintron

      Ma, Yingying added 3 comments

      File media/gpu/windows/d3d12_video_encode_accelerator.cc
      Line 249, Patchset 9: if (SUCCEEDED(context4->Signal(fence_and_value->first.Get(),
      fence_and_value->second))) {
      Rafael Cintron . resolved

      I think we should simplify the complexity of this work by:
      -Treat failures from Signal as equivalent to device removed.
      -Use D3D11 video decoder if ID3D11DeviceContext4 is not present. Check this early in the lifetime of the decoder, not here in the middle of sync token generation.

      Trying to limp along if we get failures in Signal isn't worth the complexity, especially since I do not see any included tests that verify this code path. To be clear, I'm not suggesting you write them.

      Ma, Yingying

      Done

      Line 942, Patchset 9: if (!d3d11_device || FAILED(d3d11_device.As(&device5))) {
      Rafael Cintron . unresolved

      Can we check for D3D11Device5 availability when the decoder is created instead of attempting to gracefully handle failures during the middle of operation?

      Ma, Yingying

      You probably mean encoder rather than decoder? If D3D11Device5 is not supported, or if the creation of `interop_fence_`(which is optional) fails, we can fall back to the current solution and wait on the CPU side. I prefer to regard this as a tolerable error. However, if `interop_fence_` has already been created but an error occurs in `GenerateResourceOnSynTokenReleased`, this should be treated as a fatal error(updated in the latest patchset),WDYT?

      Rafael Cintron

      Yes, I meant encoder.

      Are there machines where we can't use D3D12 encoder for reasons besides lack of fences? If so, I think we can simplify further and use that fallback when there is no fence support.

      Once your change is enabled, few people are going to test the "current solution" as the code evolves and there are no tests to ensure it stays working. The fewer fallbacks we have to maintain, the better.

      Ma, Yingying

      I've added UMA to track interop fence creation failures and simplified the fallback path logic in the latest patchset. I prefer to keep the fallback path for now to avoid block D3D12 VEA tests. If UMA shows no fallback events, we’ll remove both the UMA metric and fallback path in a follow-up update.

      Line 969, Patchset 9: interop_fence_ = TryCreateInteropFence(
      Rafael Cintron . resolved

      Code here does not check the return value of `TryCreateInteropFence` in case of failure. Does ResolveQueuedSharedImages handle this? How do we prevent the code getting into a continual state of fail? Seems like we want to create the interop fence early in the decoder's lifetime instead of doing it on demand.

      Ma, Yingying

      Updated in another loop.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Eugene Zemtsov
      • Rafael Cintron
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
      Gerrit-Change-Number: 7201201
      Gerrit-PatchSet: 12
      Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
      Gerrit-Attention: Rafael Cintron <rafael....@microsoft.com>
      Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Comment-Date: Mon, 08 Dec 2025 08:18:06 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Ma, Yingying (Gerrit)

      unread,
      Dec 10, 2025, 9:54:26 PM12/10/25
      to Chromium Metrics Reviews, Chromium LUCI CQ, Rafael Cintron, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
      Attention needed from Eugene Zemtsov

      Ma, Yingying added 1 comment

      Patchset-level comments
      File-level comment, Patchset 17:
      Ma, Yingying . resolved

      Hi eugene PTAL, thanks!

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Eugene Zemtsov
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
      Gerrit-Change-Number: 7201201
      Gerrit-PatchSet: 18
      Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
      Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Comment-Date: Thu, 11 Dec 2025 02:54:16 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Rafael Cintron (Gerrit)

      unread,
      Dec 16, 2025, 4:51:03 PM12/16/25
      to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
      Attention needed from Eugene Zemtsov and Ma, Yingying

      Rafael Cintron added 8 comments

      File media/gpu/windows/d3d12_video_encode_accelerator.cc
      Line 154, Patchset 18 (Latest): std::optional<uint64_t> resolved_fence_value;
      Rafael Cintron . unresolved

      What does it mean for a fence value to be "resolved"?

      Line 242, Patchset 18 (Latest): hr = shared_texture.As(&dxgi_resource);
      RETURN_ON_FAILURE_WITH_CALLBACK(
      hr, "Failed to query DXGI resource from shared texture");
      Rafael Cintron . unresolved

      ID3D11Texture2D => IDXGIResource QI should always succeed.

      Line 259, Patchset 18 (Latest): if (fence_and_value) {
      Rafael Cintron . unresolved

      With multiple textures at play in this method, please add comments that describe what this fence and value is used for. Is this texture going from D3D12 command queue => D3D11 context or the other way around?

      Line 260, Patchset 18 (Latest): Microsoft::WRL::ComPtr<ID3D11DeviceContext4> context4;
      hr = d3d11_context.As(&context4);
      RETURN_ON_FAILURE_WITH_CALLBACK(hr, "Failed to query context4");
      Rafael Cintron . unresolved

      If `fence_and_value` is valid, shouldn't the QI to `ID3D11DeviceContext4` always succeed?

      Line 942, Patchset 9: if (!d3d11_device || FAILED(d3d11_device.As(&device5))) {
      Rafael Cintron . unresolved

      Can we check for D3D11Device5 availability when the decoder is created instead of attempting to gracefully handle failures during the middle of operation?

      Ma, Yingying

      You probably mean encoder rather than decoder? If D3D11Device5 is not supported, or if the creation of `interop_fence_`(which is optional) fails, we can fall back to the current solution and wait on the CPU side. I prefer to regard this as a tolerable error. However, if `interop_fence_` has already been created but an error occurs in `GenerateResourceOnSynTokenReleased`, this should be treated as a fatal error(updated in the latest patchset),WDYT?

      Rafael Cintron

      Yes, I meant encoder.

      Are there machines where we can't use D3D12 encoder for reasons besides lack of fences? If so, I think we can simplify further and use that fallback when there is no fence support.

      Once your change is enabled, few people are going to test the "current solution" as the code evolves and there are no tests to ensure it stays working. The fewer fallbacks we have to maintain, the better.

      Ma, Yingying

      I've added UMA to track interop fence creation failures and simplified the fallback path logic in the latest patchset. I prefer to keep the fallback path for now to avoid block D3D12 VEA tests. If UMA shows no fallback events, we’ll remove both the UMA metric and fallback path in a follow-up update.

      Rafael Cintron

      When you say "... to avoid block D3D12 VEA tests", does that imply there are no tests for the fence code path? When will those be added?

      Even if the UMA shows fallback events, I still inclined to have the fallback behavior be to use D3D11 encoder instead of D3D12 + EnqueueSetEvent. The fewer codepaths we need to keep in our minds when working with the code, the better. Right now, everything is std::optional and it's difficult to reason about when things are truly optional vs. a place to create objects when they don't exist.

      Which of these two methods is better for performance? How does that change if the browser is D3D12 but we need to fallback to D3D11 encoding?

      Line 955, Patchset 18 (Latest): Microsoft::WRL::ComPtr<ID3D12Device> d3d12_device,
      Microsoft::WRL::ComPtr<ID3D11Device> d3d11_device) {
      Rafael Cintron . unresolved

      Since TryCreateInteropFence does not take ownership of these objects, please pass them by raw/bald pointer to avoid unnecessary AddRef/Release.

      Line 983, Patchset 18 (Latest): return std::make_unique<FenceInteropHelper>(d3d11_fence, d3d12_fence);
      Rafael Cintron . unresolved
      ```suggestion
      return std::make_unique<FenceInteropHelper>(std::move(d3d11_fence), std::move(d3d12_fence));
      ```
      Line 994, Patchset 18 (Latest): interop_fence_ = TryCreateInteropFence(
      Rafael Cintron . unresolved

      Instead of trying to create the interop fence here in `OnCommandBufferHelperAvailable`, can we create it when `D3D12VideoEncodeAccelerator` is created?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Eugene Zemtsov
      • Ma, Yingying
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
      Gerrit-Change-Number: 7201201
      Gerrit-PatchSet: 18
      Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
      Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
      Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
      Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
      Gerrit-Comment-Date: Tue, 16 Dec 2025 21:50:54 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Ma, Yingying (Gerrit)

      unread,
      Dec 18, 2025, 4:55:33 AM12/18/25
      to Chromium Metrics Reviews, Chromium LUCI CQ, Rafael Cintron, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
      Attention needed from Eugene Zemtsov and Rafael Cintron

      Ma, Yingying added 8 comments

      File media/gpu/windows/d3d12_video_encode_accelerator.cc
      Line 154, Patchset 18: std::optional<uint64_t> resolved_fence_value;
      Rafael Cintron . resolved

      What does it mean for a fence value to be "resolved"?

      Ma, Yingying

      Updated to interop_fence_value.

      Line 242, Patchset 18: hr = shared_texture.As(&dxgi_resource);

      RETURN_ON_FAILURE_WITH_CALLBACK(
      hr, "Failed to query DXGI resource from shared texture");
      Rafael Cintron . resolved

      ID3D11Texture2D => IDXGIResource QI should always succeed.

      Ma, Yingying

      Done

      Line 259, Patchset 18: if (fence_and_value) {
      Rafael Cintron . resolved

      With multiple textures at play in this method, please add comments that describe what this fence and value is used for. Is this texture going from D3D12 command queue => D3D11 context or the other way around?

      Ma, Yingying

      Done

      Line 260, Patchset 18: Microsoft::WRL::ComPtr<ID3D11DeviceContext4> context4;

      hr = d3d11_context.As(&context4);
      RETURN_ON_FAILURE_WITH_CALLBACK(hr, "Failed to query context4");
      Rafael Cintron . resolved

      If `fence_and_value` is valid, shouldn't the QI to `ID3D11DeviceContext4` always succeed?

      Ma, Yingying

      Done

      Line 942, Patchset 9: if (!d3d11_device || FAILED(d3d11_device.As(&device5))) {
      Rafael Cintron . resolved

      Can we check for D3D11Device5 availability when the decoder is created instead of attempting to gracefully handle failures during the middle of operation?

      Ma, Yingying

      You probably mean encoder rather than decoder? If D3D11Device5 is not supported, or if the creation of `interop_fence_`(which is optional) fails, we can fall back to the current solution and wait on the CPU side. I prefer to regard this as a tolerable error. However, if `interop_fence_` has already been created but an error occurs in `GenerateResourceOnSynTokenReleased`, this should be treated as a fatal error(updated in the latest patchset),WDYT?

      Rafael Cintron

      Yes, I meant encoder.

      Are there machines where we can't use D3D12 encoder for reasons besides lack of fences? If so, I think we can simplify further and use that fallback when there is no fence support.

      Once your change is enabled, few people are going to test the "current solution" as the code evolves and there are no tests to ensure it stays working. The fewer fallbacks we have to maintain, the better.

      Ma, Yingying

      I've added UMA to track interop fence creation failures and simplified the fallback path logic in the latest patchset. I prefer to keep the fallback path for now to avoid block D3D12 VEA tests. If UMA shows no fallback events, we’ll remove both the UMA metric and fallback path in a follow-up update.

      Rafael Cintron

      When you say "... to avoid block D3D12 VEA tests", does that imply there are no tests for the fence code path? When will those be added?

      Even if the UMA shows fallback events, I still inclined to have the fallback behavior be to use D3D11 encoder instead of D3D12 + EnqueueSetEvent. The fewer codepaths we need to keep in our minds when working with the code, the better. Right now, everything is std::optional and it's difficult to reason about when things are truly optional vs. a place to create objects when they don't exist.

      Which of these two methods is better for performance? How does that change if the browser is D3D12 but we need to fallback to D3D11 encoding?

      Ma, Yingying

      Updated! The test in question is finch test for D3D12 VEA with shared image encoding enabled. I agree that fewer codepaths are better for readability and maintainability and will not introduce extra confusion around "optional".

      Line 955, Patchset 18: Microsoft::WRL::ComPtr<ID3D12Device> d3d12_device,

      Microsoft::WRL::ComPtr<ID3D11Device> d3d11_device) {
      Rafael Cintron . resolved

      Since TryCreateInteropFence does not take ownership of these objects, please pass them by raw/bald pointer to avoid unnecessary AddRef/Release.

      Ma, Yingying

      Done

      Line 983, Patchset 18: return std::make_unique<FenceInteropHelper>(d3d11_fence, d3d12_fence);
      Rafael Cintron . resolved
      ```suggestion
      return std::make_unique<FenceInteropHelper>(std::move(d3d11_fence), std::move(d3d12_fence));
      ```
      Ma, Yingying

      Done

      Line 994, Patchset 18: interop_fence_ = TryCreateInteropFence(
      Rafael Cintron . resolved

      Instead of trying to create the interop fence here in `OnCommandBufferHelperAvailable`, can we create it when `D3D12VideoEncodeAccelerator` is created?

      Ma, Yingying

      interop fence is only required for shared image encoding. And the creation of a shared interop fence depends on `command_buffer_helper`, which is not available when D3D12VideoEncodeAccelerator.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Eugene Zemtsov
      • Rafael Cintron
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
        Gerrit-Change-Number: 7201201
        Gerrit-PatchSet: 19
        Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
        Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
        Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
        Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
        Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
        Gerrit-Attention: Rafael Cintron <rafael....@microsoft.com>
        Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
        Gerrit-Comment-Date: Thu, 18 Dec 2025 09:55:23 +0000
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Rafael Cintron (Gerrit)

        unread,
        Jan 6, 2026, 10:15:28 PM (11 days ago) Jan 6
        to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
        Attention needed from Eugene Zemtsov and Ma, Yingying

        Rafael Cintron added 4 comments

        File media/gpu/windows/d3d12_video_encode_accelerator.cc
        Line 248, Patchset 19 (Latest): CHECK(SUCCEEDED(d3d11_context.As(&context4)));
        Rafael Cintron . unresolved

        Please assign the return value of `As` to a local HRESULT and use "CHECK_EQ(hr, S_OK)" to ensure it is exactly the value we're expecting.

        Line 786, Patchset 19 (Latest): interop_fence_->GetD3D11FenceAndIncrementValue(),
        Rafael Cintron . unresolved

        Today, it is true that Chromium's compositor runs with D3D11. But in the (hopefully near term) future, it will run with D3D12. We have a dev on the Edge team [working on this](https://chromium-review.googlesource.com/c/chromium/src/+/6733314). Depending on driver maturity and bugs, it may be the case that, on certain machines, the compositor runs on D3D12 but media runs on D3D11.

        The above makes this "GetD3D11FenceAndIncrementValue" name confusing. The name "interop fence" is also confusing because it doesn't tell me which work queue owns the signaling of the fence. When I was first reviewing the change, I thought the media engine was the owner of the signaling and that Chromium would be the receiver.

        Aren't we going to need a fence that the reader of the texture signals when it is finished reading and writing is permitted? What is that one going to be called?

        At a minimum, I suggest we rename interop_fence_ to compositor_fence_.

        What can we do to make GetD3D11FenceAndIncrementValue more meaningful? I guess we can add GetD3D12FenceAndIncrementValue in the future? 11on12 may save us in the short term but I'd like to remove that dependency in the future.

        Line 982, Patchset 19 (Latest): if (!interop_fence_) {
        Rafael Cintron . unresolved

        If we can't create `interop_fence_` without the command buffer helper, will `interop_fence_` ever be non-null when `OnCommandBufferHelperAvailable` is called? Is the class expected to work without a command buffer helper? If the answer is "No" to both of these, then we should ensure (with CHECK) that `interop_fence_` is nullptr before we do the assignment.

        If `OnCommandBufferHelperAvailable` can be called multiple times, could the helper point to a completely different shared image system such that we want always want to make a new interop fence?

        Line 989, Patchset 19 (Latest): return NotifyError(
        {EncoderStatus::Codes::kSystemAPICallError,
        "Failed to create interop fence for shared image encoding"});
        Rafael Cintron . unresolved

        If interop fence creation failure always returns an error here, is `D3D12VideoEncodeAccelerator` expected to continue operating without it? If not, we should remove other `interop_fence_` checks in the code and assume it is always valid.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Eugene Zemtsov
        • Ma, Yingying
        Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
          Gerrit-Change-Number: 7201201
          Gerrit-PatchSet: 19
          Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
          Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
          Gerrit-Comment-Date: Wed, 07 Jan 2026 03:15:19 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Ma, Yingying (Gerrit)

          unread,
          Jan 9, 2026, 3:04:44 AM (9 days ago) Jan 9
          to Chromium Metrics Reviews, Chromium LUCI CQ, Rafael Cintron, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
          Attention needed from Eugene Zemtsov and Rafael Cintron

          Ma, Yingying added 6 comments

          File media/gpu/windows/d3d12_video_encode_accelerator.cc
          Line 248, Patchset 19: CHECK(SUCCEEDED(d3d11_context.As(&context4)));
          Rafael Cintron . resolved

          Please assign the return value of `As` to a local HRESULT and use "CHECK_EQ(hr, S_OK)" to ensure it is exactly the value we're expecting.

          Ma, Yingying

          Done

          Line 248, Patchset 19: CHECK(SUCCEEDED(d3d11_context.As(&context4)));
          Rafael Cintron . resolved

          Please assign the return value of `As` to a local HRESULT and use "CHECK_EQ(hr, S_OK)" to ensure it is exactly the value we're expecting.

          Ma, Yingying

          Done

          Line 786, Patchset 19: interop_fence_->GetD3D11FenceAndIncrementValue(),
          Rafael Cintron . unresolved

          Today, it is true that Chromium's compositor runs with D3D11. But in the (hopefully near term) future, it will run with D3D12. We have a dev on the Edge team [working on this](https://chromium-review.googlesource.com/c/chromium/src/+/6733314). Depending on driver maturity and bugs, it may be the case that, on certain machines, the compositor runs on D3D12 but media runs on D3D11.

          The above makes this "GetD3D11FenceAndIncrementValue" name confusing. The name "interop fence" is also confusing because it doesn't tell me which work queue owns the signaling of the fence. When I was first reviewing the change, I thought the media engine was the owner of the signaling and that Chromium would be the receiver.

          Aren't we going to need a fence that the reader of the texture signals when it is finished reading and writing is permitted? What is that one going to be called?

          At a minimum, I suggest we rename interop_fence_ to compositor_fence_.

          What can we do to make GetD3D11FenceAndIncrementValue more meaningful? I guess we can add GetD3D12FenceAndIncrementValue in the future? 11on12 may save us in the short term but I'd like to remove that dependency in the future.

          Ma, Yingying

          Done, Updated to `d3d11_on_d3d12_fence_`.

          Line 982, Patchset 19: if (!interop_fence_) {
          Rafael Cintron . resolved

          If we can't create `interop_fence_` without the command buffer helper, will `interop_fence_` ever be non-null when `OnCommandBufferHelperAvailable` is called? Is the class expected to work without a command buffer helper? If the answer is "No" to both of these, then we should ensure (with CHECK) that `interop_fence_` is nullptr before we do the assignment.

          If `OnCommandBufferHelperAvailable` can be called multiple times, could the helper point to a completely different shared image system such that we want always want to make a new interop fence?

          Ma, Yingying

          Done

          Line 982, Patchset 19: if (!interop_fence_) {
          Rafael Cintron . resolved

          If we can't create `interop_fence_` without the command buffer helper, will `interop_fence_` ever be non-null when `OnCommandBufferHelperAvailable` is called? Is the class expected to work without a command buffer helper? If the answer is "No" to both of these, then we should ensure (with CHECK) that `interop_fence_` is nullptr before we do the assignment.

          If `OnCommandBufferHelperAvailable` can be called multiple times, could the helper point to a completely different shared image system such that we want always want to make a new interop fence?

          Ma, Yingying

          Done, update to keep align with behavior of `command_buffer_helper_`.

          Line 989, Patchset 19: return NotifyError(

          {EncoderStatus::Codes::kSystemAPICallError,
          "Failed to create interop fence for shared image encoding"});
          Rafael Cintron . resolved

          If interop fence creation failure always returns an error here, is `D3D12VideoEncodeAccelerator` expected to continue operating without it? If not, we should remove other `interop_fence_` checks in the code and assume it is always valid.

          Ma, Yingying

          No, `D3D12VideoEncodeAccelerator` is expected to throw an error.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Eugene Zemtsov
          • Rafael Cintron
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
          Gerrit-Change-Number: 7201201
          Gerrit-PatchSet: 20
          Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
          Gerrit-Attention: Rafael Cintron <rafael....@microsoft.com>
          Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Comment-Date: Fri, 09 Jan 2026 08:04:35 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Rafael Cintron <rafael....@microsoft.com>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Rafael Cintron (Gerrit)

          unread,
          Jan 12, 2026, 9:21:54 PM (5 days ago) Jan 12
          to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
          Attention needed from Eugene Zemtsov and Ma, Yingying

          Rafael Cintron added 3 comments

          File media/gpu/windows/d3d12_video_encode_accelerator.cc
          Line 786, Patchset 19: interop_fence_->GetD3D11FenceAndIncrementValue(),
          Rafael Cintron . unresolved

          Today, it is true that Chromium's compositor runs with D3D11. But in the (hopefully near term) future, it will run with D3D12. We have a dev on the Edge team [working on this](https://chromium-review.googlesource.com/c/chromium/src/+/6733314). Depending on driver maturity and bugs, it may be the case that, on certain machines, the compositor runs on D3D12 but media runs on D3D11.

          The above makes this "GetD3D11FenceAndIncrementValue" name confusing. The name "interop fence" is also confusing because it doesn't tell me which work queue owns the signaling of the fence. When I was first reviewing the change, I thought the media engine was the owner of the signaling and that Chromium would be the receiver.

          Aren't we going to need a fence that the reader of the texture signals when it is finished reading and writing is permitted? What is that one going to be called?

          At a minimum, I suggest we rename interop_fence_ to compositor_fence_.

          What can we do to make GetD3D11FenceAndIncrementValue more meaningful? I guess we can add GetD3D12FenceAndIncrementValue in the future? 11on12 may save us in the short term but I'd like to remove that dependency in the future.

          Ma, Yingying

          Done, Updated to `d3d11_on_d3d12_fence_`.

          Rafael Cintron

          The latest patchset is not quite what I had in mind.

          I think it is more important to name the variable with the Chromium component that signals the fence to make it more clear that media must wait on the fence. Call it "compositor_fence_", or something similar. CompositorFence will be an 11 fence for now but might be 12 fence in the future so the name of the fence class can remain "InteropFence".

          Line 969, Patchset 20 (Latest): if (FAILED(d3d11_device->QueryInterface(IID_PPV_ARGS(&device5)))) {
          LOG(ERROR) << "ID3D11Device5 is not supported.";
          return nullptr;
          }
          Rafael Cintron . unresolved

          Why can't we use RETURN_NULLPTR_ON_HR_FAILURE here?

          Line 989, Patchset 19: return NotifyError(
          {EncoderStatus::Codes::kSystemAPICallError,
          "Failed to create interop fence for shared image encoding"});
          Rafael Cintron . unresolved

          If interop fence creation failure always returns an error here, is `D3D12VideoEncodeAccelerator` expected to continue operating without it? If not, we should remove other `interop_fence_` checks in the code and assume it is always valid.

          Ma, Yingying

          No, `D3D12VideoEncodeAccelerator` is expected to throw an error.

          Rafael Cintron

          Since the answer is "No", can we remove the null checks for the fence in all of the code locations except for `OnCommandBufferHelperAvailable`?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Eugene Zemtsov
          • Ma, Yingying
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
          Gerrit-Change-Number: 7201201
          Gerrit-PatchSet: 20
          Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
          Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
          Gerrit-Comment-Date: Tue, 13 Jan 2026 02:21:44 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Rafael Cintron <rafael....@microsoft.com>
          Comment-In-Reply-To: Ma, Yingying <yingy...@intel.com>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Qiu, Jianlin (Gerrit)

          unread,
          Jan 12, 2026, 9:31:50 PM (5 days ago) Jan 12
          to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Rafael Cintron, Eugene Zemtsov, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
          Attention needed from Eugene Zemtsov and Ma, Yingying

          Qiu, Jianlin added 1 comment

          File media/gpu/windows/d3d12_video_encode_accelerator.cc
          Line 786, Patchset 19: interop_fence_->GetD3D11FenceAndIncrementValue(),
          Rafael Cintron . unresolved

          Today, it is true that Chromium's compositor runs with D3D11. But in the (hopefully near term) future, it will run with D3D12. We have a dev on the Edge team [working on this](https://chromium-review.googlesource.com/c/chromium/src/+/6733314). Depending on driver maturity and bugs, it may be the case that, on certain machines, the compositor runs on D3D12 but media runs on D3D11.

          The above makes this "GetD3D11FenceAndIncrementValue" name confusing. The name "interop fence" is also confusing because it doesn't tell me which work queue owns the signaling of the fence. When I was first reviewing the change, I thought the media engine was the owner of the signaling and that Chromium would be the receiver.

          Aren't we going to need a fence that the reader of the texture signals when it is finished reading and writing is permitted? What is that one going to be called?

          At a minimum, I suggest we rename interop_fence_ to compositor_fence_.

          What can we do to make GetD3D11FenceAndIncrementValue more meaningful? I guess we can add GetD3D12FenceAndIncrementValue in the future? 11on12 may save us in the short term but I'd like to remove that dependency in the future.

          Ma, Yingying

          Done, Updated to `d3d11_on_d3d12_fence_`.

          Rafael Cintron

          The latest patchset is not quite what I had in mind.

          I think it is more important to name the variable with the Chromium component that signals the fence to make it more clear that media must wait on the fence. Call it "compositor_fence_", or something similar. CompositorFence will be an 11 fence for now but might be 12 fence in the future so the name of the fence class can remain "InteropFence".

          Qiu, Jianlin

          Hi Rafael, I had a discussion with Yingying before on... we're in HW encoder, and incoming shared image VideoFrame is not neccessarily coming from the compositor. It might be from VideoCapture module, or video decoder module, or a MediaStreamTrack, which might never be involved in the composition/rendering pipeline.

          Gerrit-Comment-Date: Tue, 13 Jan 2026 02:31:41 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Ma, Yingying (Gerrit)

          unread,
          Jan 14, 2026, 5:15:22 AM (4 days ago) Jan 14
          to Chromium Metrics Reviews, Chromium LUCI CQ, Rafael Cintron, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
          Attention needed from Eugene Zemtsov and Rafael Cintron

          Ma, Yingying added 2 comments

          File media/gpu/windows/d3d12_video_encode_accelerator.cc
          Line 969, Patchset 20: if (FAILED(d3d11_device->QueryInterface(IID_PPV_ARGS(&device5)))) {

          LOG(ERROR) << "ID3D11Device5 is not supported.";
          return nullptr;
          }
          Rafael Cintron . resolved

          Why can't we use RETURN_NULLPTR_ON_HR_FAILURE here?

          Ma, Yingying

          Done

          Line 989, Patchset 19: return NotifyError(
          {EncoderStatus::Codes::kSystemAPICallError,
          "Failed to create interop fence for shared image encoding"});
          Rafael Cintron . resolved

          If interop fence creation failure always returns an error here, is `D3D12VideoEncodeAccelerator` expected to continue operating without it? If not, we should remove other `interop_fence_` checks in the code and assume it is always valid.

          Ma, Yingying

          No, `D3D12VideoEncodeAccelerator` is expected to throw an error.

          Rafael Cintron

          Since the answer is "No", can we remove the null checks for the fence in all of the code locations except for `OnCommandBufferHelperAvailable`?

          Ma, Yingying

          Done

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Eugene Zemtsov
          • Rafael Cintron
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
          Gerrit-Change-Number: 7201201
          Gerrit-PatchSet: 22
          Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
          Gerrit-Attention: Rafael Cintron <rafael....@microsoft.com>
          Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Comment-Date: Wed, 14 Jan 2026 10:15:12 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Rafael Cintron (Gerrit)

          unread,
          Jan 14, 2026, 4:02:33 PM (4 days ago) Jan 14
          to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
          Attention needed from Eugene Zemtsov and Ma, Yingying

          Rafael Cintron added 1 comment

          File media/gpu/windows/d3d12_video_encode_accelerator.cc
          Line 786, Patchset 19: interop_fence_->GetD3D11FenceAndIncrementValue(),
          Rafael Cintron . unresolved

          Today, it is true that Chromium's compositor runs with D3D11. But in the (hopefully near term) future, it will run with D3D12. We have a dev on the Edge team [working on this](https://chromium-review.googlesource.com/c/chromium/src/+/6733314). Depending on driver maturity and bugs, it may be the case that, on certain machines, the compositor runs on D3D12 but media runs on D3D11.

          The above makes this "GetD3D11FenceAndIncrementValue" name confusing. The name "interop fence" is also confusing because it doesn't tell me which work queue owns the signaling of the fence. When I was first reviewing the change, I thought the media engine was the owner of the signaling and that Chromium would be the receiver.

          Aren't we going to need a fence that the reader of the texture signals when it is finished reading and writing is permitted? What is that one going to be called?

          At a minimum, I suggest we rename interop_fence_ to compositor_fence_.

          What can we do to make GetD3D11FenceAndIncrementValue more meaningful? I guess we can add GetD3D12FenceAndIncrementValue in the future? 11on12 may save us in the short term but I'd like to remove that dependency in the future.

          Ma, Yingying

          Done, Updated to `d3d11_on_d3d12_fence_`.

          Rafael Cintron

          The latest patchset is not quite what I had in mind.

          I think it is more important to name the variable with the Chromium component that signals the fence to make it more clear that media must wait on the fence. Call it "compositor_fence_", or something similar. CompositorFence will be an 11 fence for now but might be 12 fence in the future so the name of the fence class can remain "InteropFence".

          Qiu, Jianlin

          Hi Rafael, I had a discussion with Yingying before on... we're in HW encoder, and incoming shared image VideoFrame is not neccessarily coming from the compositor. It might be from VideoCapture module, or video decoder module, or a MediaStreamTrack, which might never be involved in the composition/rendering pipeline.

          Rafael Cintron

          @jianl...@intel.com, good point about the incoming texture originating from non-compositor sources.

          Even so, I think the current "d3d11_on_d3d12" name is confusing because the input component is not always running 11on12. It may be running D3D11 runtime with D3D11 drivers, or D3D12 with D3D12 drivers.

          Proposal: Rename the variable to "input_texture_fence", "source_texture_fence" or something similar. This way, it is clear where the fence originates and, therefore, which system is responsible for signaling it.

          [In the future the originating system should be responsible for signaling the fence instead of having media do it on its behalf. Today, signaling for D3D11 is easy because there is always an immediate context but in the future, the originating command queue may not be straightforward for media to obtain. We can do this in a future CL]

          WDYT?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Eugene Zemtsov
          • Ma, Yingying
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
          Gerrit-Change-Number: 7201201
          Gerrit-PatchSet: 22
          Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
          Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
          Gerrit-Comment-Date: Wed, 14 Jan 2026 21:02:23 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Rafael Cintron <rafael....@microsoft.com>
          Comment-In-Reply-To: Qiu, Jianlin <jianl...@intel.com>
          Comment-In-Reply-To: Ma, Yingying <yingy...@intel.com>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Ma, Yingying (Gerrit)

          unread,
          Jan 15, 2026, 4:12:55 AM (3 days ago) Jan 15
          to Chromium Metrics Reviews, Chromium LUCI CQ, Rafael Cintron, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
          Attention needed from Qiu, Jianlin and Rafael Cintron

          Ma, Yingying voted and added 1 comment

          Votes added by Ma, Yingying

          Commit-Queue+1

          1 comment

          File media/gpu/windows/d3d12_video_encode_accelerator.cc
          Line 786, Patchset 19: interop_fence_->GetD3D11FenceAndIncrementValue(),
          Rafael Cintron . unresolved

          Today, it is true that Chromium's compositor runs with D3D11. But in the (hopefully near term) future, it will run with D3D12. We have a dev on the Edge team [working on this](https://chromium-review.googlesource.com/c/chromium/src/+/6733314). Depending on driver maturity and bugs, it may be the case that, on certain machines, the compositor runs on D3D12 but media runs on D3D11.

          The above makes this "GetD3D11FenceAndIncrementValue" name confusing. The name "interop fence" is also confusing because it doesn't tell me which work queue owns the signaling of the fence. When I was first reviewing the change, I thought the media engine was the owner of the signaling and that Chromium would be the receiver.

          Aren't we going to need a fence that the reader of the texture signals when it is finished reading and writing is permitted? What is that one going to be called?

          At a minimum, I suggest we rename interop_fence_ to compositor_fence_.

          What can we do to make GetD3D11FenceAndIncrementValue more meaningful? I guess we can add GetD3D12FenceAndIncrementValue in the future? 11on12 may save us in the short term but I'd like to remove that dependency in the future.

          Ma, Yingying

          Done, Updated to `d3d11_on_d3d12_fence_`.

          Rafael Cintron

          The latest patchset is not quite what I had in mind.

          I think it is more important to name the variable with the Chromium component that signals the fence to make it more clear that media must wait on the fence. Call it "compositor_fence_", or something similar. CompositorFence will be an 11 fence for now but might be 12 fence in the future so the name of the fence class can remain "InteropFence".

          Qiu, Jianlin

          Hi Rafael, I had a discussion with Yingying before on... we're in HW encoder, and incoming shared image VideoFrame is not neccessarily coming from the compositor. It might be from VideoCapture module, or video decoder module, or a MediaStreamTrack, which might never be involved in the composition/rendering pipeline.

          Rafael Cintron

          @jianl...@intel.com, good point about the incoming texture originating from non-compositor sources.

          Even so, I think the current "d3d11_on_d3d12" name is confusing because the input component is not always running 11on12. It may be running D3D11 runtime with D3D11 drivers, or D3D12 with D3D12 drivers.

          Proposal: Rename the variable to "input_texture_fence", "source_texture_fence" or something similar. This way, it is clear where the fence originates and, therefore, which system is responsible for signaling it.

          [In the future the originating system should be responsible for signaling the fence instead of having media do it on its behalf. Today, signaling for D3D11 is easy because there is always an immediate context but in the future, the originating command queue may not be straightforward for media to obtain. We can do this in a future CL]

          WDYT?

          Ma, Yingying

          Updated to `source_texture_fence_`.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Qiu, Jianlin
          • Rafael Cintron
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
          Gerrit-Change-Number: 7201201
          Gerrit-PatchSet: 23
          Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
          Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
          Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
          Gerrit-Attention: Rafael Cintron <rafael....@microsoft.com>
          Gerrit-Attention: Qiu, Jianlin <jianl...@intel.com>
          Gerrit-Comment-Date: Thu, 15 Jan 2026 09:12:42 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: Yes
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Qiu, Jianlin (Gerrit)

          unread,
          Jan 15, 2026, 6:55:55 AM (3 days ago) Jan 15
          to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Rafael Cintron, Eugene Zemtsov, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
          Attention needed from Ma, Yingying and Rafael Cintron

          Qiu, Jianlin added 1 comment

          File media/gpu/windows/d3d12_video_encode_accelerator.cc
          Line 786, Patchset 19: interop_fence_->GetD3D11FenceAndIncrementValue(),
          Rafael Cintron . resolved

          Today, it is true that Chromium's compositor runs with D3D11. But in the (hopefully near term) future, it will run with D3D12. We have a dev on the Edge team [working on this](https://chromium-review.googlesource.com/c/chromium/src/+/6733314). Depending on driver maturity and bugs, it may be the case that, on certain machines, the compositor runs on D3D12 but media runs on D3D11.

          The above makes this "GetD3D11FenceAndIncrementValue" name confusing. The name "interop fence" is also confusing because it doesn't tell me which work queue owns the signaling of the fence. When I was first reviewing the change, I thought the media engine was the owner of the signaling and that Chromium would be the receiver.

          Aren't we going to need a fence that the reader of the texture signals when it is finished reading and writing is permitted? What is that one going to be called?

          At a minimum, I suggest we rename interop_fence_ to compositor_fence_.

          What can we do to make GetD3D11FenceAndIncrementValue more meaningful? I guess we can add GetD3D12FenceAndIncrementValue in the future? 11on12 may save us in the short term but I'd like to remove that dependency in the future.

          Ma, Yingying

          Done, Updated to `d3d11_on_d3d12_fence_`.

          Rafael Cintron

          The latest patchset is not quite what I had in mind.

          I think it is more important to name the variable with the Chromium component that signals the fence to make it more clear that media must wait on the fence. Call it "compositor_fence_", or something similar. CompositorFence will be an 11 fence for now but might be 12 fence in the future so the name of the fence class can remain "InteropFence".

          Qiu, Jianlin

          Hi Rafael, I had a discussion with Yingying before on... we're in HW encoder, and incoming shared image VideoFrame is not neccessarily coming from the compositor. It might be from VideoCapture module, or video decoder module, or a MediaStreamTrack, which might never be involved in the composition/rendering pipeline.

          Rafael Cintron

          @jianl...@intel.com, good point about the incoming texture originating from non-compositor sources.

          Even so, I think the current "d3d11_on_d3d12" name is confusing because the input component is not always running 11on12. It may be running D3D11 runtime with D3D11 drivers, or D3D12 with D3D12 drivers.

          Proposal: Rename the variable to "input_texture_fence", "source_texture_fence" or something similar. This way, it is clear where the fence originates and, therefore, which system is responsible for signaling it.

          [In the future the originating system should be responsible for signaling the fence instead of having media do it on its behalf. Today, signaling for D3D11 is easy because there is always an immediate context but in the future, the originating command queue may not be straightforward for media to obtain. We can do this in a future CL]

          WDYT?

          Ma, Yingying

          Updated to `source_texture_fence_`.

          Qiu, Jianlin

          >In the future the originating system should be responsible for signaling the fence instead of having media do it on its behalf.

          Acked.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Ma, Yingying
          • Rafael Cintron
          Submit Requirements:
            • requirement satisfiedCode-Coverage
            • requirement is not satisfiedCode-Owners
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: chromium/src
            Gerrit-Branch: main
            Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
            Gerrit-Change-Number: 7201201
            Gerrit-PatchSet: 23
            Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
            Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
            Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
            Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
            Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
            Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
            Gerrit-Attention: Rafael Cintron <rafael....@microsoft.com>
            Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
            Gerrit-Comment-Date: Thu, 15 Jan 2026 11:55:44 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Rafael Cintron <rafael....@microsoft.com>
            Comment-In-Reply-To: Ma, Yingying <yingy...@intel.com>
            Comment-In-Reply-To: Qiu, Jianlin <jianl...@intel.com>
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Rafael Cintron (Gerrit)

            unread,
            Jan 15, 2026, 4:20:56 PM (3 days ago) Jan 15
            to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
            Attention needed from Ma, Yingying

            Rafael Cintron voted Code-Review+1

            Code-Review+1
            Open in Gerrit

            Related details

            Attention is currently required from:
            • Ma, Yingying
            Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement satisfiedCode-Review
              • requirement is not satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: chromium/src
              Gerrit-Branch: main
              Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
              Gerrit-Change-Number: 7201201
              Gerrit-PatchSet: 23
              Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
              Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
              Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
              Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
              Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
              Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
              Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
              Gerrit-Comment-Date: Thu, 15 Jan 2026 21:20:46 +0000
              Gerrit-HasComments: No
              Gerrit-Has-Labels: Yes
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Rafael Cintron (Gerrit)

              unread,
              Jan 15, 2026, 4:28:40 PM (3 days ago) Jan 15
              to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
              Attention needed from Ma, Yingying

              Rafael Cintron voted Code-Review+0

              Code-Review+0
              Open in Gerrit

              Related details

              Attention is currently required from:
              • Ma, Yingying
              Submit Requirements:
                • requirement satisfiedCode-Coverage
                • requirement is not satisfiedCode-Owners
                • requirement is not satisfiedCode-Review
                • requirement is not satisfiedReview-Enforcement
                Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                Gerrit-MessageType: comment
                Gerrit-Project: chromium/src
                Gerrit-Branch: main
                Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
                Gerrit-Change-Number: 7201201
                Gerrit-PatchSet: 23
                Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
                Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
                Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
                Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
                Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
                Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
                Gerrit-Comment-Date: Thu, 15 Jan 2026 21:28:31 +0000
                Gerrit-HasComments: No
                Gerrit-Has-Labels: Yes
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Rafael Cintron (Gerrit)

                unread,
                Jan 15, 2026, 4:29:26 PM (3 days ago) Jan 15
                to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
                Attention needed from Ma, Yingying

                Rafael Cintron voted Code-Review+1

                Code-Review+1
                Open in Gerrit

                Related details

                Attention is currently required from:
                • Ma, Yingying
                Submit Requirements:
                  • requirement satisfiedCode-Coverage
                  • requirement is not satisfiedCode-Owners
                  • requirement satisfiedCode-Review
                  • requirement is not satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: chromium/src
                  Gerrit-Branch: main
                  Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
                  Gerrit-Change-Number: 7201201
                  Gerrit-PatchSet: 23
                  Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
                  Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
                  Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
                  Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
                  Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                  Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
                  Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
                  Gerrit-Comment-Date: Thu, 15 Jan 2026 21:29:17 +0000
                  Gerrit-HasComments: No
                  Gerrit-Has-Labels: Yes
                  satisfied_requirement
                  unsatisfied_requirement
                  open
                  diffy

                  Rafael Cintron (Gerrit)

                  unread,
                  Jan 15, 2026, 4:44:34 PM (3 days ago) Jan 15
                  to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
                  Attention needed from Ma, Yingying

                  Rafael Cintron voted Code-Review+0

                  Code-Review+0
                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Ma, Yingying
                  Submit Requirements:
                    • requirement satisfiedCode-Coverage
                    • requirement is not satisfiedCode-Owners
                    • requirement is not satisfiedCode-Review
                    • requirement is not satisfiedReview-Enforcement
                    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                    Gerrit-MessageType: comment
                    Gerrit-Project: chromium/src
                    Gerrit-Branch: main
                    Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
                    Gerrit-Change-Number: 7201201
                    Gerrit-PatchSet: 23
                    Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
                    Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
                    Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
                    Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
                    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                    Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
                    Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
                    Gerrit-Comment-Date: Thu, 15 Jan 2026 21:44:24 +0000
                    Gerrit-HasComments: No
                    Gerrit-Has-Labels: Yes
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Rafael Cintron (Gerrit)

                    unread,
                    Jan 15, 2026, 4:49:50 PM (3 days ago) Jan 15
                    to Ma, Yingying, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
                    Attention needed from Ma, Yingying

                    Rafael Cintron voted Code-Review+1

                    Code-Review+1
                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ma, Yingying
                    Submit Requirements:
                      • requirement satisfiedCode-Coverage
                      • requirement is not satisfiedCode-Owners
                      • requirement satisfiedCode-Review
                      • requirement satisfiedReview-Enforcement
                      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                      Gerrit-MessageType: comment
                      Gerrit-Project: chromium/src
                      Gerrit-Branch: main
                      Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
                      Gerrit-Change-Number: 7201201
                      Gerrit-PatchSet: 23
                      Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
                      Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
                      Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
                      Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
                      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                      Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
                      Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
                      Gerrit-Comment-Date: Thu, 15 Jan 2026 21:49:41 +0000
                      Gerrit-HasComments: No
                      Gerrit-Has-Labels: Yes
                      satisfied_requirement
                      unsatisfied_requirement
                      open
                      diffy

                      Ma, Yingying (Gerrit)

                      unread,
                      Jan 16, 2026, 3:00:21 AM (2 days ago) Jan 16
                      to Rafael Cintron, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
                      Attention needed from Eugene Zemtsov

                      Ma, Yingying added 1 comment

                      Patchset-level comments
                      File-level comment, Patchset 23 (Latest):
                      Ma, Yingying . resolved

                      hi eugene, PTAL~

                      Open in Gerrit

                      Related details

                      Attention is currently required from:
                      • Eugene Zemtsov
                      Submit Requirements:
                      • requirement satisfiedCode-Coverage
                      • requirement is not satisfiedCode-Owners
                      • requirement satisfiedCode-Review
                      • requirement satisfiedReview-Enforcement
                      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                      Gerrit-MessageType: comment
                      Gerrit-Project: chromium/src
                      Gerrit-Branch: main
                      Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
                      Gerrit-Change-Number: 7201201
                      Gerrit-PatchSet: 23
                      Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
                      Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
                      Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
                      Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
                      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                      Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
                      Gerrit-Attention: Eugene Zemtsov <eug...@chromium.org>
                      Gerrit-Comment-Date: Fri, 16 Jan 2026 08:00:03 +0000
                      Gerrit-HasComments: Yes
                      Gerrit-Has-Labels: No
                      satisfied_requirement
                      unsatisfied_requirement
                      open
                      diffy

                      Eugene Zemtsov (Gerrit)

                      unread,
                      Jan 16, 2026, 7:19:57 PM (2 days ago) Jan 16
                      to Ma, Yingying, Rafael Cintron, Chromium Metrics Reviews, Chromium LUCI CQ, Eugene Zemtsov, Qiu, Jianlin, AyeAye, chromium...@chromium.org, asvitkine...@chromium.org, chromeos-gfx-...@google.com, feature-me...@chromium.org, media-cro...@chromium.org, media-wi...@chromium.org
                      Attention needed from Ma, Yingying

                      Eugene Zemtsov added 4 comments

                      File media/gpu/windows/d3d12_helpers.h
                      Line 141, Patchset 23 (Latest):class MEDIA_GPU_EXPORT InteropFenceHelper {
                      Eugene Zemtsov . unresolved

                      I find "Helper" suffix somewhat awkward. Let's rename it to `D3D11To12Fence`

                      File media/gpu/windows/d3d12_video_encode_accelerator.cc
                      Line 873, Patchset 23 (Latest): // TODO: This CPU-side wait is a temporary solution. The plan is to replace
                      // this with proper GPU-side synchronization in CL7219003 (for example, making
                      // the D3D12 VP/encoder command queue wait on the shared fence).
                      Eugene Zemtsov . unresolved

                      please refer to the chromium issue here (crbug.com/XXX) rather than a CL number

                      Line 878, Patchset 23 (Latest): auto fence = base::MakeRefCounted<D3D12Fence>(
                      Eugene Zemtsov . unresolved

                      can we reuse this object instead of creating it for every frame?

                      Line 971, Patchset 23 (Latest): hr = d3d11_fence->CreateSharedHandle(nullptr, DXGI_SHARED_RESOURCE_READ,
                      Eugene Zemtsov . unresolved
                      Open in Gerrit

                      Related details

                      Attention is currently required from:
                      • Ma, Yingying
                      Submit Requirements:
                        • requirement satisfiedCode-Coverage
                        • requirement is not satisfiedCode-Owners
                        • requirement satisfiedCode-Review
                        • requirement is not satisfiedNo-Unresolved-Comments
                        • requirement satisfiedReview-Enforcement
                        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                        Gerrit-MessageType: comment
                        Gerrit-Project: chromium/src
                        Gerrit-Branch: main
                        Gerrit-Change-Id: Ifec37e3903bc9395681fa583222ae2fc9262c34c
                        Gerrit-Change-Number: 7201201
                        Gerrit-PatchSet: 23
                        Gerrit-Owner: Ma, Yingying <yingy...@intel.com>
                        Gerrit-Reviewer: Eugene Zemtsov <eug...@chromium.org>
                        Gerrit-Reviewer: Ma, Yingying <yingy...@intel.com>
                        Gerrit-Reviewer: Rafael Cintron <rafael....@microsoft.com>
                        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                        Gerrit-CC: Qiu, Jianlin <jianl...@intel.com>
                        Gerrit-Attention: Ma, Yingying <yingy...@intel.com>
                        Gerrit-Comment-Date: Sat, 17 Jan 2026 00:19:44 +0000
                        Gerrit-HasComments: Yes
                        Gerrit-Has-Labels: No
                        satisfied_requirement
                        unsatisfied_requirement
                        open
                        diffy
                        Reply all
                        Reply to author
                        Forward
                        0 new messages