Commit Graph

110863 Commits

Author SHA1 Message Date
Lynne
d386988c39 vulkan: use device properties 2 and add a convenience loader function 2023-05-29 00:41:46 +02:00
Lynne
bf69a64135 vulkan: add size tracking to buffer structs 2023-05-29 00:41:46 +02:00
Lynne
b18e20a4ee vulkan: do not wait for device idle when destroying buffers
This should be done explicitly.
2023-05-29 00:41:45 +02:00
Lynne
15de0af8f0 vulkan: allow alloc pNext in ff_vk_create_buf 2023-05-29 00:41:45 +02:00
Lynne
af48790465 vulkan: support ignoring memory properties when allocating 2023-05-29 00:41:45 +02:00
Lynne
3c2f43d8ee vulkan: expose ff_vk_alloc_mem() 2023-05-29 00:41:44 +02:00
Lynne
fa67ccee37 vulkan: add ff_vk_image_create() 2023-05-29 00:41:44 +02:00
Lynne
e8fce74abf vulkan: add ff_vk_qf_fill() 2023-05-29 00:41:43 +02:00
Lynne
b5e333bba7 vulkan: add pNext argument to ff_vk_create_buf() 2023-05-29 00:41:43 +02:00
Lynne
a0d47a2ad9 vulkan: fix comment statement about exec_queue blocking 2023-05-29 00:41:43 +02:00
Lynne
619b1265a2 vulkan: add additional error codes 2023-05-29 00:41:42 +02:00
Lynne
0c9c0e40fb vulkan: define VK_NO_PROTOTYPES
This just disables the vulkan headers from defining any symbols
like vkCmdPipelineBarrier2(). Instead, all functions must be loaded
via the loader and used as function pointers as vk->CmdPipelineBarrier2.

Mostly just forces developers to write correct code, as using the
symbols can be undesirable in case API users define their own
function wrappers via the loader API.
2023-05-29 00:41:42 +02:00
Lynne
92ddd415bc vulkan: lock queues before submitting operations 2023-05-29 00:41:42 +02:00
Lynne
9b385b480f hwcontext_vulkan: enable GPU-assisted validation when debugging 2023-05-29 00:41:41 +02:00
Lynne
e5e12c5078 hwcontext_vulkan: load query-related functions
Needed for both encoding and decoding.
2023-05-29 00:41:41 +02:00
Lynne
d4cb48dd00 hwcontext_vulkan: support PREP_MODE_DECODING in prepare_frame() 2023-05-29 00:41:41 +02:00
Lynne
6dfa29a58d hwcontext_vulkan: add functions for video decoding 2023-05-29 00:41:40 +02:00
Lynne
571756bf2f hwcontext_vulkan: use VK_EXT_physical_device_drm to derive DRM to Vulkan
Finally, a way to directly identify a Vulkan device from a DRM device!
2023-05-29 00:41:40 +02:00
Lynne
e11fd1abdb hwcontext_vulkan: do not require libdrm to map VAAPI devices
VAAPI is sadly on the way of becoming multiplaform.
2023-05-29 00:41:39 +02:00
Lynne
f50bc930a4 hwcontext_vulkan: add support for descriptor buffers 2023-05-29 00:41:39 +02:00
Lynne
c5702abf71 hwcontext_vulkan: report nonCoherentAtomSize 2023-05-29 00:41:39 +02:00
Lynne
b0af92572f hwcontext_vulkan: fix minor type issue in VulkanQueueCtx.buf_deps_alloc_size 2023-05-29 00:41:38 +02:00
Lynne
211c910aca hwcontext_vulkan: rename and expand vk_pixfmt_map to append VK_NULL_FORMAT 2023-05-29 00:41:38 +02:00
Lynne
e0f2d2e702 hwcontext_vulkan: remove contiguous memory path/mode
The hack was added to enable exporting of vulkan images to DRM.
On Intel hardware, specifically for DRM images, all planes must be
allocated next to each other, due to hardware limitation, so the hack
used a single large allocation and suballocated all planes from it.

By natively supporting multiplane images, the driver is what decides
the layout, so exporting just works.

It's a hack because it conflicted heavily with image allocation, and
with the whole ecosystem in general, before multiplane images were
supported, which just made it redundant.

This is also the commit which broke the hwcontext hardest and prompted
the entire rewrite in the first place.
2023-05-29 00:41:37 +02:00
Lynne
46a77c6496 hwcontext_vulkan: support threadsafe queue and frame operations 2023-05-29 00:41:37 +02:00
Lynne
2a1fd2814f hwcontext_vulkan: use portability subset if available 2023-05-29 00:41:37 +02:00
Lynne
74b202b839 hwcontext_vulkan: enable VK_KHR_synchronization2 if supported 2023-05-29 00:41:36 +02:00
Lynne
fddfb0ebf8 hwcontext_vulkan: enable support for YCbCr samplers 2023-05-29 00:41:36 +02:00
Lynne
59707cc485 hwcontext_vulkan: initialize and require instance version 1.3
This just bumps the required loader library version (libvulkan).
All device-related features, such as video decoding, atomics, etc.
are still optional and the code deals with their loss on a local level
(e.g. the decoder or filter checks for the features it needs, not
the hwcontext).

Bumping the required version essentially packs all maintenance
extensions which correct the spec rather than requiring to enable
them individually.
2023-05-29 00:41:36 +02:00
Lynne
934525eae0 lsws: add in/out support for the new 12-bit 2-plane 422 and 444 pixfmts 2023-05-29 00:41:35 +02:00
Lynne
0bda3340a3 lavu: add 12-bit 2-plane 422 and 444 pixel formats 2023-05-29 00:41:35 +02:00
Lynne
21719c29a2 hevc_ps: expose sps_extension_present_flag 2023-05-29 00:41:35 +02:00
Lynne
8b2d46ee3d hevc_ps: expose conformance_window_flag 2023-05-29 00:41:34 +02:00
Lynne
cc5fab5c48 hevc_ps: expose sublayer_ordering_info_flag 2023-05-29 00:41:34 +02:00
Lynne
32fcb17e42 hevc_ps: expose vui_present flag 2023-05-29 00:41:33 +02:00
Lynne
f58db8e534 hevc_ps: expose rps fields 2023-05-29 00:41:33 +02:00
Lynne
abdd87d44e hevc_ps: expose log2_diff_max_min_transform_block_size 2023-05-29 00:41:33 +02:00
Lynne
6eaca2abd8 hevcdec: expose bits_used_for_short_term_rps 2023-05-29 00:41:32 +02:00
Lynne
4e1f3ab184 hevc_ps: expose pps_extension_present_flag 2023-05-29 00:41:32 +02:00
Lynne
d0b02c3aff hevc_ps: expose vps_id 2023-05-29 00:41:31 +02:00
Lynne
3bc866159c hevc_ps: expose pps_id 2023-05-29 00:41:31 +02:00
Lynne
fc429d785e hevc_ps: expose SPS and VPS headers 2023-05-29 00:41:31 +02:00
Lynne
20de09a6de h264_ps: expose scaling_matrix_present_mask
Vulkan requires it.
It technically also requires use_default_scaling_matrix_mask,
but we can just be explicit and give it the matrix we fill in as-non
default.
2023-05-29 00:41:30 +02:00
Lynne
d13b1c42f6 h264_ps: expose bit rate and CPB size fields 2023-05-29 00:41:30 +02:00
Lynne
de6fce727c h264_ps: expose max_dec_frame_buffering 2023-05-29 00:41:30 +02:00
Lynne
1f66e3347d h264_ps: comment pic_order_present better
The official name which CBS uses is bottom_field_pic_order_in_frame_present_flag.
2023-05-29 00:41:29 +02:00
Lynne
6718b37e5d h264_ps: set pic_scaling_matrix_present_flag 2023-05-29 00:41:29 +02:00
Lynne
02f38af2dd h264_ps: expose pps_id 2023-05-29 00:41:29 +02:00
Lynne
317fa3bd1d h2645_vui: expose aspect_ratio_info_present_flag 2023-05-29 00:41:28 +02:00
Lynne
dc2694557d h2645_vui: expose aspect_ratio_idc 2023-05-29 00:41:28 +02:00