From 245e15eab021676992e538e8f2bbafa660e5d029 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Mon, 24 Jun 2024 20:07:37 +0900 Subject: [PATCH] d3d12: Add ARGB64_LE format support Part-of: --- .../gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12-private.h | 2 +- .../gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12converter.cpp | 2 ++ .../gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12format.cpp | 3 ++- .../gst-libs/gst/d3dshader/gstd3dshadercache.cpp | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12-private.h b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12-private.h index 20ee236bf9..4337f683ab 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12-private.h +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12-private.h @@ -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, " \ diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12converter.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12converter.cpp index 9b28b4bf04..644d90fb9c 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12converter.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12converter.cpp @@ -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]; diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12format.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12format.cpp index 3dfca0c44e..b9b45a5296 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12format.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12format.cpp @@ -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), diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3dshader/gstd3dshadercache.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3dshader/gstd3dshadercache.cpp index d3b6e6c65e..73fffc48a4 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3dshader/gstd3dshadercache.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3dshader/gstd3dshadercache.cpp @@ -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