Seungha Yang
911d840288
wasapi: Fix alloc/free function mismatch
...
... and fix leak in wasapi device provider
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3326
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6169 >
2024-02-21 21:03:32 +00:00
Seungha Yang
06b9864dae
wasapi2: Fix task memory leak
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6169 >
2024-02-21 21:03:32 +00:00
Tim-Philipp Müller
9b84d6398a
qsv: use new plugin status message API
...
Minimal example.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3832 >
2024-02-21 00:58:19 +00:00
Seungha Yang
354af30d9f
wasapi2: Respect ringbuffer buffer/latency time
...
Decide buffer size based on configured buffer/latency time
if low-latency is disabled, so that ringbuffer can buffer more
than minimum required size.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2870
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6141 >
2024-02-20 11:37:09 +00:00
Seungha Yang
93f0135798
wasapi2: Fix choppy rendering
...
This reverts questionable commit 009bc15f33
which looks completely wrong.
The GstWasapi2RingBuffer:buffer_size variable is used to
calculate available buffer size we can write
(i.e., available size = buffer_size - padding_size).
But the commit makes the size to be exactly same as buffer period.
Then, it can confuse this element as if the endpoint buffer is full on
I/O event callback (if padding size is equal to buffer period)
but it's not true.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2870
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6132 >
2024-02-19 04:39:25 +00:00
Robert Mader
6b024b50ab
v4l2codecs: h264: Fix a memory leak on renegotiation
...
We only use this anchor when streaming, in which case output_state is
set and needs to get unreffed.
This is in line with how it is handled for all other codecs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6127 >
2024-02-15 22:37:11 +01:00
Xavier Claessens
d86a6715e1
aja: Replace global semaphore with per-device flock()
...
The global semaphore was never closed/unlinked, causing permission
denied issue if the device is later used by another user. Properly
removing the semaphore when stopping the pipeline would still leave it
open in case of a crash.
With a GStreamer specific name, it was also not preventing other apps to access
the device concurrently.
Finally, if the system has multiple cards, the lock should be per card
and not global (to be confirmed).
Fixes : #3283 .
Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6117 >
2024-02-15 09:30:20 +00:00
Seungha Yang
cfa8386dd0
nvdecoder: Enable zero-copy only if explicitly enabled
...
Keep pre-1.24 behavior unless user specifies the number of
output surface size. We are calculating output surface size
conservatively, and it can result in over allocation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6102 >
2024-02-13 12:37:07 +00:00
Seungha Yang
59358e439d
nvh265dec: Don't convert unknown video format to string
...
gst_video_format_to_string() method does not allow unknown format
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6102 >
2024-02-13 12:37:06 +00:00
Seungha Yang
693dbc9667
d3d12screencapturesrc: Fix choppy display
...
According to recommendation from MS, IDXGIOutputDuplication::ReleaseFrame()
needs to be called just before IDXGIOutputDuplication::AcquireNextFrame()
for performance reasons, so that driver can accumulate dirty rects
and update texture at once. But it seems to cause choppy output.
Do release acquired frame immediately once processing done,
like d3d11 implementation does.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6092 >
2024-02-11 13:13:18 +00:00
Seungha Yang
36c4ef361b
d3d12: Add VP8 decoder
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6088 >
2024-02-10 21:23:51 +09:00
Seungha Yang
e2eff3e4a3
d3d12decoder: Fix bitstream buffer usage
...
Resource state of a buffer in upload heap should stay in
generic-read although it's effectively in common state. Some drivers
complains about the wrong state.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6088 >
2024-02-10 21:23:28 +09:00
Tim-Philipp Müller
9fe9e60012
aja: suppress compiler warnings for aja ntv2 subproject
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6087 >
2024-02-10 10:10:06 +00:00
Seungha Yang
c5e241932c
amfcodec: Update plugin cache
...
Adding AV1 encoder documentation (added in 1.22) with various
new properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6084 >
2024-02-10 01:18:27 +00:00
Seungha Yang
b4ee86d1e7
ksdeviceprovider: Fix crash while probing device caps
...
Ignore unexpected media type reported by driver, instead of abort
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6081 >
2024-02-09 14:09:07 +00:00
Guillaume Desmottes
550a21ccbe
avdtpsink: post error message when failing to start
...
Subclasses are supposed to report errors messages if their start
implementation failed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1678 >
2024-02-09 10:09:13 +00:00
Sebastian Dröge
3ca5a2554f
ajasink: Add HANC/VANC ancillary data from GstAncillaryMeta
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5488 >
2024-02-08 15:28:39 +00:00
Sebastian Dröge
efa7e70d16
ajasrc: Add GstAncillaryMeta for any HANC/VANC ancillary data that is captured
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5488 >
2024-02-08 15:28:39 +00:00
Seungha Yang
d444fe3fdc
nvcodec: Update plugin cache
...
Updating plugin cache for IPC elements, JPEG encoder, and newly added
properties. Also removing Gst*SLDec which does not exist anymore
but renamed to Gst*Dec.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6070 >
2024-02-07 22:06:39 +00:00
Sebastian Dröge
ddd9dcc559
ajasink: Remove workaround for NTV SDK bug that is fixed since a while
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6056 >
2024-02-05 16:24:13 +00:00
Seungha Yang
35e5178f0e
d3d12: Fix potential self thread join
...
Fence data could hold GstD3D12Device directly or indirectly.
Then if it's holding last refcount, the device object will
be released from the device object's internal thread,
and will try join self thread.
Delegates it to other global background thread to avoid
self thread joining.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6042 >
2024-02-05 01:37:32 +09:00
Seungha Yang
1c0f224f05
d3d12memory: Remove unused method
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6042 >
2024-02-03 23:22:58 +09:00
Seungha Yang
6dc902a962
nvcodec: Add JPEG encoder
...
Adding nvJPEG library based JPEG encoder element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6021 >
2024-01-31 12:51:28 +00:00
Seungha Yang
fc4b136ac8
nvcodec: Move runtime compiler check to plugin init function
...
Required information for other elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6021 >
2024-01-31 12:51:28 +00:00
Mengkejiergeli Ba
bf7f4eef20
msdk: Use gst_video_info_dma_drm_to_video_info to extract video info
...
Note that we need mappings for all drm_fourcc, otherwise we will get
GST_VIDEO_FORMAT_UNKNOWN for some formats...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5991 >
2024-01-31 06:24:13 +00:00
He Junyan
637d253e9f
va: baseenc: Fix the wrong parameter order to call va_map_buffer()
...
The current gst_va_base_enc_copy_output_data() uses wrong parameter
order to call va_map_buffer().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6020 >
2024-01-30 15:50:23 +00:00
Seungha Yang
51162acc31
cuda: Report device open error
...
Call gst_cuda_result() with CUDA_ERROR_NO_DEVICE error code if
we could not open device, so that application can catch the error
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6006 >
2024-01-30 14:30:41 +00:00
Seungha Yang
07ba225183
cudaipc: Add support for custom meta forwarding
...
Forward custom meta to peer ipcsrc elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6006 >
2024-01-30 14:30:41 +00:00
He Junyan
b4eb97101f
va: Implement the vaav1enc plugin
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:26 +00:00
He Junyan
f4779f1fab
va: baseenc: Extend the create_output_buffer() to accept prefix data
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
He Junyan
726cc895d8
va: encoder: Add copy_output_data() helper function
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
He Junyan
39144f612e
va: encoder: extend prepare_output() virtual function
...
The output of VP9 and AV1 encoder is a little different from the H264
and H265 encoder, it may contain repeat frames and so the output frame
number may be more than the input. We need to call finish_subframe()
when some frame will be repeated later. So we need to extend the
current prepare_output() virtual function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
Seungha Yang
1a7c85a261
qsvh264enc: Always specify field order
...
qsv runtime will report error when encoding interlaced stream
if session was initialized with unknown field order
but tff/bff is specified in per frame encoding parameter.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5835 >
2024-01-25 14:25:16 +00:00
Seungha Yang
3855646f1d
d3d12: Add MPEG-2 decoder
...
Most of code additions are just gluing already implemented
GstDxva and GstD3D12Decoder interfaces
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5979 >
2024-01-25 11:45:23 +00:00
Ruben Gonzalez
5e3fafd025
SA: Remove extra check since libva min version is 1.12
...
The libva version was updated to 1.12 in PR 4781 [1]
[1] https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4781
NOTE: I also sort va_sources
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5978 >
2024-01-25 00:45:55 +00:00
Seungha Yang
3991801d4a
d3d12av1dec: Fix object type name on multi-gpu system
...
Fixing typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5964 >
2024-01-24 22:35:17 +00:00
Seungha Yang
4fb284346e
d3d12h264enc: Fix profile support check
...
Add missing CheckFeatureSupport() call, and remove unused field
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5952 >
2024-01-22 20:10:24 +09:00
Seungha Yang
f44d5d18f3
d3d12: Pass target rectangle to ClearRenderTargetView()
...
Some drivers seem to be crashing if ClearRenderTargetView() is called
for P010/P016 texture's second subresource (UV plane) without
specified target rectangle.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5952 >
2024-01-22 19:40:08 +09:00
Seungha Yang
4e1bf149d0
d3d12: Add H.264 video encoder
...
Adding video encoder element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5808 >
2024-01-19 12:47:35 +00:00
Mengkejiergeli Ba
b8cb0d1d7f
msdkdec: Fix leaks
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5930 >
2024-01-18 08:43:48 +00:00
Piotr Brzeziński
3f67e70f39
vtenc: Fix PAUSED->READY deadlock when output loop is running
...
Explicitly calls gst_vtenc_pause_output_loop when going PAUSED->READY to make sure GST_PAD_STREAM_LOCK is not taken.
Before this change, a deadlock would occur if pipeline got stopped right after one output buffer was generated by vtenc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5933 >
2024-01-18 07:37:58 +00:00
Mengkejiergeli Ba
a6ab4fa98b
msdkdec: Let msdk base decoder maintain the output_state
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5929 >
2024-01-17 10:04:03 +08:00
Mengkejiergeli Ba
2c61fd92e2
msdkvpp: Fix dma caps negotiation
...
Modify the fix_output_format in vpp to directly generate caps with
negotiated src caps, and we have the correct dma caps negotiation in
fix_output_format function. And thus, we can remove the redundant
negotiation of using function pad_accept_memory in vpp.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5845 >
2024-01-16 14:04:05 +08:00
Seungha Yang
0cceb6f68f
d3d12memory: Don't use persistent staging buffer map
...
Persistent map is not recommended in case of readback
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5919 >
2024-01-14 13:10:56 +00:00
Seungha Yang
077470913d
d3d12decoder: Use D3D12_HEAP_FLAG_CREATE_NOT_ZEROED flag
...
Since the first access to a texture is always write, zero initialization
is unnecessary
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5919 >
2024-01-14 13:10:56 +00:00
Chris Spencer
865227b750
vkimagebufferpool: allow specifying initial image layout
...
The pool currently defaults to performing a layout transition to
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, with some special exceptions for
video usages. This may not be a legal transition depending on the usage.
Provide an API to explicitly control the initial image layout.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5881 >
2024-01-13 05:54:00 +00:00
Ratchanan Srirattanamet
facb000afe
androidmedia: add NDK implementation of Android MediaCodec
...
This reduces the amount of Java <-> native calls, which should reduce
overhead a bit. It also paves a way to share the code between Android
and a libhybris-based backend (where GNU/Linux system uses Android
driver) in the future.
Bug: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1242
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4115 >
2024-01-11 19:00:13 +00:00
Ratchanan Srirattanamet
a50ce9c6b0
androidmedia: allow multiple implementations of codec and format
...
When implementing NDK media support, it would be useful to also have JNI
implementation in the same binary as NDK media compatibility is lower.
As such, implement a rudimentary vtable system for gstamc-codec and
gstamc-format, and allow choosing the implementation at static_init()
time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4115 >
2024-01-11 19:00:13 +00:00
Ratchanan Srirattanamet
d0ffcb46df
androidmedia: call all static_init() functions from single entry point
...
This allows the implementations to do custom logic behind the hood. For
example, when NDK implementation is added, the entrypoint can chooses to
statically initialize the NDK implementations or the JNI one.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4115 >
2024-01-11 19:00:13 +00:00
Mengkejiergeli Ba
0d04660c5d
msdk: Fix memory leaks
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5819 >
2024-01-11 14:52:45 +08:00
Víctor Manuel Jáquez Leal
7f14bfe8b8
va: basedec: fix return type
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5903 >
2024-01-10 12:48:16 +01:00
Mengkejiergeli Ba
14c5d3ee91
msdk: Modify the caps order when register plugins
...
With this patch, the caps is registered in the order of memory features
as: VAMemory, DMABuf then raw caps in linux path, and D3D11Memory then
raw caps in windows path. It helps to prioritize the video memory for all
msdk elements when doing negotiation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5898 >
2024-01-10 01:14:21 +00:00
Mengkejiergeli Ba
7d62166098
msdk: Remove useless function for vp8dec and vc1dec in windows path
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5898 >
2024-01-10 01:14:21 +00:00
Robert Mader
a64f2bf628
v4l2codecs: Always chain up to parent decide_allocation function for all codecs
...
Apply the changes to the codecs previously left out, fixing playback
issues seen with VP9.
See: 70ff80a873
("v4l2codecs: Always chain up to parent decide_allocation function")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5896 >
2024-01-09 17:29:52 +00:00
Robert Mader
75b7e5fcb3
v4l2codecs/av1decoder: Allow output caps to be updated
...
To bring AV1 in line - needed for the next commit.
See: d3c5fc815e
("v4l2codecs: Allow output caps to be updated")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5896 >
2024-01-09 17:29:52 +00:00
Seungha Yang
a242b93f33
d3d12decoder: Release decoder and heap on stop
...
Sometimes driver crash happens if ID3D12VideoDevice got closed first,
and then ID3D12VideoDecoderHeap/ID3D12VideoDecoder are released.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5895 >
2024-01-09 13:52:44 +00:00
Seungha Yang
6ffed9b3dc
d3d12videosink: Fix crash on set_buffer()
...
set_buffer() can be called with null buffer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5895 >
2024-01-09 13:52:44 +00:00
Seungha Yang
7f2b4b6b09
d3d12: Fix warnings reported by debug layer
...
Fixing below debug layer report
ID3D12Device::CreateCommittedResource: Ignoring InitialState D3D12_RESOURCE_STATE_COPY_DEST.
Buffers are effectively created in state D3D12_RESOURCE_STATE_COMMON.
Buffer resource will be automatically promoted to D3D12_RESOURCE_STATE_COPY_DEST
at the very first COPY operation time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5895 >
2024-01-09 13:52:44 +00:00
Seungha Yang
e1ecd1de2f
d3d12: Simplify fence data setup
...
Adding COM and GstMiniObject specific methods to skip passing
free function pointer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5895 >
2024-01-09 13:52:44 +00:00
Seungha Yang
2c3f3c0cb6
d3d12device: Print live objects on finalize()
...
The report from debug layer can help tracing resource leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5895 >
2024-01-09 13:52:44 +00:00
Seungha Yang
0077c4beb0
d3d12decoder: Set buffer flag on output buffer
...
... and remove unnecessary condition check
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5891 >
2024-01-07 13:38:44 +00:00
Seungha Yang
02563605e8
d3d12videosink: Add gamma, primaries and sampling filter properties
...
Add properties to control conversion methods
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5891 >
2024-01-07 13:38:44 +00:00
Seungha Yang
368d8b9252
d3d12videosink: Add support for 3D transformation
...
Add x, y, and z axis rotation with scaling support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5891 >
2024-01-07 13:38:44 +00:00
Seungha Yang
72237d2563
d3d12videosink: Add support for MSAA
...
Adding "msaa" property to support MSAA rendering
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5891 >
2024-01-07 13:38:44 +00:00
Seungha Yang
de331217aa
d3d12videosink: Add support for fullscreen mode
...
Adding "fullscreen-on-alt-enter" and "fullscreen" properties so that
use can control fullscreen mode switch
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5891 >
2024-01-07 13:38:44 +00:00
Seungha Yang
24d515f57d
d3d11screencapturesrc: Hide symbols
...
Fix potential linking error in case of static build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5883 >
2024-01-05 21:27:35 +09:00
Seungha Yang
ae3ed20f41
d3d12: Add screen capture element
...
Since DXGI desktop duplication API does not work with Direct3D12 device,
this element will use Direct3D11 device to acquire frame.
Then other rendering operations (e.g., texture copy, render pipeline) will
happen using Direct3D12 API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5883 >
2024-01-05 21:27:35 +09:00
Mengkejiergeli Ba
5d488c444e
msdkvpp: Remove passthrough condition in propose_allocation
...
According to basetransform func: gst_base_transform_do_bufferpool,
it is the upstream to decide if it needs a bufferpool from vpp, so
we don't need passthrough condition in subclass propose_allocation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5879 >
2024-01-04 04:35:40 +00:00
Seungha Yang
1b86c9d370
d3d12decoder: Try zero-copy in case of reverse playback too
...
In case of tier 1 decoder, always use reference-only picture to avoid
fixed-size pool limitation and output decoded picture without
copy even for negative rate. Also do not use copy queue for GPU to GPU
copy. Copy queue is specialized for upload/download and may occupy
PCIE bandwidth. Use direct queue as recommended by vendors.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5877 >
2024-01-03 02:08:53 +09:00
Seungha Yang
1fb44b8160
d3d12decoder: Fix crash on flush
...
On flush event, baseclass will discard all pictures from DPB
but there can be still in-flight commands not finished yet.
Use our command queue, allocator and fence data helper objects
to keep resource available during command execution.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5877 >
2024-01-03 01:36:42 +09:00
Seungha Yang
d3b3a1c00a
d3d12: Add {set,get}_user_data() methods to command allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5877 >
2024-01-03 01:19:39 +09:00
Seungha Yang
9d5277e70e
d3d12decoder: Fix barrier usage
...
Common state promotion and decay does not seem to be applied to
decoder commands. Use barriers explicitly
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5877 >
2024-01-03 01:17:32 +09:00
Seungha Yang
087e39564d
d3d12videosink: Fix buffer leak
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5875 >
2024-01-02 13:02:47 +00:00
Seungha Yang
b0ef890726
d3d12device: Store adapter index
...
... and remove unused fence object
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5875 >
2024-01-02 13:02:47 +00:00
Seungha Yang
0577d1c9de
d3d12: Reduce shader visible descriptor size
...
Shader visible descriptors occupy GPU resource and there are hardware
limits. Thus, in order to minimize the amount of shader visible heaps,
only non shader visible descriptor heap (staging) will be held by d3d12memory.
Then converter will copy the staging descriptor to shader visible
descriptor heap per draw.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5875 >
2024-01-02 13:02:47 +00:00
Seungha Yang
0ce6e752e4
d3d12: Use CREATE_NOT_ZEROED heap flag if possible
...
Zero initialization would have overhead and it's not required
most cases except for textures. Use CREATE_NOT_ZEROED flag
in case of buffer resource or if a texture will be rendered without any
prior read operation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5875 >
2024-01-02 13:02:47 +00:00
Seungha Yang
a1ba38cd64
d3d12: Add compositor element
...
Adding d3d12compositor element. d3d12compositor will build GPU commands
asynchronously and each command is serialized at final render stage.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5875 >
2024-01-02 13:02:47 +00:00
Seungha Yang
996346f8d3
d3d12converter: Don't map output buffer with write flag
...
Conversion will happen when constructed command list is executed,
not by converter element. Thus this object should not map output buffer
with write flag which will result in error if multiple threads
are building commands for the same output target frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5875 >
2024-01-02 13:02:47 +00:00
Seungha Yang
bffbf0d951
d3d12converter: Add support for texture upload
...
If buffer is not a d3d12 memory or allocated by other device,
upload to internal d3d12 memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5875 >
2024-01-02 13:02:47 +00:00
Seungha Yang
f4fe17d8d2
d3d12converter: Add support for blending
...
Create new PSO if blend state update is required
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5875 >
2024-01-02 13:02:47 +00:00
Seungha Yang
7c701058ed
d3d12: Add testsrc element
...
Adding testsrc element with d2d interop support via d3d11on12
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5875 >
2024-01-02 13:02:46 +00:00
Seungha Yang
abe1f5044d
cuda: Prefer CUBIN over PTX
...
System installed NVRTC library might be newer version than
driver, then generate PTX can be incompatible with the driver.
Instead of the intermediate code PTX, use actual assembly code
directly.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3108
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5639 >
2024-01-02 10:10:09 +00:00
Seungha Yang
2f091e7118
d3d12: Add video sink element
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
660f2d7d27
d3d12: Add convert element
...
Implement converter object with convert element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
4198bd6932
d3d12: Add helper object for fence operation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
eeb57061d2
d3d12: Enable plugin only for Windows8 or newer
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
3e49d6a75f
d3d12: Define more formats
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
48cfca413d
d3d12: Add header containing core features
...
... and include the single header instead of listing many ones
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
41d8a12649
d3d12: Remove unused methods
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
5ce2a7f64f
d3d12bufferpool: Don't pre-allocate memory for size calculation
...
Unlike d3d11, we can know CPU accessible memory layout without
allocation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
d316356bf2
d3d12memory: Add alloc_wrapped() method
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
3308a976bd
d3d12: Add upload element
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
e4f794cbdd
d3d12bufferpool: Wait fence before reusing buffer
...
Buffer can be released without waiting fence for previous commands
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:39:00 +00:00
Seungha Yang
1c5bba4b6b
d3d12decoder: Remove ID3D12Device4 interface requirement
...
Old OS may not support the interface. And allow 11_0 feature level
hardware.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:38:59 +00:00
Seungha Yang
4e5d4a45a3
d3d12decoder: Reduce the number of resource barriers
...
Single barrier per texture is sufficient in case of array-of-textures.
Avoid unnecessary decay barriers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:38:59 +00:00
Seungha Yang
e6bdb0458c
d3d12decoder: Use flexible task queue
...
Instead of using fixed size command allocator array, make it
resizable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:38:59 +00:00
Seungha Yang
efc023e76e
d3d12: Rework command scheduling
...
* Use single fence object per queue and remove GstD3D12Fence
implementation
* Add a helper method for texture copy
* Run background thread and release unused resource from the thread
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:38:59 +00:00
Seungha Yang
6d7d9291c3
d3d12: Add resource pool objects
...
Adding pool objects for command list, command allocator, and descriptor
heap
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:38:59 +00:00
Seungha Yang
93458c0155
d3d12memory: Add more SRV/RTV getter methods
...
Adding a method so that memory object can create SRV/RTV
on external descriptor heap. And remove unused methods
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:38:59 +00:00
Seungha Yang
2578f234dd
d3d12: Remove d3d11 dependency
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5870 >
2023-12-29 14:38:59 +00:00