Seungha Yang
801492b334
d3d11: Add RBGA format support
...
Allocates DXGI_FORMAT_AYUV texture for RBGA so that it can be used
by video decoders.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5703 >
2023-11-29 16:54:16 +00:00
Seungha Yang
461c4bc32c
d3d11: Add support for more packed formats using compute shader
...
Adding below listed formats support, and reorders supported format
list based on preference
<YUV 4:2:2>
UYVY, VYUY, YVYU, v210, v216
<YUV 4:4:4>
v308, IYU2
<RGB 16bits per pixel>
RGB16, RGB15, BGR16, BGR15
<RGB 8bits per channel>
ARGB, xRGB, ABGR, xBGR, RGB, BGR
<RGB 10bits per channel>
r210, BGR10A2
<RGB 16bits per channel>
BGRA64
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5717 >
2023-11-27 15:14:09 +00:00
Seungha Yang
df0e6c4140
d3d11converter: Do not use R32_UINT UAV
...
It does not work well with YUY2 texture on some GPUs. Always use
the same DXGI formats for each SRV and UAV
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5709 >
2023-11-25 20:27:43 +09:00
Seungha Yang
b42b45af46
d3d11: Add Y412 format support
...
It's mapped to DXGI_FORMAT_Y416 and major format for 12bits 4:4:4
video decoding. Since DXGI_FORMAT_Y416 format cannot be a render target,
adding corresponding compute shader code too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5692 >
2023-11-21 02:40:10 +09:00
Seungha Yang
522d883fc3
d3d11: Add support for Y210 and Y212 formats
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5691 >
2023-11-20 20:29:13 +09:00
Seungha Yang
2afa0fe7d0
d3d11converter: Port to converter helper
...
... add support YUY2 and Y410 output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5691 >
2023-11-20 20:29:13 +09:00
Seungha Yang
c57fe82a93
d3d11: Implement helper object for converter
...
This object will upload system memory to GPU and preprocess
texture using compute shader or software converter if needed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5691 >
2023-11-20 20:29:13 +09:00
Seungha Yang
cb3c1390f2
d3d11: Avoid ID3D11DeviceContext::Map if possible
...
Allocate resource with initial date instead of calling Map/Unmap
after allocation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5660 >
2023-11-15 23:38:59 +09:00
Seungha Yang
0bcddfc894
d3d11: Enable DirectXMath SIMD
...
* Enable SIMD except for x86 target
* Use aligned matrix struct
* Remove unnecessary matrix copy operations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5602 >
2023-11-07 11:19:31 +00:00
Seungha Yang
033f98ad86
d3d11: Set MaxAnisotropy value for the best quality
...
... and use anisotropic filter without comparison, which is actually
intended one.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580 >
2023-11-01 15:41:08 +00:00
Seungha Yang
0e9fdabb1b
d3d11converter: Simplify private struct ctor
...
Initialize transform matrix using memcpy
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580 >
2023-11-01 15:41:08 +00:00
Seungha Yang
443f205c38
d3d11converter: Don't update vertex buffer on transform matrix change
...
Transform matrix change requires only constant buffer update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5575 >
2023-10-30 11:15:35 +00:00
Seungha Yang
f32bb06e32
d3d11converter: Fallback to linear sampler if filter is not supported
...
Use linear sampler if requested filter is not supported
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-29 01:07:45 +09:00
Seungha Yang
b16665dc75
d3d11convert: Add support for sampling with anisotropic filter
...
Anisotropic filtering might produce better quality than linear filtering
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:56:28 +09:00
Seungha Yang
5f44390b3e
d3d11converter: Reuse rasterizer state object
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:12:17 +09:00
Seungha Yang
b7c49f8e9f
d3d11converter: Add support for MSAA render target
...
Create multi-sample render target view if sample count > 1
and MSAA enabled rasterizer for multi-sample render target
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532 >
2023-10-28 09:58:16 +00:00
Seungha Yang
eac65d248a
d3d11converter: Add support for custom transform matrix
...
Adding gst_d3d11_converter_set_transform_matrix() method so that
user specified transform matrix can be applied when "video-direction=custom"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532 >
2023-10-28 09:58:16 +00:00
Seungha Yang
769c6a62a4
d3d11converter: Use transform matrix for rotation/flip
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532 >
2023-10-28 09:58:16 +00:00
Seungha Yang
269ab85881
d3d11converter: Fix deadlock on taking property mutex
...
SRWLOCK should be zero initialized, but since we changed the private
struct to C++, use C++ mutex instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5498 >
2023-10-17 12:50:55 +00:00
Seungha Yang
65aa1b8faa
d3d11converter: Create ID3D11Buffer with initial data
...
... and remove unnecessary device lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5492 >
2023-10-17 10:48:49 +00:00
Seungha Yang
4e3d87edf5
d3d11converter: Don't set unnecessary constant buffer
...
Skip PSSetConstantBuffers() if it's not used by pixel shader
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5492 >
2023-10-17 10:48:49 +00:00
Seungha Yang
5ea1f8a548
d3d11converter: Print calculated matrix for debugging
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5483 >
2023-10-15 00:27:27 +09:00
Seungha Yang
ba02e94dde
d3d11converter: Calculate gamma LUT only once
...
Reuse calculated gamma lookup table and use immutable 1D texture
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5482 >
2023-10-14 13:37:08 +00:00
Seungha Yang
6f8c474293
d3d11converter: Remove unused variable
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5482 >
2023-10-14 13:37:08 +00:00
Seungha Yang
f52ecb9607
d3d11converter: Add support for HLSL precompile and bytecode caching
...
Precompile pixel shaders for simple conversion path
(without gamma/primaries conversion) in case of MSVC build.
Even if runtime compile is required (cross-compiled or complex conversion
path), do it only once and reuse the compiled bytecode.
This precompile/caching can save about 95% of time taken by
gst_d3d11_converter_new() call.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3004
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
bfdea297d2
d3d11converter: Set alpha-mode using config
...
... and disallow runtime alpha-mode update for now
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
d731a7c2fc
d3d11: Add support for GBR_16LE format
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5375 >
2023-09-23 13:12:55 +00:00
Seungha Yang
15735a4ef3
d3d11converter: Add support for premultiplied alpha
...
Adding "src-alpha-mode" and "dest-alpha-mode" properties
and performs premultiplied alpha conversion if needed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4825 >
2023-06-10 18:12:58 +00:00
Aleksandr Slobodeniuk
1f834eaacb
d3d11convert: add "method" property
...
It allows to select the sampling method, same
as "method" property of videoconvert.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4205 >
2023-03-21 12:08:54 +00:00
Seungha Yang
e1a73a723f
d3d11converter: Fix conversion backend selection
...
Intended behavior was selecting video processor only if pixel shader
is disabled, since we prefer shader over video processor
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4179 >
2023-03-16 01:17:27 +00:00
Seungha Yang
837881ad29
d3d11converter: Fix YUY2 conversion error
...
Always configure shader conversion path, then fallback to the
shader path if processor is not available
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3392 >
2022-11-14 20:14:27 +00:00
Seungha Yang
d0572622fa
d3d11: Add support for planar RGB formats
...
Adding RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, and
GBRA_12LE format support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3392 >
2022-11-14 20:14:27 +00:00
Seungha Yang
3f94df9487
d3d11: Add support for YUY2 format
...
YUY2 is a primary YUV 4:2:2 format for DXVA.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3316 >
2022-11-03 06:40:09 +09:00
Sebastian Dröge
b57c07d5a7
d3d11: Add/fix various annotations
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194 >
2022-10-18 13:51:17 +03:00
Seungha Yang
c3cf9521a5
d3d11: Update library doc
...
* Private header name is changed to gstd3d11-private.h to follow
naming convention
* Add Since mark everywhere
* Update member variable names to be consistent with the other
object implementations in this library
* Correct outdated documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2945 >
2022-08-27 22:40:34 +09:00
Seungha Yang
05dae94352
d3d11: Use WIN32 API directly for locking with RAII pattern
...
Such abstraction is unnecessary for this library/plugin.
Use WIN32 API directly instead of GLib wrappers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2848 >
2022-08-08 20:13:51 +00:00
Seungha Yang
74f56632c3
d3d11: Use std::call_once()
...
g_once_init_enter() always takes global mutex for non-GCC build.
Use C++ once call implementation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2843 >
2022-08-06 23:27:23 +09:00
Seungha Yang
72ee96af42
d3d11converter: Add options for gamma and primaries conversion
...
Gamma remap and/or primaries conversion requires additional
processing which might be something user want to avoid, performance
reason for example
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2831 >
2022-08-04 02:48:57 +09:00
Seungha Yang
1c3fac818d
d3d11: Move GstD3D11Converter to gst-libs
...
The object is equivalent to GstVideoConverter but for D3D11.
Application can use this object directly for various conversions,
such as color space conversion, rescale, crop and flip/rotation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2767 >
2022-07-22 00:08:51 +09:00