diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp index a8e7be3ff4ca..a10aad915c63 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -2759,7 +2759,7 @@ void gfxPlatform::InitWebRenderConfig() { "FEATURE_FAILURE_WR_NO_GFX_INFO"_ns); useHwVideoZeroCopy = false; } else { - if (status != nsIGfxInfo::FEATURE_STATUS_OK) { + if (status != nsIGfxInfo::FEATURE_ALLOW_ALWAYS) { FeatureState& feature = gfxConfig::GetFeature(Feature::HW_DECODED_VIDEO_ZERO_COPY); feature.DisableByDefault(FeatureStatus::Blocked, @@ -2796,7 +2796,7 @@ void gfxPlatform::InitWebRenderConfig() { "FEATURE_FAILURE_WR_NO_GFX_INFO"_ns); reuseDecoderDevice = false; } else { - if (status != nsIGfxInfo::FEATURE_STATUS_OK) { + if (status != nsIGfxInfo::FEATURE_ALLOW_ALWAYS) { FeatureState& feature = gfxConfig::GetFeature(Feature::REUSE_DECODER_DEVICE); feature.DisableByDefault(FeatureStatus::Blocked, diff --git a/widget/GfxInfoBase.cpp b/widget/GfxInfoBase.cpp index c88d5502bbf5..a8a119b5f4c4 100644 --- a/widget/GfxInfoBase.cpp +++ b/widget/GfxInfoBase.cpp @@ -1263,7 +1263,9 @@ bool GfxInfoBase::DoesDriverVendorMatch(const nsAString& aBlocklistVendor, bool GfxInfoBase::IsFeatureAllowlisted(int32_t aFeature) const { return aFeature == nsIGfxInfo::FEATURE_WEBRENDER || - aFeature == nsIGfxInfo::FEATURE_VIDEO_OVERLAY; + aFeature == nsIGfxInfo::FEATURE_VIDEO_OVERLAY || + aFeature == nsIGfxInfo::FEATURE_HW_DECODED_VIDEO_ZERO_COPY || + aFeature == nsIGfxInfo::FEATURE_REUSE_DECODER_DEVICE; } nsresult GfxInfoBase::GetFeatureStatusImpl( diff --git a/widget/windows/GfxInfo.cpp b/widget/windows/GfxInfo.cpp index 4de785dd9828..8813d99f5aec 100644 --- a/widget/windows/GfxInfo.cpp +++ b/widget/windows/GfxInfo.cpp @@ -1792,6 +1792,44 @@ const nsTArray& GfxInfo::GetGfxDriverInfo() { nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION, DRIVER_LESS_THAN, V(26, 20, 15000, 37), "FEATURE_FAILURE_BUG_1767212"); + //////////////////////////////////// + // FEATURE_HW_DECODED_VIDEO_ZERO_COPY - ALLOWLIST +#ifdef EARLY_BETA_OR_EARLIER + APPEND_TO_DRIVER_BLOCKLIST2(OperatingSystem::Windows, DeviceFamily::All, + nsIGfxInfo::FEATURE_HW_DECODED_VIDEO_ZERO_COPY, + nsIGfxInfo::FEATURE_ALLOW_ALWAYS, + DRIVER_COMPARISON_IGNORED, V(0, 0, 0, 0), + "FEATURE_ROLLOUT_ALL"); +#else + APPEND_TO_DRIVER_BLOCKLIST2( + OperatingSystem::Windows, DeviceFamily::IntelAll, + nsIGfxInfo::FEATURE_HW_DECODED_VIDEO_ZERO_COPY, + nsIGfxInfo::FEATURE_ALLOW_ALWAYS, DRIVER_COMPARISON_IGNORED, + V(0, 0, 0, 0), "FEATURE_ROLLOUT_ALL"); +#endif + + //////////////////////////////////// + // FEATURE_REUSE_DECODER_DEVICE - ALLOWLIST +#ifdef EARLY_BETA_OR_EARLIER + APPEND_TO_DRIVER_BLOCKLIST2(OperatingSystem::Windows, DeviceFamily::All, + nsIGfxInfo::FEATURE_REUSE_DECODER_DEVICE, + nsIGfxInfo::FEATURE_ALLOW_ALWAYS, + DRIVER_COMPARISON_IGNORED, V(0, 0, 0, 0), + "FEATURE_ROLLOUT_ALL"); +#else + APPEND_TO_DRIVER_BLOCKLIST2( + OperatingSystem::Windows, DeviceFamily::IntelAll, + nsIGfxInfo::FEATURE_REUSE_DECODER_DEVICE, + nsIGfxInfo::FEATURE_ALLOW_ALWAYS, DRIVER_COMPARISON_IGNORED, + V(0, 0, 0, 0), "FEATURE_ROLLOUT_INTEL"); + // ATI/AMD always requires reuse decoder device. + APPEND_TO_DRIVER_BLOCKLIST2(OperatingSystem::Windows, DeviceFamily::AtiAll, + nsIGfxInfo::FEATURE_REUSE_DECODER_DEVICE, + nsIGfxInfo::FEATURE_ALLOW_ALWAYS, + DRIVER_COMPARISON_IGNORED, V(0, 0, 0, 0), + "FEATURE_ROLLOUT_INTEL"); +#endif + //////////////////////////////////// // FEATURE_WEBRENDER // Block 8.56.1.15/16