From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id CBD4E4C20D for ; Mon, 8 Dec 2025 23:03:10 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'JNZQooFfZ7ycaXr0TyFPqoIziFlNwUsjhzBpeMP0Q8s=', expected b'C5wWOpU51D2MMOQVovJQ6wWek6gARQwhHYWucvCiqdE=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1765234977; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=JNZQooFfZ7ycaXr0TyFPqoIziFlNwUsjhzBpeMP0Q8s=; b=bvC+Gk10LnXW6WYeeYQGfYtWBHNlWuNyEYb8wbQXWp5F2EBaqIQ01OvJzlmOEslYUstKU hJ5tWtjYebWO/Ojs6bS64R8dFefP6XhwoBpbf68vjXr5R4+MlYuqCJFXhoR/C6Y8U/eodaz 87WjuofnEpsJ2A9wYaah+8SMiWc1UXJFTMSkfngEQB852S0jygj0XifwSbzXJcDZ8EsM9OW gEJ5S6QC/6usfUQ7HU8a1wNpXqZn0gnbnBNfPGWQFi/qjSzMi4h38FIOwJQ4dtagaIsmChc eOgSCasUiMDfI4kgaOKxAQLp6toca6JK/d8Y7K/Em6kAMfPBWvn0NXmxMWMQ== Received: from [172.19.0.3] (unknown [172.19.0.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id EBB616906B2; Tue, 9 Dec 2025 01:02:57 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1765234961; b=NLJMVqvUH72VM3apuPAFLt9Y1oatZ46XMPve+/l30Z+4KwdKKyLjoprd0CbK12GDxbBI7 qoXEVDcg0zWAMDWMO8t7vpnohqKysmOz8oAQjYDIXhcJeWqC0tMft5+y/KDmWGRNB97xtuw RDxUcmhpEQEq6h4pu7uCKPiGsDj0XwU7bgy1jAv5OuhWXj1bc45nalizpPgq/R2phXDrkQw j/KpiiiFRk/9ScbPov+hsqjG67mpdUggt45//fii9C7GapFXwnpkxeEc9g/ESWtWE1pFkd2 4XJ61g9YJ39CC8Uwe0613flEqSRnX5xPfzDXI1RtYVLHcvvOidUeKF9ORJhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1765234961; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=6dFgs21RJnVq3VCfGWC+idRrc+Gm2VV7cn+EXFXJRqU=; b=tH0VcNycHGDBmYE5CIbjJ883w3CdrwVAtq8ez4S7fX9W6cr8Oa/7sJe2ujgAkQjr+nf3S J23e/pk7neCJ4eLZnFzjUl+KEkk1DVFBobUbmMkGIjYeJSpUQQa4W7G4tucOJ8mbD2Pu1jJ dpWbwjVzCPiK+HoycdMIAk3+G1yp2xzDK+Wi6cWiGwCIjSO4LtVMS8gS+SSscBsdV/uciCu 4pmpfiNNykdlh+YGFhe5hhlVi2MgWN05BbwpNEV74GdvU34XU7h1ZFWs1Nl2ECKIxqkBgDO jCEeWtRTqr8jGLRjKhIyNfPSSEZYhsaH4WxNMDLu+2yGZmEBl7H7l14kf9fA== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1765234951; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=C5wWOpU51D2MMOQVovJQ6wWek6gARQwhHYWucvCiqdE=; b=i+wNxJZLnHwIIkkXT6F3V/7MiamWsqD0XKf7fkePD6Bs7tK3Nb2nNJx+LIl/2Kb2o73eQ uHeP3uXr5njcX3jYAxoEkGvv5BuyqLtO2xQIiwNVE/qLuECEyYMXa8CR2HLgmv6j5WYbpa/ L620N0eyB3+o+Lm6EDK77pWcTmBUyZGvIXC+KlfmCByAwczlXVIwCIaAZY0Flrq5OiXKHmh BfuhlOK+SxMH9V2PobTDEzVmu2apQUawbrwZeUPp2vq7SdxnqE67q/k0wRCQJCcTVtBAPpr XBl/lknqVJZvWgaV5wEVafwvCiqar1HUzuKsIkJmbeP0fQwabSWZWrh96e+w== Received: from 55ca25703178 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id A7C8B69050C for ; Tue, 9 Dec 2025 01:02:31 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Mon, 08 Dec 2025 23:02:31 -0000 Message-ID: <176523495185.39.6174607044109196483@2cb04c0e5124> Message-ID-Hash: GKJF4GTYZK34XAFKUIHQ5ZUTS7M3SVHO X-Message-ID-Hash: GKJF4GTYZK34XAFKUIHQ5ZUTS7M3SVHO X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avcodec/d3d12va_encode: add detailed ValidationFlags error reporting for video encoders check feature support (PR #21137) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Steven Xiao via ffmpeg-devel Cc: Steven Xiao Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #21137 opened by Steven Xiao (younengxiao) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21137 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21137.patch Improves error diagnostics for D3D12 video encoders check feature support by adding detailed ValidationFlags reporting when driver validation fails. This made it easy for users to identify which specific feature was unsupported without manually decoding the flags. This decodes the ValidationFlags bitmask and logs each unsupported feature individually: "Driver does not support requested features. ValidationFlags: 0x4" " - Codec configuration not supported" The improvement covers all 9 D3D12 validation flags: - CODEC_NOT_SUPPORTED - INPUT_FORMAT_NOT_SUPPORTED - CODEC_CONFIGURATION_NOT_SUPPORTED - RATE_CONTROL_MODE_NOT_SUPPORTED - RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED - INTRA_REFRESH_MODE_NOT_SUPPORTED - SUBREGION_LAYOUT_MODE_NOT_SUPPORTED - RESOLUTION_NOT_SUPPORTED_IN_LIST - GOP_STRUCTURE_NOT_SUPPORTED >>From 07dcbf54db72a9c3b9b237247d4bd68d921359f6 Mon Sep 17 00:00:00 2001 From: stevxiao Date: Mon, 8 Dec 2025 17:56:43 -0500 Subject: [PATCH] avcodec/d3d12va_encode: add detailed ValidationFlags error reporting for video encoders check feature support Improves error diagnostics for D3D12 video encoders check feature support by adding detailed ValidationFlags reporting when driver validation fails. This made it easy for users to identify which specific feature was unsupported without manually decoding the flags. This decodes the ValidationFlags bitmask and logs each unsupported feature individually: "Driver does not support requested features. ValidationFlags: 0x4" " - Codec configuration not supported" --- libavcodec/d3d12va_encode_av1.c | 22 +++++++++++++++++++++- libavcodec/d3d12va_encode_h264.c | 22 +++++++++++++++++++++- libavcodec/d3d12va_encode_hevc.c | 22 +++++++++++++++++++++- 3 files changed, 63 insertions(+), 3 deletions(-) diff --git a/libavcodec/d3d12va_encode_av1.c b/libavcodec/d3d12va_encode_av1.c index 31d3df33bd..0e3652d988 100644 --- a/libavcodec/d3d12va_encode_av1.c +++ b/libavcodec/d3d12va_encode_av1.c @@ -583,8 +583,28 @@ static int d3d12va_encode_av1_init_sequence_params(AVCodecContext *avctx) } if (!(support.SupportFlags & D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK)) { - av_log(avctx, AV_LOG_ERROR, "Driver does not support some request D3D12VA AV1 features. %#x\n", + av_log(avctx, AV_LOG_ERROR, "Driver does not support requested features. ValidationFlags: %#x\n", support.ValidationFlags); + + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Codec not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Input format not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Codec configuration not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Rate control mode not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Rate control configuration not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Intra refresh mode not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Subregion layout mode not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST) + av_log(avctx, AV_LOG_ERROR, " - Resolution not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - GOP structure not supported\n"); + return AVERROR(EINVAL); } diff --git a/libavcodec/d3d12va_encode_h264.c b/libavcodec/d3d12va_encode_h264.c index bcf5a326e5..3231261137 100644 --- a/libavcodec/d3d12va_encode_h264.c +++ b/libavcodec/d3d12va_encode_h264.c @@ -201,8 +201,28 @@ static int d3d12va_encode_h264_init_sequence_params(AVCodecContext *avctx) } if (!(support.SupportFlags & D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK)) { - av_log(avctx, AV_LOG_ERROR, "Driver does not support some request features. %#x\n", + av_log(avctx, AV_LOG_ERROR, "Driver does not support requested features. ValidationFlags: %#x\n", support.ValidationFlags); + + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Codec not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Input format not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Codec configuration not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Rate control mode not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Rate control configuration not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Intra refresh mode not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Subregion layout mode not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST) + av_log(avctx, AV_LOG_ERROR, " - Resolution not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - GOP structure not supported\n"); + return AVERROR(EINVAL); } diff --git a/libavcodec/d3d12va_encode_hevc.c b/libavcodec/d3d12va_encode_hevc.c index e00ecbb4de..0db4677e24 100644 --- a/libavcodec/d3d12va_encode_hevc.c +++ b/libavcodec/d3d12va_encode_hevc.c @@ -273,8 +273,28 @@ static int d3d12va_encode_hevc_init_sequence_params(AVCodecContext *avctx) } if (!(support.SupportFlags & D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK)) { - av_log(avctx, AV_LOG_ERROR, "Driver does not support some request features. %#x\n", + av_log(avctx, AV_LOG_ERROR, "Driver does not support requested features. ValidationFlags: %#x\n", support.ValidationFlags); + + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Codec not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Input format not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Codec configuration not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Rate control mode not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Rate control configuration not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Intra refresh mode not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - Subregion layout mode not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST) + av_log(avctx, AV_LOG_ERROR, " - Resolution not supported\n"); + if (support.ValidationFlags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED) + av_log(avctx, AV_LOG_ERROR, " - GOP structure not supported\n"); + return AVERROR(EINVAL); } -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org