Seungha Yang
a75e88fdd2
d3d11memory: Remove unnecessary locking
...
* memory map/unmap is already protected by d3d11 device lock.
Don't need to take another memory lock.
* Use WIN32 critical section and slim reader/writer lock APIs
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
21e5c33797
d3d11memory: Allow null GstD3D11Allocator to alloc methods
...
Similar to gst_allocator_alloc(), use default GstD3D11Allocator
when caller passes null allocator object
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2843 >
2022-08-06 23:54:56 +09: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
32eeadb4a5
d3d11: Define enum and flags types manually
...
gnome.mkenums_simple() doesn't work well for GstD3D11, seems to
be confused by numeric representation of D3D11, must be a bug
in GLib or so. Just don't rely on the incomplete automagic.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2767 >
2022-07-22 00:07:52 +09:00
Seungha Yang
b09ca8635f
d3d11: Use scoped device lock
...
Make code simpler and more deadlock-free
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2728 >
2022-07-09 03:36:17 +09:00
Seungha Yang
347ad181be
d3d11memory: Update alloc_wrapped() API to avoid staging texture alloc
...
Add size parameter and use it for CPU accessible memory size
instead of allocating staging texture per API call.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2713 >
2022-07-04 18:46:51 +00:00
Seungha Yang
46a3394581
d3d11memory: Add private method for texture wrapped memory allocation
...
Unlike public method gst_d3d11_allocator_alloc_wrapped(), newly
added method by this commit will not calculate CPU accessible memory
size, since staging texture must be allocated to calculate the size.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2697 >
2022-07-02 05:37:55 +09:00
Seungha Yang
06b7b240af
d3d11memory: Add support for wrapping application texture
...
Add gst_d3d11_allocator_alloc_wrapped() method to support wrapping
application texture using GstD3D11Memory without copy.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2646 >
2022-06-27 19:33:57 +00:00
Seungha Yang
fce7431381
d3d11: Install library headers
...
Our Direct3D11 abstraction layer has been improved and
it gained good shape from API point of view.
Also, On Windows, GstD3D11 has various advantages over GstGL
in terms of compatibility/stability/feature/performance.
Note that WGL implementation is known to be buggy for some
drivers/vendors/scenario (that's a reason why Google implemented ANGLE).
Moreover, GstGL is not fully optimized for Windows unfortunately.
It's the time to open this interface to application developers
for various optimized processing using our Direct3D11
infrastructure.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2646 >
2022-06-27 19:33:57 +00:00
Seungha Yang
aca71fd692
d3d11: Update gst_d3d11_allocation_params_new() interface
...
Define GST_D3D11_ALLOCATION_FLAG_DEFAULT (0) value instead of
casting enum type everywhere. And pass D3D11_RESOURCE_MISC_FLAG value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2646 >
2022-06-27 19:33:57 +00:00
Seungha Yang
fe64295841
d3d11decoder: Work around Intel DXVA driver crash
...
Intel DXVA driver crashes sometimes (from GPU thread) if
ID3D11VideoDecoder is released while there are outstanding view objects.
To make sure the object life cycle, holds an ID3D11VideoDecoder refcount
in GstD3D11Memory object.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2504 >
2022-05-27 15:13:15 +00:00
Seungha Yang
0deb73d9ba
d3d11memory: Clear YUV texture with black color
...
We prefer black color as an initial texture color and
Direct3D11 runtime will initialize texture with zeros (except for alpha)
which is fine for RGB formats. But UV components of YUV texture
requires manual clear for black color.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2502 >
2022-05-27 14:03:49 +00:00
Seungha Yang
47ff41bcd2
d3d11memory: Protect against concurrent access from GPU and CPU to staging texture
...
Staging texture does not allow GPU access while it's CPU mapped.
But because we cannot block concurrent READ access by GstMemory design,
additional staging texture is still required.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1182
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2375 >
2022-05-05 18:59:05 +00:00
Sebastian Dröge
8ab1c5791b
d3d11: Remove non-existing gst_d3d11_memory_get_type() API from header
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1764 >
2022-02-21 21:26:43 +00:00
Seungha Yang
cb7e454b53
d3d11: Reorganize format mapping table
...
... and handle GST <-> D3D11 format mapping in a single place to
make adding format easier
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1699 >
2022-02-16 18:41:05 +00:00
Seungha Yang
dd906f9610
d3d11: Store device format in struct
...
Holding pointer to struct was unsafe approach because
the pointer to d3d11 format will be invalidated once d3d11 device
object is released
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1699 >
2022-02-16 18:41:05 +00:00
Seungha Yang
af9b9be76d
d3d11memory: Inform subresource index via GstMapInfo::user_data
...
By using this way, caller does not need to call another method
gst_d3d11_memory_get_subresource_index()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1408 >
2022-02-08 10:05:35 +00:00
Seungha Yang
a37da515f4
d3d11memory: Add support for ID3D11Buffer
...
Allow wrap ID3D11Buffer via GstD3D11Memory object
At the moment, only staging ID3D11Buffer is supported.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1408 >
2022-02-08 10:05:35 +00:00
Thibault Saunier
019971a3c7
Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir
2021-09-24 16:14:36 -03:00