d3d12: Add ARGB64_LE format support

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093>
This commit is contained in:
Seungha Yang 2024-06-24 20:07:37 +09:00
parent 8c538c8122
commit 245e15eab0
4 changed files with 7 additions and 2 deletions

View file

@ -48,7 +48,7 @@
/* both SRV and RTV are supported */
#define GST_D3D12_TIER_1_FORMATS \
"AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, " \
"ARGB64_LE, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, " \
"A444_16LE, A444_12LE, A444_10LE, A444, " \
"A422_16LE, A422_12LE, A422_10LE, A422, A420_16LE, A420_12LE, A420_10LE, A420, AV12, " \
"GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, " \

View file

@ -1539,6 +1539,7 @@ is_custom_format (GstVideoFormat format)
case GST_VIDEO_FORMAT_BGRA64_LE:
case GST_VIDEO_FORMAT_BGR10A2_LE:
case GST_VIDEO_FORMAT_RBGA:
case GST_VIDEO_FORMAT_ARGB64_LE:
return TRUE;
default:
break;
@ -1632,6 +1633,7 @@ gst_d3d12_converter_calculate_border_color (GstD3D12Converter * self)
break;
case GST_VIDEO_FORMAT_ARGB:
case GST_VIDEO_FORMAT_xRGB:
case GST_VIDEO_FORMAT_ARGB64_LE:
priv->clear_color[0][0] = a;
priv->clear_color[0][1] = converted[0];
priv->clear_color[0][2] = converted[1];

View file

@ -376,7 +376,8 @@ static const GstD3D12Format g_format_map[] = {
FormatBuilder::Planar (GST_VIDEO_FORMAT_BGRP),
FormatBuilder::YuvSemiPlanarWithAlpha (GST_VIDEO_FORMAT_AV12,
DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8_UNORM),
FormatBuilder::NotSupported(GST_VIDEO_FORMAT_ARGB64_LE),
FormatBuilder::RgbPacked (GST_VIDEO_FORMAT_ARGB64_LE,
DXGI_FORMAT_R16G16B16A16_UNORM),
FormatBuilder::NotSupported(GST_VIDEO_FORMAT_ARGB64_BE),
FormatBuilder::RgbPacked (GST_VIDEO_FORMAT_RGBA64_LE,
DXGI_FORMAT_R16G16B16A16_UNORM),

View file

@ -629,6 +629,7 @@ conv_ps_make_input (GstVideoFormat format, gboolean premul)
case GST_VIDEO_FORMAT_BGRx:
return "RGBx";
case GST_VIDEO_FORMAT_ARGB:
case GST_VIDEO_FORMAT_ARGB64_LE:
if (premul)
return "ARGBPremul";
return "ARGB";
@ -771,6 +772,7 @@ conv_ps_make_output (GstVideoFormat format, gboolean premul)
ret.push_back({PS_OUTPUT::PACKED, "RGBx"});
break;
case GST_VIDEO_FORMAT_ARGB:
case GST_VIDEO_FORMAT_ARGB64_LE:
if (premul)
ret.push_back({PS_OUTPUT::PACKED, "ARGBPremul"});
else