mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 04:22:27 +00:00
d3d12: Add v216, v210, r210, v308, IYU2, RGB, BGR format support
Reuse the compute shader implemented for d3d11 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092>
This commit is contained in:
parent
c1498851b3
commit
25514c8fc1
5 changed files with 43 additions and 9 deletions
|
@ -55,7 +55,8 @@
|
|||
|
||||
/* pre/post processing required formats */
|
||||
#define GST_D3D12_TIER_LAST_FORMATS \
|
||||
"UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15"
|
||||
"v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, " \
|
||||
"RGB15, BGR15"
|
||||
|
||||
#define GST_D3D12_COMMON_FORMATS \
|
||||
GST_D3D12_TIER_0_FORMATS ", " \
|
||||
|
|
|
@ -154,6 +154,8 @@ gst_d3d12_pack_new (GstD3D12Device * device,
|
|||
case GST_VIDEO_FORMAT_UYVY:
|
||||
case GST_VIDEO_FORMAT_VYUY:
|
||||
case GST_VIDEO_FORMAT_YVYU:
|
||||
case GST_VIDEO_FORMAT_v308:
|
||||
case GST_VIDEO_FORMAT_IYU2:
|
||||
conv_format = GST_VIDEO_FORMAT_AYUV;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_Y410:
|
||||
|
@ -162,9 +164,16 @@ gst_d3d12_pack_new (GstD3D12Device * device,
|
|||
case GST_VIDEO_FORMAT_Y210:
|
||||
case GST_VIDEO_FORMAT_Y212_LE:
|
||||
case GST_VIDEO_FORMAT_Y216_LE:
|
||||
case GST_VIDEO_FORMAT_v210:
|
||||
case GST_VIDEO_FORMAT_v216:
|
||||
conv_format = GST_VIDEO_FORMAT_AYUV64;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_RGB:
|
||||
case GST_VIDEO_FORMAT_BGR:
|
||||
conv_format = GST_VIDEO_FORMAT_RGBA;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_BGR10A2_LE:
|
||||
case GST_VIDEO_FORMAT_r210:
|
||||
conv_format = GST_VIDEO_FORMAT_RGB10A2_LE;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_BGRA64_LE:
|
||||
|
|
|
@ -164,13 +164,24 @@ gst_d3d12_unpack_new (GstD3D12Device * device,
|
|||
case GST_VIDEO_FORMAT_UYVY:
|
||||
case GST_VIDEO_FORMAT_VYUY:
|
||||
case GST_VIDEO_FORMAT_YVYU:
|
||||
case GST_VIDEO_FORMAT_v308:
|
||||
case GST_VIDEO_FORMAT_IYU2:
|
||||
conv_format = GST_VIDEO_FORMAT_AYUV;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_Y210:
|
||||
case GST_VIDEO_FORMAT_Y212_LE:
|
||||
case GST_VIDEO_FORMAT_Y216_LE:
|
||||
case GST_VIDEO_FORMAT_v210:
|
||||
case GST_VIDEO_FORMAT_v216:
|
||||
conv_format = GST_VIDEO_FORMAT_AYUV64;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_RGB:
|
||||
case GST_VIDEO_FORMAT_BGR:
|
||||
conv_format = GST_VIDEO_FORMAT_RGBA;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_r210:
|
||||
conv_format = GST_VIDEO_FORMAT_RGB10A2_LE;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_RGB16:
|
||||
case GST_VIDEO_FORMAT_BGR16:
|
||||
case GST_VIDEO_FORMAT_RGB15:
|
||||
|
|
|
@ -1175,6 +1175,12 @@ gst_d3d12_device_new_internal (const GstD3D12DeviceConstructData * data)
|
|||
D3D12_FORMAT_SUPPORT1_SHADER_LOAD,
|
||||
D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE
|
||||
},
|
||||
{ DXGI_FORMAT_R32_UINT,
|
||||
D3D12_FORMAT_SUPPORT1_TEXTURE2D |
|
||||
D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW |
|
||||
D3D12_FORMAT_SUPPORT1_SHADER_LOAD,
|
||||
D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE
|
||||
},
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
|
|
|
@ -225,15 +225,19 @@ static const GstD3D12Format g_format_map[] = {
|
|||
DXGI_FORMAT_R8G8B8A8_UNORM),
|
||||
FormatBuilder::RgbPacked (GST_VIDEO_FORMAT_ABGR,
|
||||
DXGI_FORMAT_R8G8B8A8_UNORM),
|
||||
FormatBuilder::Buffer (GST_VIDEO_FORMAT_RGB),
|
||||
FormatBuilder::Buffer (GST_VIDEO_FORMAT_BGR),
|
||||
FormatBuilder::YuvPacked (GST_VIDEO_FORMAT_RGB,
|
||||
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM),
|
||||
FormatBuilder::YuvPacked (GST_VIDEO_FORMAT_BGR,
|
||||
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM),
|
||||
FormatBuilder::Planar (GST_VIDEO_FORMAT_Y41B),
|
||||
FormatBuilder::Planar (GST_VIDEO_FORMAT_Y42B),
|
||||
FormatBuilder::YuvPacked (GST_VIDEO_FORMAT_YVYU,
|
||||
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_R8G8B8A8_UNORM),
|
||||
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM),
|
||||
FormatBuilder::Planar (GST_VIDEO_FORMAT_Y444),
|
||||
FormatBuilder::Buffer (GST_VIDEO_FORMAT_v210),
|
||||
FormatBuilder::Buffer (GST_VIDEO_FORMAT_v216),
|
||||
FormatBuilder::YuvPacked (GST_VIDEO_FORMAT_v210,
|
||||
DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UNORM),
|
||||
FormatBuilder::YuvPacked (GST_VIDEO_FORMAT_v216,
|
||||
DXGI_FORMAT_R16G16B16A16_UNORM, DXGI_FORMAT_R16G16B16A16_UNORM),
|
||||
FormatBuilder::YuvSemiPlanar (GST_VIDEO_FORMAT_NV12,
|
||||
DXGI_FORMAT_NV12, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM),
|
||||
FormatBuilder::YuvSemiPlanar (GST_VIDEO_FORMAT_NV21,
|
||||
|
@ -243,7 +247,8 @@ static const GstD3D12Format g_format_map[] = {
|
|||
FormatBuilder::NotSupported(GST_VIDEO_FORMAT_GRAY16_BE),
|
||||
FormatBuilder::Gray (GST_VIDEO_FORMAT_GRAY16_LE,
|
||||
DXGI_FORMAT_R16_UNORM),
|
||||
FormatBuilder::Buffer (GST_VIDEO_FORMAT_v308),
|
||||
FormatBuilder::YuvPacked (GST_VIDEO_FORMAT_v308,
|
||||
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM),
|
||||
FormatBuilder::RgbPacked (GST_VIDEO_FORMAT_RGB16,
|
||||
DXGI_FORMAT_B5G6R5_UNORM),
|
||||
FormatBuilder::RgbPacked (GST_VIDEO_FORMAT_BGR16,
|
||||
|
@ -262,7 +267,8 @@ static const GstD3D12Format g_format_map[] = {
|
|||
DXGI_FORMAT_R16G16B16A16_UNORM),
|
||||
FormatBuilder::RgbPacked (GST_VIDEO_FORMAT_AYUV64,
|
||||
DXGI_FORMAT_R16G16B16A16_UNORM),
|
||||
FormatBuilder::Buffer (GST_VIDEO_FORMAT_r210),
|
||||
FormatBuilder::YuvPacked (GST_VIDEO_FORMAT_r210,
|
||||
DXGI_FORMAT_R32_UINT, DXGI_FORMAT_R32_UINT),
|
||||
FormatBuilder::NotSupported(GST_VIDEO_FORMAT_I420_10BE),
|
||||
FormatBuilder::Planar (GST_VIDEO_FORMAT_I420_10LE,
|
||||
DXGI_FORMAT_R16_UNORM),
|
||||
|
@ -292,7 +298,8 @@ static const GstD3D12Format g_format_map[] = {
|
|||
FormatBuilder::NotSupported(GST_VIDEO_FORMAT_P010_10BE),
|
||||
FormatBuilder::YuvSemiPlanar (GST_VIDEO_FORMAT_P010_10LE,
|
||||
DXGI_FORMAT_P010, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16G16_UNORM),
|
||||
FormatBuilder::Buffer (GST_VIDEO_FORMAT_IYU2),
|
||||
FormatBuilder::YuvPacked (GST_VIDEO_FORMAT_IYU2,
|
||||
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM),
|
||||
FormatBuilder::YuvPacked (GST_VIDEO_FORMAT_VYUY,
|
||||
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM),
|
||||
FormatBuilder::PlanarFull (GST_VIDEO_FORMAT_GBRA),
|
||||
|
|
Loading…
Reference in a new issue