Víctor Manuel Jáquez Leal
0f8f2d0057
vkformat: add gst_vulkan_format_get_map function
...
This will be used later to compare the format selected by
gst_vulkan_format_from_video_info_2(), to verify if it's multiple memory buffer
or not.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6798 >
2024-07-11 20:28:04 +02:00
Víctor Manuel Jáquez Leal
2d17bba6f1
vkimagebufferpool: define a default usage
...
Define a default usage and use it instead of repeating the same bitwise
addition.
Therefore, when usage is defined as zero, the usage is defined with the
format's supported usage and the default usage, now without the storage
bit, but with color and input attachment bits.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6798 >
2024-07-11 10:52:19 +02:00
Víctor Manuel Jáquez Leal
b1eebec485
vkformat: unward G8_B8R8_2PLANE_420_UNORM
...
Since it exists since VK_VERSION_1_1. It should be ignored by usage flags or the
no_multiplane parameter.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6798 >
2024-07-11 10:52:19 +02:00
Nirbheek Chauhan
8619e163bf
vk-video: Fix uint64_t string format errors
...
With clang on macOS:
```
error: format specifies type 'long' but the argument has type 'uint64_t' (aka 'unsigned long long')
...
error: format specifies type 'unsigned long' but the argument has type 'VkImageView' (aka 'unsigned long long')
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091 >
2024-07-07 13:20:12 +00:00
Nirbheek Chauhan
156a016313
meson: Find MoltenVK with the objc++ compiler everywhere
...
When building for iOS in Cerbero, as of MoltenVK SDK 1.3.283, we have
to statically link to libMoltenVK since it no longer ships a dylib.
This requires linking to libc++, so we find the dep with the objc++
compiler to ensure that meson uses the right linker.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091 >
2024-07-07 13:20:12 +00:00
Nirbheek Chauhan
5ed3e045d8
meson: Fix vulkan library build on iOS
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091 >
2024-07-07 13:20:12 +00:00
Nirbheek Chauhan
5c41d387e3
meson: Use / instead of join_paths for vulkan
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091 >
2024-07-07 13:20:12 +00:00
Nirbheek Chauhan
54a6643986
meson: Fix automagic dependency checks in gstvulkan
...
Windowing, in particular, was getting silently disabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091 >
2024-07-07 13:20:12 +00:00
Stéphane Cerveau
a4c976dd20
vkdecoder: support layered and non dedicated DPB
...
As NVIDIA Amperium. In this case the each output buffer is also a DPB,
but using a different view layer.
Still pending a validation layer issue:
VUID-VkVideoBeginCodingInfoKHR-flags-07244
Co-authored-by: Victor Jaquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6954 >
2024-06-19 10:37:32 +00:00
Stéphane Cerveau
f40d947c4a
vkoperation: support for query_result_status
...
query_result_status can be optional so we should not create
the query pool if the queue does not support it,
ie, AMD does not support VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR
In other use case such as VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR, the
query pool must be created.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7043 >
2024-06-18 12:13:41 +00:00
Stéphane Cerveau
71ebb20267
vkphysicaldevice: rename query to query_result_status
...
As only queryResultStatusSupport can be optional,
the variable name should be more specific.
queryResultStatusSupport reports VK_TRUE if query type
VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR and use of
VK_QUERY_RESULT_WITH_STATUS_BIT_KHR are supported.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7043 >
2024-06-18 12:13:41 +00:00
Matthew Waters
050c622b7f
vulkan/swapper: expose choose_queue() in docs
...
It was missing a doc trigraph.
Also mark input queue argument as nullable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7023 >
2024-06-12 23:37:58 +10:00
Stéphane Cerveau
fe737fc274
vulkan: fix macos build
...
The VulkanSDK can be downloaded from LunarG website and can
be installed properly in /usr/local following:
https://vulkan.lunarg.com/doc/view/latest/mac/getting_started.html
Fixes partly #2372
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6669 >
2024-06-07 03:16:26 +00:00
Matthew Waters
b6d03432b4
vulkan/fullscreenquad: add check for unset video info
...
So we don't crash when set_info() is not called.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7000 >
2024-06-07 01:44:32 +00:00
Matthew Waters
e925f22f33
vulkan/fullscreenquad: allow setting NULL input/output buffer to unset
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7000 >
2024-06-07 01:44:32 +00:00
Stéphane Cerveau
a17957a7c8
vulkan: remove remaining GST_VULKAN_HAVE_VIDEO_ENCODERS
...
Some define use have been forgotten in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6992
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7001 >
2024-06-06 10:32:51 +00:00
Stéphane Cerveau
21ee264d65
vulkan: remove GST_VULKAN_HAVE_VIDEO_ENCODERS
...
Use 2.3.275 as first supported SDK version
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6992 >
2024-06-05 17:50:27 +00:00
Stéphane Cerveau
b9633cb766
vkqueue: remove useless decoder include
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6992 >
2024-06-05 17:50:26 +00:00
Matthew Waters
013026b06a
vulkan/videofilter: add getters for queue/device/instance
...
Allows bindings to not pke at structs for this information.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6987 >
2024-06-03 00:06:18 +10:00
Matthew Waters
a7a70ca7b6
vulkan/fullscreenquad: add get_queue()
...
Allows bindings to not poke at the instance struct.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6987 >
2024-06-03 00:06:18 +10:00
Matthew Waters
5e182c911c
vulkan/fullscreenquad: mark set_info GstVideoInfo as const
...
It's not modified by the function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6987 >
2024-06-03 00:06:18 +10:00
Matthew Waters
346df4cb3f
vulkan: support not having glslc available for building vulkan plugin
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6980 >
2024-06-01 12:41:49 +00:00
Stéphane Cerveau
7bbf5fd801
vkutils: do not forget to clear context in case of error
...
The context is leaking in case of a failing instance open.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6975 >
2024-05-31 14:44:09 +00:00
Stéphane Cerveau
c3f3fd7351
vkerror: free the error string after usage
...
g_set_error already used the var string, can clear it now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6975 >
2024-05-31 14:44:09 +00:00
Víctor Manuel Jáquez Leal
e913b4870a
vkformat: try UNORM format first and decouple them from colorimetry
...
From the spec (chapter 34, v1.3.283):
````
UNORM: the components are unsigned normalized values in the range [0, 1]
SRGB: the R, G and B components are unsigned normalized value that represent
values using sRGB nonlinear encoding, while the A component (if one
exists) is a regular unsigned normalized value
```
The difference is the storage encoding, the first one is aimed for image
transfers, while the second is for shaders, mostly in the swapchain stage in the
pipeline, and it's done automatically if needed [1].
As far as I have checked, other frameworks (FFmpeg, GTK+), when import or export
images from/to Vulkan, use exclusively UNORM formats, while SRGB formats are
ignored.
My conclusion is that Vulkan formats are related on how bits are stored in
memory rather their transfer functions (colorimetry).
This patch does two interrelated changes:
1. It swaps certain color format maps to try first, in both
gst_vulkan_format_from_video_info() and gst_vulkan_format_from_video_info_2(),
the UNORM formats, when comparing its usage, and later check for SRGB.
2. It removes the code that check for colorimetry in
gst_vulkan_format_from_video_info_2(), since it not storage related.
1. https://community.khronos.org/t/noob-difference-between-unorm-and-srgb/106132/7
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6797 >
2024-05-23 17:41:30 +00:00
Stéphane Cerveau
73c64e8182
tests: add vulkan H.265 encode
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6676 >
2024-05-03 19:40:17 +00:00
Stéphane Cerveau
5320514076
tests: add Vulkan H.264 encode
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6676 >
2024-05-03 19:40:16 +00:00
Víctor Manuel Jáquez Leal
1b1593568f
vkencoder: add gstvkencoder helper object
...
Add a gstvkencoder class to support Vulkan encoder such as H26X
formats.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6676 >
2024-05-03 19:40:16 +00:00
Stéphane Cerveau
ddb9b9d9ca
vkdecoder: change dstmask in decoder frame barrier
...
Use of VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT instead of
specific VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
Fix for VUID-vkCmdPipelineBarrier2-srcStageMask-03849
pDependencyInfo->pImageMemoryBarriers[0].srcStageMask
(VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR) is not compatible with
the queue family properties
(VK_QUEUE_GRAPHICS_BIT|VK_QUEUE_COMPUTE_BIT|VK_QUEUE_TRANSFER_BIT|
VK_QUEUE_SPARSE_BINDING_BIT|VK_QUEUE_PROTECTED_BIT) of this
command buffer. The Vulkan spec states: The srcStageMask member
of any element of the pMemoryBarriers, pBufferMemoryBarriers, or
pImageMemoryBarriers members of pDependencyInfo must only
include pipeline stages valid for the queue family that was
used to create the command pool that commandBuffer was allocated
from (
https://www.khronos.org/registry/vulkan/specs/1.3-extensions/
html/vkspec.html#VUID-vkCmdPipelineBarrier2-srcStageMask-03849)
The frame barrier should use a compatible srcStageMask for all
the queues.
Remove reset_pipeline_stage_mask as it is redundant
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6780 >
2024-05-02 18:07:25 +00:00
Víctor Manuel Jáquez Leal
1f080391ed
vulkan: replace gst_vulkan_queue_create_decoder() with gst_vulkan_decoder_new_from_queue()
...
The purpose of this refactor is to hide decoding code from public API.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6723 >
2024-04-26 16:24:22 +00:00
Víctor Manuel Jáquez Leal
18c32272bd
vulkan: conceal unused decoder symbols
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6723 >
2024-04-26 16:24:22 +00:00
Víctor Manuel Jáquez Leal
668b395a38
vulkan: conceal decoder from public API
...
Since we don't want to expose video decoding API outside of GStreamer, the
header is removed from installation and both source files are renamed as
-private.
The header must remain in gst-libs because is referred by GstVulkanQueue,
which's the decoder factory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6723 >
2024-04-26 16:24:22 +00:00
Víctor Manuel Jáquez Leal
d2c8593b2e
vkswapper: choose color space according with format
...
The swapper surfaces contains the color space for each supported format. Instead
of hard coding the color space, it returns the value associated with the
negotiated vulkan format.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6725 >
2024-04-24 13:53:18 +00:00
Chris Spencer
c6a3b2ab85
vkbufferpool: correct usage flags type
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6514 >
2024-04-03 09:36:44 +00:00
Víctor Manuel Jáquez Leal
b18483a563
vulkan: sink references at instantiation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6398 >
2024-04-03 08:48:25 +00:00
Chris Spencer
1032d58187
vkmemory: invalidate non-coherent memory when mapping for read
...
Mapping non-coherent memory does not implicitly invalidate the host caches.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6310 >
2024-03-11 01:55:44 +00:00
Chris Spencer
9412565221
vulkan/operation: use timeline semaphore fallback if sync2 not supported
...
gst_vulkan_operation_add_dependency_frame does not fall back to the
timeline semaphore implementation if VK_KHR_synchronization2 is compiled
in, but not supported by the driver.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6309 >
2024-03-11 00:58:40 +00:00
Chris Spencer
7701e9ffeb
vulkan/operation: add missing unlock
...
gst_vulkan_operation_add_dependency_frame does not release its lock if
support for VK_KHR_timeline_semaphore/VK_KHR_synchronization2 is compiled
in, but not supported by the driver.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6309 >
2024-03-11 00:58:40 +00:00
Víctor Manuel Jáquez Leal
2011dec249
vulkan/decoder: fix documentation generation
...
GstVulkanDecoderParameters is an union, not a struct, and that isn't handled by
hotdoc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6089 >
2024-02-10 17:17:23 +00:00
Víctor Manuel Jáquez Leal
f0c5a853a6
vulkan/decoder: don't initialize function table once
...
Since it has to be associated with the device and it gets destroyed when the
decoder is freed.
Now it's created when the decoder starts and it's flagged.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6089 >
2024-02-10 17:17:23 +00:00
Víctor Manuel Jáquez Leal
c760c72f7a
vkformat: fetch correctly feature flags2
...
Feature flags2 are fetch through VkFormatProperties3KHR and needs more guards
checking.
Moved out all the feature flags fetching to another function for clarity.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6014 >
2024-01-30 12:57:41 +00:00
Víctor Manuel Jáquez Leal
c24b47ecee
vkformat: use VK_KHR_get_physical_device_properties2 to guard
...
and VK_KHR_format_feature_flags2 rather than a meaningless version handling.
Also the patch brings back the usage of features2 for video extensions, use KHR
version to support the guarded symbols.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6014 >
2024-01-30 12:57:41 +00:00
Víctor Manuel Jáquez Leal
394aaa6a59
vulkan: early return if gst_buffer_pool_set_config() fails
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6013 >
2024-01-30 11:58:04 +00:00
Nicolas Dufresne
0b38cb2320
vulkan: Fix clang compiler warning
...
clang does not like the array index assignment without the `=` sign in
it. This is a gnu extension I believe, and adding the sign is proper.
This fixes the following two warnings:
```
../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideo-private.c:32:40:
warning: use of GNU 'missing =' extension in designator [-Wgnu-designator]
[GST_VK_VIDEO_EXTENSION_DECODE_H264] {
^
=
../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideo-private.c:36:40:
warning: use of GNU 'missing =' extension in designator [-Wgnu-designator]
[GST_VK_VIDEO_EXTENSION_DECODE_H265] {
^
=
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5996 >
2024-01-26 16:42:30 +00:00
Stéphane Cerveau
dd6fca1d02
vulkan video: add GST_VK_VIDEO_EXTENSIONS enum
...
To avoid using mysterious value, use an enum to
show the valid value in _vk_codec_extensions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5922 >
2024-01-24 17:00:47 +00:00
Matthew Waters
f50b43c83b
vulkan/format: also get features in the fallback case
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5576 >
2024-01-24 13:54:41 +00:00
Matthew Waters
634fc913a6
vulkan/format: don't assign an uneeded boolean
...
We don't actually need the basics_primary/secondary boolean. The
returned format is decided by the requested usage with fallbacks as
necessary.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5576 >
2024-01-24 13:54:41 +00:00
Matthew Waters
420548a6c6
vulkan/format: there is no current need to use the 64-bit feature flags
...
All of our feature flags are currently covered by the first
VkFormatFeatureFlag enum so far.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5576 >
2024-01-24 13:54:41 +00:00
Matthew Waters
080b25cbfe
vulkan/format: correct fallback features in from_video_info_2
...
The features were not actually used and were written into a boolean
value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5576 >
2024-01-24 13:54:41 +00:00
Chris Spencer
2388932767
vkmemory: don't map memory more than once
...
vkMapMemory may not be called on a memory object that is already
host-mapped. If the gstreamer memory object is mapped more than once then
reuse the existing Vulkan mapping.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5917 >
2024-01-16 17:44:48 +01: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
Scott Moreau
f0d15f335d
gst-launch: accept option to set program name
...
The option --prog-name="PROGRAM-NAME" can be passed to set the program name.
The program name is used by gtk and gstreamer to set the class or app-id.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5263 >
2024-01-12 17:11:11 +00:00
Stéphane Cerveau
476c7efcb7
vulkan: decoder: create union for profile usage
...
As a profile can include a VkVideoDecodeUsageInfoKHR
or VkVideoEncodeUsageInfoKHR, use union to separate the both.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5701 >
2024-01-10 17:15:12 +00:00
Stéphane Cerveau
15b719d7f6
vkbufferpool: add support for video encoded buffers
...
Add support for non video raw buffers to allocate memory
such as in encoded content scenario.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5645 >
2023-11-21 19:16:37 +00:00
Stéphane Cerveau
c6a5437e0d
vkbufferpool: allow to set allocation params
...
Add the possibility to change the vulkan usage and mem properties from
external source.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5645 >
2023-11-21 19:16:37 +00:00
Stéphane Cerveau
159f24c07f
vulkan: use gst_vulkan_device_select_queue
...
Use gst_vulkan_device_select_queue api to retrieve a valid queue
in vkupload, vkdownload, vkimagebufferpool, and vkvideofilter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5656 >
2023-11-21 13:51:21 +00:00
Stéphane Cerveau
74c6298eb7
vkdevice: select queue with expected flags
...
Allow to select a queue with the given flags
such as compute bit etc from a given device.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5656 >
2023-11-21 13:51:21 +00:00
Víctor Manuel Jáquez Leal
5bece78ca2
vkqueue: add decoder factory
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:20 +00:00
Víctor Manuel Jáquez Leal
4f475732bd
vkdecoder: add gstvkdecoder helper object
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:20 +00:00
Víctor Manuel Jáquez Leal
8ee3ec105c
vkvideo-private: video structures and session handle
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:20 +00:00
Stéphane Cerveau
96daac8ac7
vkvideoutils: add GstVulkanVideoOperation enum
...
To differentiate a video/x-h264 caps use with a decoder or an encoder
and get the correct video profile, the API expects an enum
GstVulkanVideoOperation to handle this difference.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:20 +00:00
Víctor Manuel Jáquez Leal
8ee0f04d8d
vkvideoutils: add dec postfix to profiles
...
So it the future don't collide with encoding profiles.
Original-patch-by: Stéphane Cerveau <scerveau@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:20 +00:00
Víctor Manuel Jáquez Leal
bf7a01f3fd
vkvideoutils: add video capabilities structure
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:19 +00:00
Víctor Manuel Jáquez Leal
8023e3c19a
vkvideoutils: add gst_vulkan_video_profile_is_equal()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:19 +00:00
Víctor Manuel Jáquez Leal
13d78652b7
vkvideoutils: add gst_vulkan_video_profile_is_valid()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:19 +00:00
Víctor Manuel Jáquez Leal
f896e2a347
vkvideoutils: add VkVideoDecodeUsageInfoKHR in profile
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:19 +00:00
Víctor Manuel Jáquez Leal
fd1b1332b7
vkvideoutils: if unknown codec nullify pNext
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:19 +00:00
Víctor Manuel Jáquez Leal
d5036e4429
vkvideoutils: mark as private members of profile structure
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:19 +00:00
Víctor Manuel Jáquez Leal
e3054056ff
vkimagebufferpool: set image's number of layers
...
Handle the image's number of layers as configuration so it can be set by the
user, still isn't exposed as function since it's very niche.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:19 +00:00
Stéphane Cerveau
d52d50570e
vkmemory: avoid the property flag check
...
During the video session memory allocation, the property flags can
be different from the expected ones, so do not expect all the
property flags and test it with G_MAXUINT32
It's failing with driver 525.47.26 and NVidia HW NVIDIA GeForce
RTX 3050 and 2060
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850 >
2023-11-20 13:32:19 +00:00
Víctor Manuel Jáquez Leal
43ce583460
vulkan/operation: wait for pending objects at reset
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5591 >
2023-11-10 16:36:44 +01:00
Víctor Manuel Jáquez Leal
0296c8a53a
vulkan/operation: get query only if a operation is submitted
...
To avoid a validation error if get query is performed before.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5591 >
2023-11-10 16:36:44 +01:00
Víctor Manuel Jáquez Leal
3464710bf0
vulkan/operation: remove stored fences at the end
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5591 >
2023-11-10 16:36:44 +01:00
Víctor Manuel Jáquez Leal
405ae91ed7
vulkan/operation: don't fail if extension isn't available
...
gst_vulkan_operation_add_dependency_frame() is a noop if the required extensions
aren't available.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5591 >
2023-11-10 16:36:44 +01:00
Matthew Waters
d20d94cc48
vkformat: also use the correct srgb vs unorm when using older
...
gst_video_info_from_video_info()
Fixes sRGB colorspace chosen by GstVulkanSwapper and therefore used for
display.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5316 >
2023-10-27 09:13:18 +00:00
Víctor Manuel Jáquez Leal
a2f875251f
vkimagebufferpool: use GstVulkanOperation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079 >
2023-10-26 07:26:23 +00:00
Víctor Manuel Jáquez Leal
265f1274dc
vkoperation: synchronization helper object
...
An operation is an arbitrary amount of work to be executed on the host, a
device, or an external entity such as a presentation engine.
The purpose of this object is to help on the operation's synchronization
through declaring explicit execution dependencies, and memory dependencies
between two sets of operations defined by the command’s two synchronization
scopes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079 >
2023-10-26 07:26:22 +00:00
Víctor Manuel Jáquez Leal
c83c508c5e
vulkan: add a timeline semaphore per image
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079 >
2023-10-26 07:26:22 +00:00
Víctor Manuel Jáquez Leal
964aec54b4
vkbarrier: Use guint64 for VkFlags and VkFlags2
...
While VkPipelineStageFlags is an enum (arguably backed as uint32 in 32bit
platforms), VkPipelineStageFlags2 is a redefinition of guint64; likewise for
VkAccessFlags and VkAccessFlags2.
This patch types both members in GstVulkanBarrierMemoryInfo as guint64 for
compatibility, so it could be used with or without synchronization2 vulkan
extension.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079 >
2023-10-26 07:26:22 +00:00
Víctor Manuel Jáquez Leal
8809ce5648
vkmemory: unref queue in barriers
...
Queue might be assigned for queue transfers, so we need to unref it if the
memory has been assigned to a specific queue.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079 >
2023-10-26 07:26:22 +00:00
Víctor Manuel Jáquez Leal
5acd6c23b8
vkdevice: use macro VK_KHR_synchronization2 as guard
...
Instead of (defined(VK_VERSION_1_3) || (defined(VK_VERSION_1_2) && VK_HEADER_VERSION >= 170))
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079 >
2023-10-26 07:26:22 +00:00
Matthew Waters
48ab457d79
vulkan/physical-device: don't assume that queue_family_ops is filled
...
On old enough vulkan (< 1.2), we will never retrieve the family operations and
will perform a NULL pointer dereference when dumping the queue family op
properties.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5547 >
2023-10-25 16:38:06 +11:00
Jordan Petridis
9f3b8c9366
vkwindow_xcb: Make the visible private field a guint
...
This field is used to store gbooleans (which are ints) but if it's
a :1 bit depth assigning ints to it changes it's value as the only
valid values are -1 and 0.
Make it a guint instead so the cast would be correct.
```
../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.c:151:25: error:
implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1
[-Werror,-Wsingle-bit-bitfield-constant-conversion]
window_xcb->visible = TRUE;
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5432 >
2023-10-23 10:43:52 +05:30
Víctor Manuel Jáquez Leal
b7ded81f7b
vkbufferimagepool: short circuit usage for decoding
...
NVIDIA & RADV drivers don't report decoding features for color format. Setting
requested usage to zero to short circuit validation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5288 >
2023-09-08 18:11:55 +02:00
Matthew Waters
9d79852890
vkformat: assume that unknown rgb transfer is sRGB
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5288 >
2023-09-08 16:09:33 +00:00
Matthew Waters
b82a402bf1
vkformat: also check configured usage flags
...
This does also mean that if the primary format fails this check, we need
to try the secondary format before returning an error
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2957
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5288 >
2023-09-08 16:09:33 +00:00
Matthew Waters
4d3b03e8e8
vkformat: invert srgb and multiplane && planes > 1 checks
...
The primary format for RGB includes sRGB transfer but was not actually
being used.
The !(no_multiplane && planes > 1) check for YUV resulted in those
formats never being used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5288 >
2023-09-08 16:09:33 +00:00
Matthew Waters
8a9d630e3b
vkformat: FORMAT_FEATURE_COLOR_ATTACHMENT also includes INPUT_ATTACHMENT
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5288 >
2023-09-08 16:09:33 +00:00
Matthew Waters
6c534655d4
vkformat: reorder RGBA formats before RGBx formats
...
Fixes gst_vulkan_format_to_video_format to use the RGBA formats instead
of RGBx formats.
Fixes vulkansink exposing a RGBx/BGRx format instead of the more
relevant RGBA/BGRA formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5288 >
2023-09-08 16:09:33 +00:00
Stéphane Cerveau
c98f5c2bf4
vkvideoutils: fix memory leak in structure's string
...
Retrieve a const char* from structure for "chromat-format" and
avoid extra mem copy.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4904 >
2023-06-22 04:42:58 +00:00
Stéphane Cerveau
fc0ee45fb5
vkdevice: fix beta extensions symbol
...
Missing 's' to VK_ENABLE_BETA_EXTENSIONS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4904 >
2023-06-22 04:42:58 +00:00
Stéphane Cerveau
c1149d60c1
vkphysicaldevice: fix leak with queue_family_query_props
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4904 >
2023-06-22 04:42:58 +00:00
Stéphane Cerveau
6920166af4
vulkan: fix C2099 error with VS2019
...
As VK_FORMAT_FEATURE_2_xxx are defined as static const variable, the
vscoce C compiler prevents the initialization of the vk_usage_map
structure with error "C2099: initializer is not a constant".
Init the structure separately.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4904 >
2023-06-22 04:42:58 +00:00
Víctor Manuel Jáquez Leal
06d793033d
vulkan/format: use basic features (v1) as fallback
...
if vkGetPhysicalDeviceFormatProperties2 isn't available.
This approach assumes that, for basic features flags symbols,
VkFormatFeatureFlagBits and VkFormatFeatureFlagBits2 are binary equivalent.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4746 >
2023-06-01 13:58:47 +00:00
Matthew Waters
0a74a967e3
vulkan/format: don't rely on vulkan header version for function availability
...
e.g. android will have update vulkan.h headers but old platforms will
not contain the function and will result in a link error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4746 >
2023-06-01 13:58:47 +00:00
Víctor Manuel Jáquez Leal
8b75e5fb57
vkvideoutils: fix code-style
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4716 >
2023-05-26 10:08:27 +02:00
Víctor Manuel Jáquez Leal
365454790a
vkphysicaldevice: fetch queue family query result support
...
And merged in a single structure the queue family operations report.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4716 >
2023-05-26 10:08:27 +02:00
Víctor Manuel Jáquez Leal
e2a40c58bf
vkimagebufferpool: chain the correct structure
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4716 >
2023-05-26 09:45:07 +02:00
Víctor Manuel Jáquez Leal
e9414b9582
vkvideoutils: fix bug for chroma string comparison
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4716 >
2023-05-26 09:45:07 +02:00
Víctor Manuel Jáquez Leal
8670a023f1
vkimagebufferpool: prepare new allocated buffers
...
This means change initial memory undefined layout and access to the ones
required for their usage.
This is only used if VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME is available.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351 >
2023-05-19 04:26:30 +00:00