Seungha Yang
9363a0af42
dwrite: Allow unlimited number of in-flight d3d12 commands
...
... so that it can be controlled by global direct command queue.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7444 >
2024-09-04 12:56:43 +00:00
Seungha Yang
1c8c5ed457
dwrite: Prefer d3d12 resource allocated with shared heap
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243 >
2024-07-27 03:39:22 +09:00
Seungha Yang
b37bfc02f5
d3d12: Remove unnecessary event handles
...
null event NT handle to ID3D12Fence::SetEventOnCompletion()
will block the calling CPU thread already, thus it has no point that
creating an event NT handle in order to immediate wait for fence at CPU-side.
Note that passing a valid event NT handle to the fence API might be useful
when we need to wait for the fence value later (or timeout is required),
or want to wait for multiple fences at once via WaitForMultipleObjects().
But it's not a considered use case for now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7176 >
2024-07-16 19:17:15 +00:00
Seungha Yang
fa7c4a2e39
d3d12converter: Update API signature
...
Always use device's main direct queue, and control gpu waiting
behavior by using boolean value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057 >
2024-06-19 13:19:48 +00:00
Seungha Yang
f6eb3a01c0
d3d12memory: Hide fence value from header
...
Instead of exposing fence value to wait in header, user setter/getter
methods.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057 >
2024-06-19 13:19:47 +00:00
Seungha Yang
289bc1d440
d3d12: Remove notify_com and notify_mini_object helper methods
...
Use private macros instead of exposing multiple APIs for the same thing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057 >
2024-06-19 13:19:47 +00:00
Seungha Yang
6942868bda
d3d12commandqueue: Update API name and arguments
...
Accepts multiple fences since single command list may have
multiple dependent resources which are associated with
different GPU engines
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057 >
2024-06-19 13:19:47 +00:00
Seungha Yang
713ea313f8
d3d12device: Use HRESULT return code if possible
...
Make function signature consistent with that of command queue
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057 >
2024-06-19 13:19:47 +00:00
Seungha Yang
2a14793ee1
d3d12converter: Add support for GPU-side external fence waiting
...
Ideally, GPU waiting should be scheduled just before executing command list.
But handling the case outside of converter is a bit complicated.
Under an assumption that constructed command list will be executed
immediately, schedules GPU-side waiting inside of conversion method
to simplify the flow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
478e49dd73
d3d12: Update copy_texture_region() method
...
Pass external fence value if any and allow passing fence
data so that dependent resources can be released
once copy is done
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
045c9ac6b9
dwrite: Use shared 11on12 device
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6697 >
2024-04-20 04:16:48 +09:00
Seungha Yang
15434ce51d
dwrite: D3D12 integration
...
Adding d3d12 backend text renderer/blender by using d3d11on12 interop.
And subclassing renderer object per backend (i.e., d3d11, d3d12, and bitmap)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6620 >
2024-04-14 09:55:41 +00:00
Seungha Yang
4ede9fef07
dwrite: Fix crash on device update
...
Selected blend mode should not be cleared on device update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6508 >
2024-04-02 17:36:28 +00:00
Seungha Yang
845f5d4856
d3d11: Rework memory allocation params signalling
...
Hide GstD3D11AllocationParams detail from public header and
set setter methods.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5717 >
2023-11-27 15:14:09 +00:00
Seungha Yang
ac11ccd4ff
dwrite: Protect entire draw operation with D3D11 lock
...
d2d runtime seems to execute pending GPU command list
when DXGI ID2D1RenderTarget is being released, and it will invoke
d3d11 immediate context APIs. Should protect all rendering operations
and DXGI resources with lock.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5659 >
2023-11-15 19:25:46 +09:00
Seungha Yang
ed29c23e86
d3d12, dwrite, va: Fix various msys2 build error/warning
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5454 >
2023-10-12 10:53:58 +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
9a5f5304f8
dwrite: Add plugin docs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5258 >
2023-08-30 15:45:12 +00:00
Seungha Yang
d9894da59d
dwritetimeoverlay: Fix debug category name
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5179 >
2023-08-14 10:24:53 +00:00
Seungha Yang
14ef86a66d
dwrite: Re-add background geometry combine
...
If glyphrun unit is changed in a single line, there could be
overlapped background area which result in drawing background
twice. Adding geometry combine so that background geometry objects
with the same color can be merged and rendered at once
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5179 >
2023-08-14 10:24:53 +00:00
Seungha Yang
15f0bd2461
dwrite: Move background-color and color-emoji options to effect object
...
... and simplify background rendering
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:02:32 +09:00
Seungha Yang
a1ad56ed5a
dwrite: Add helper object for blending operation
...
For easy integration with a new text rendering baseclass
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:02:28 +09:00
Seungha Yang
f792884ae7
dwritebaseoverlay: Handle only d3d11 allocation query
...
... and passthrough allocation queries of the other types
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:00:44 +09:00
Seungha Yang
8633b29fab
dwritetextoverlay: Remove leading CRLF sequence from CC
...
The CRLF sequence is unnecessary
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:00:44 +09:00
Seungha Yang
f01fc727e3
dwrite: Remove some properties
...
Remove outline color and auto resize related properties
to be consistent with textoverlay elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:00:44 +09:00
Seungha Yang
1f18ceaf0f
dwritesubtitlemux: Update object name
...
Add missing prefix `DWrite` so that this element can coexist with
subtitlemux proposed in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4938
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4949 >
2023-06-30 23:41:36 +09:00
Seungha Yang
8650c7a42a
dwrite: Add support for non-d3d11/system memory
...
Attach meta if downstream supports it whatever the negotiated memory type is,
or just silently passthrough when meta is not supported
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4945 >
2023-06-30 11:14:17 +00:00
Seungha Yang
1c4de219e4
dwrite: Add dwritesubtitleoverlay element
...
Adding new subtitle overlay element. It's a bin which is wrapping
two internal elements dwritesubtitlemux and dwritetextoverlay.
* dwritesubtitlemux: A new internal element to aggregate subtitle
buffers and to attach the aggregated subtitle buffers on
video buffer as meta.
* dwritetextoverlay: Extracts/renders the subtitle meta and
discard the meta after rendering.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4934 >
2023-06-28 20:15:31 +00:00
Seungha Yang
a1ca42ad66
dwritebaseoverlay: Fix color-font property get/set
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4934 >
2023-06-28 20:15:31 +00:00
Seungha Yang
0091166a38
dwrite: Add dwritesubtitlemux element
...
dwrite plugin internal use and will be removed once it's added to -base
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4934 >
2023-06-28 20:15:31 +00:00
Seungha Yang
fce6edd0f1
dwrite: Add GstDWriteSubtitleMeta
...
dwrite plugin internal use and will be removed once it's added to -base
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4934 >
2023-06-28 20:15:30 +00:00
Seungha Yang
43ee082189
dwritebaseoverlay: Forward downstream wanted min buffer size
...
Upstream element might want to know the min buffer size,
d3d11 decoders for example.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
Seungha Yang
8838a670e0
dwrite: Remove unused values
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
Seungha Yang
6cb41569e6
dwrite: Add support for closed caption overlay
...
Adding closed caption rendering feature to dwritetextoverlay
element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
Seungha Yang
713f74f4f9
dwrite: Import libcaption source code
...
Import the code from gst-plugins-rs
(origin is https://github.com/szatmary/libcaption )
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
Seungha Yang
37c7c92c03
dwritetimeoverlay: Fix member variable initialization
...
Use GstBaseTransform::start() instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
Seungha Yang
93db77ea3a
dwrite: Protect ID2D1Factory API with lock
...
ID2D1Factory::CreateDxgiSurfaceRenderTarget is not thread-safe
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4886 >
2023-06-18 19:58:45 +00:00
Seungha Yang
ba6800ce23
dwrite: Add DirectWrite text rendering plugin
...
Adding DirectWrite text rendering elements
* dwriteclockoverlay: Equivalent to clockoverlay
* dwritetimeoverlay: Equivalent to timeoverlay
* dwritetextoverlay: Similar to textoverlay but subtitle is not
supported
Newly added elements support system memory and d3d11 memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4826 >
2023-06-15 12:53:02 +00:00