Seungha Yang
8c3d516a14
d3d12: Additional fixes for MinGW build
...
Various fixes for GCC build, including actual bug fixes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7722 >
2024-10-24 06:54:30 +09:00
Seungha Yang
703cc1783e
d3d12: Fix MinGW build with installed DirectX-Headers
...
Required for cerbero MinGW build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7154 >
2024-10-22 21:25:11 +00:00
L. E. Segovia
4af2121189
meson: d3d12: fix build with MinGW GCC 14
...
Also apply the d3d11 fix since both use the same header.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7658 >
2024-10-12 19:01:46 -03:00
Seungha Yang
7c06001705
d3d12: Shorten various names
...
Update names of various objects and method to be shorter, for instance
GstD3D12CommandAllocator is changed to GstD3D12CmdAlloc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7642 >
2024-10-10 10:35:36 -04:00
Seungha Yang
024f450204
d3d12: Fix typo in docs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7642 >
2024-10-10 09:21:54 -04:00
Seungha Yang
ef55b31f46
d3d12: Early error out on Signal() fail
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7642 >
2024-10-10 09:21:54 -04:00
Seungha Yang
2d91521dfc
d3d12: Fix resource allocation on old Windows version
...
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED flag was introduced as of
Windows 10 May 2020 Update, and older versions don't understand
the heap flag. Checks the feature support and enables the
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED only if it's supported by OS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7573 >
2024-09-26 12:48:55 +00:00
Seungha Yang
51e1834e81
d3d12: Use D3D12_FILTER_MIN_MAG_MIP_LINEAR filter by default
...
... instead of D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT, since we supports
mipmap texture now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7555 >
2024-09-23 13:52:37 +00:00
Seungha Yang
8550ed5888
d3d12: Add support for mipmap texture
...
Consider D3D12_RESOURCE_DESC.MipLevels > 1 or zero case
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7555 >
2024-09-23 13:52:37 +00:00
Seungha Yang
eb6d083ebe
d3d12converter: Fix crash on pso update
...
Allocates D3D12_INPUT_ELEMENT_DESC memory on heap instead of using
stack memory for later reuse
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550 >
2024-09-20 19:19:15 +00:00
Seungha Yang
7cf27c456b
d3d12converter: Add support initial pso DXGI_SAMPLE_DESC setting
...
Add more options for pso, in order to avoid redundant pso
creation when MSAA is used
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550 >
2024-09-20 19:19:15 +00:00
Seungha Yang
a1029d5b87
d3d12converter: Add support for sampler filter update
...
Creates new root signature and pipeline state object
if sampler filter method is updated
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550 >
2024-09-20 19:19:15 +00:00
Seungha Yang
c75e6d01c5
d3d12converter: Use generated sampler
...
... instead of static ones, in order to support sampler state update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550 >
2024-09-20 19:19:15 +00:00
Seungha Yang
e962af3064
d3d12: Add gst_d3d12_get_copyable_footprints() method
...
This helper method will calculate buffer resource size and layout
required for (mutiple) texture resources to be stored in a single
buffer resource
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7480 >
2024-09-14 15:33:44 +00:00
Seungha Yang
f3589b57d2
d3d12device: Hold compute queue
...
Compute queue will be used for async compute task or device-to-device
memory copy
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7480 >
2024-09-14 15:33:44 +00:00
Seungha Yang
f04f6f43c3
d3d12frame: Fix frame copy method
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243 >
2024-07-27 04:18:47 +09:00
Seungha Yang
28a7adf4dd
d3d12memory: Check heap flag before trying to create NT handle
...
CreateSharedHandle() will fail eventually if the resource was created
with non-shared heap. Instead of trying to create handle blindly,
validate resource first.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243 >
2024-07-27 04:17:03 +09:00
Seungha Yang
4a6daad517
d3d12: Suppress fence data object leak report
...
We don't release GstD3D12Device intentionally, thus
a GstD3D12FenceDataPool owned by a device will not be released
but that's expected leak.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243 >
2024-07-27 03:23:22 +09:00
Seungha Yang
9a8d7db5de
d3d12: Fix debug category name
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243 >
2024-07-27 03:23:22 +09:00
Seungha Yang
9a06330d09
d3d12converter: Update internal method names
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7193 >
2024-07-18 14:17:43 +00: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
6cac053549
d3d12bufferpool: Use shared heap by default
...
... to make cross-api resource sharing possible
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7119 >
2024-07-01 20:18:42 +00:00
Seungha Yang
c2531853fc
d3d12commandallocatorpool: Remove unused methods
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7108 >
2024-06-29 20:47:39 +09:00
Seungha Yang
e71ffe978a
d3d12converter: Make sure data upload before executing compute shader
...
Use read d3d12 map, so that upload can happen if needed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093 >
2024-06-24 20:49:19 +09:00
Seungha Yang
245e15eab0
d3d12: Add ARGB64_LE format support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093 >
2024-06-24 20:11:21 +09:00
Seungha Yang
8c538c8122
d3d12: Add AV12 format support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093 >
2024-06-24 20:11:13 +09:00
Seungha Yang
2703f41da6
d3d12: Add NV16, NV61, and NV24 format support
...
Can reuse NV12 shader for the formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093 >
2024-06-24 20:10:50 +09:00
Seungha Yang
bb0f95a67f
d3d12: Add A420, A422 and A444 format support
...
Adding A420/A422/A444 and its 10/12/16 bits format support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093 >
2024-06-24 20:10:50 +09:00
Seungha Yang
52bc28c93d
d3d12: Add YUV 4:1:0 and 4:1:1 format support
...
Adding Y41B, YUV9, and YVU9 format support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093 >
2024-06-24 20:10:50 +09:00
Seungha Yang
25514c8fc1
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 >
2024-06-23 22:30:40 +09:00
Seungha Yang
c1498851b3
d3d12: Add support for UYVY, VYUY, and YVYU
...
Use already implemented compute shaders
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092 >
2024-06-23 22:30:40 +09:00
Seungha Yang
6fcb5f6ae7
d3d12: Add RGB{16,15} and BGR{16,15} format support
...
d3d12 device can support B5G6R5_UNORM and B5G5R5A1_UNORM formats
in pixel shader. If the format is not supported by device,
U16_UINT format with compute shader will be used, like d3d11converter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092 >
2024-06-23 22:30:40 +09:00
Seungha Yang
94bb9fec58
d3d12: Add BGRA64 and BGR10A2 format support
...
Map BGRA64 and BGR10A2 to Y416 and Y410, respectively,
since it's possible RGB space decoder output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092 >
2024-06-23 22:30:30 +09:00
Seungha Yang
66cc3ff84e
d3d12: Add support for DXGI native packed YUV formats
...
Adding YUY2, Y210, Y216, and Y416 format support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092 >
2024-06-23 22:11:32 +09:00
Seungha Yang
dd4d85272e
d3d12converter: Fix Y410 conversion
...
Adding format conversion helper and use compute shader in case that
output format does not support RTV.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7088 >
2024-06-23 10:53:18 +00:00
Seungha Yang
f432e61bdc
d3d12memory: Add support for UAV descriptor cache
...
Cache shader invisible UAV descriptor in memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7088 >
2024-06-23 10:53:18 +00:00
Seungha Yang
ec06b0445e
d3d12: Format table refactoring
...
Hide format table from header. This is a preparation for compute
shader based format support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7088 >
2024-06-23 10:53:18 +00:00
Seungha Yang
5d18d8a109
d3d12converter: Upload shader buffer resources earlier
...
Schedule (semi-)static resource upload at converter creation time.
And use single resource for all vertex, index, and constant
buffers, since separate resources will waste GPU memory.
Note that size and address of a committed resource are 64K aligned
even if requested buffer size is small.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7081 >
2024-06-21 20:16:19 +09:00
Seungha Yang
c5785fbeec
d3d12converter: Make gamma remap work as intended
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7073 >
2024-06-20 17:54:12 +00:00
Seungha Yang
e90880e988
d3d12device: Don't warn for out of range device index
...
It can happen during enumeration as well, and it's expected error
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7070 >
2024-06-20 14:23:13 +00:00
Seungha Yang
2983c50a9f
d3d12device: Dump device feature support
...
... and use CD3DX12FeatureSupport helper class in d3dx12.h
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7070 >
2024-06-20 14:23:13 +00:00
Seungha Yang
bdb12db5c6
d3d12device: Prevent too many in-flight GPU commands
...
Even if each element is checking its own in-flight commands,
total number of commands can get larger in case of complex pipeline.
Limits total number of in-flight commands at command queue level
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7066 >
2024-06-20 00:58:45 +09:00
Seungha Yang
143efa2f86
d3d12commandqueue: Detect device removed event
...
Early return if device removed event is detected
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7066 >
2024-06-20 00:07:41 +09:00
Seungha Yang
2ec7d82bd7
d3d12: Move fence setter helper method to gst-libs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057 >
2024-06-19 13:19:48 +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
49c4247cb3
d3d12device: Add helper method for getting fence handle
...
Add get_fence_handle() method so that caller can get command queue's
dedicated fence handle from device
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