FFmpeg
|
#include <stdatomic.h>
#include "thread.h"
#include "pixdesc.h"
#include "bprint.h"
#include "hwcontext.h"
#include "vulkan_functions.h"
#include "hwcontext_vulkan.h"
Go to the source code of this file.
Data Structures | |
struct | FFVulkanDescriptorSetBinding |
struct | FFVkBuffer |
struct | FFVkQueueFamilyCtx |
struct | FFVkExecContext |
struct | FFVulkanDescriptorSet |
struct | FFVulkanShader |
struct | FFVulkanDescriptorSetData |
struct | FFVulkanShaderData |
struct | FFVkExecPool |
struct | FFVulkanContext |
Macros | |
#define | VK_NO_PROTOTYPES |
#define | INDENT(N) INDENT_##N |
#define | INDENT_0 |
#define | INDENT_1 INDENT_0 " " |
#define | INDENT_2 INDENT_1 INDENT_1 |
#define | INDENT_3 INDENT_2 INDENT_1 |
#define | INDENT_4 INDENT_3 INDENT_1 |
#define | INDENT_5 INDENT_4 INDENT_1 |
#define | INDENT_6 INDENT_5 INDENT_1 |
#define | C(N, S) INDENT(N) #S "\n" |
#define | GLSLC(N, S) |
#define | GLSLA(...) |
#define | GLSLF(N, S, ...) |
#define | GLSLD(D) |
#define | RET(x) |
#define | DUP_SAMPLER(x) { x, x, x, x } |
Enumerations | |
enum | FFVkShaderRepFormat { FF_VK_REP_NATIVE = 0, FF_VK_REP_FLOAT, FF_VK_REP_INT, FF_VK_REP_UINT } |
Returns the format to use for images in shaders. More... | |
Functions | |
static int | ff_vk_count_images (AVVkFrame *f) |
static const void * | ff_vk_find_struct (const void *chain, VkStructureType stype) |
static void | ff_vk_link_struct (void *chain, const void *in) |
int | ff_vk_init (FFVulkanContext *s, void *log_parent, AVBufferRef *device_ref, AVBufferRef *frames_ref) |
Initializes the AVClass, in case this context is not used as the main user's context. More... | |
const char * | ff_vk_ret2str (VkResult res) |
Converts Vulkan return values to strings. More... | |
int | ff_vk_mt_is_np_rgb (enum AVPixelFormat pix_fmt) |
Returns 1 if pixfmt is a usable RGB format. More... | |
VkImageAspectFlags | ff_vk_aspect_flag (AVFrame *f, int p) |
Get the aspect flag for a plane from an image. More... | |
const char * | ff_vk_shader_rep_fmt (enum AVPixelFormat pix_fmt, enum FFVkShaderRepFormat rep_fmt) |
int | ff_vk_load_props (FFVulkanContext *s) |
Loads props/mprops/driver_props. More... | |
int | ff_vk_qf_init (FFVulkanContext *s, FFVkQueueFamilyCtx *qf, VkQueueFlagBits dev_family) |
Chooses a QF and loads it into a context. More... | |
int | ff_vk_exec_pool_init (FFVulkanContext *s, FFVkQueueFamilyCtx *qf, FFVkExecPool *pool, int nb_contexts, int nb_queries, VkQueryType query_type, int query_64bit, const void *query_create_pnext) |
Allocates/frees an execution pool. More... | |
void | ff_vk_exec_pool_free (FFVulkanContext *s, FFVkExecPool *pool) |
FFVkExecContext * | ff_vk_exec_get (FFVulkanContext *s, FFVkExecPool *pool) |
Retrieve an execution pool. More... | |
VkResult | ff_vk_exec_get_query (FFVulkanContext *s, FFVkExecContext *e, void **data, VkQueryResultFlagBits flags) |
Performs nb_queries queries and returns their results and statuses. More... | |
int | ff_vk_exec_start (FFVulkanContext *s, FFVkExecContext *e) |
Start/submit/wait an execution. More... | |
int | ff_vk_exec_submit (FFVulkanContext *s, FFVkExecContext *e) |
void | ff_vk_exec_wait (FFVulkanContext *s, FFVkExecContext *e) |
int | ff_vk_exec_add_dep_buf (FFVulkanContext *s, FFVkExecContext *e, AVBufferRef **deps, int nb_deps, int ref) |
Execution dependency management. More... | |
int | ff_vk_exec_add_dep_bool_sem (FFVulkanContext *s, FFVkExecContext *e, VkSemaphore *sem, int nb, VkPipelineStageFlagBits2 stage, int wait) |
int | ff_vk_exec_add_dep_frame (FFVulkanContext *s, FFVkExecContext *e, AVFrame *f, VkPipelineStageFlagBits2 wait_stage, VkPipelineStageFlagBits2 signal_stage) |
int | ff_vk_exec_add_dep_sw_frame (FFVulkanContext *s, FFVkExecContext *e, AVFrame *f) |
void | ff_vk_exec_update_frame (FFVulkanContext *s, FFVkExecContext *e, AVFrame *f, VkImageMemoryBarrier2 *bar, uint32_t *nb_img_bar) |
int | ff_vk_exec_mirror_sem_value (FFVulkanContext *s, FFVkExecContext *e, VkSemaphore *dst, uint64_t *dst_val, AVFrame *f) |
void | ff_vk_exec_discard_deps (FFVulkanContext *s, FFVkExecContext *e) |
int | ff_vk_create_imageviews (FFVulkanContext *s, FFVkExecContext *e, VkImageView views[AV_NUM_DATA_POINTERS], AVFrame *f, enum FFVkShaderRepFormat rep_fmt) |
Create an imageview and add it as a dependency to an execution. More... | |
void | ff_vk_frame_barrier (FFVulkanContext *s, FFVkExecContext *e, AVFrame *pic, VkImageMemoryBarrier2 *bar, int *nb_bar, VkPipelineStageFlags src_stage, VkPipelineStageFlags dst_stage, VkAccessFlagBits new_access, VkImageLayout new_layout, uint32_t new_qf) |
int | ff_vk_alloc_mem (FFVulkanContext *s, VkMemoryRequirements *req, VkMemoryPropertyFlagBits req_flags, void *alloc_extension, VkMemoryPropertyFlagBits *mem_flags, VkDeviceMemory *mem) |
Memory/buffer/image allocation helpers. More... | |
int | ff_vk_create_buf (FFVulkanContext *s, FFVkBuffer *buf, size_t size, void *pNext, void *alloc_pNext, VkBufferUsageFlags usage, VkMemoryPropertyFlagBits flags) |
int | ff_vk_create_avbuf (FFVulkanContext *s, AVBufferRef **ref, size_t size, void *pNext, void *alloc_pNext, VkBufferUsageFlags usage, VkMemoryPropertyFlagBits flags) |
int | ff_vk_map_buffers (FFVulkanContext *s, FFVkBuffer **buf, uint8_t *mem[], int nb_buffers, int invalidate) |
Buffer management code. More... | |
int | ff_vk_unmap_buffers (FFVulkanContext *s, FFVkBuffer **buf, int nb_buffers, int flush) |
static int | ff_vk_map_buffer (FFVulkanContext *s, FFVkBuffer *buf, uint8_t **mem, int invalidate) |
static int | ff_vk_unmap_buffer (FFVulkanContext *s, FFVkBuffer *buf, int flush) |
void | ff_vk_free_buf (FFVulkanContext *s, FFVkBuffer *buf) |
int | ff_vk_get_pooled_buffer (FFVulkanContext *ctx, AVBufferPool **buf_pool, AVBufferRef **buf, VkBufferUsageFlags usage, void *create_pNext, size_t size, VkMemoryPropertyFlagBits mem_props) |
Initialize a pool and create AVBufferRefs containing FFVkBuffer. More... | |
int | ff_vk_init_sampler (FFVulkanContext *s, VkSampler *sampler, int unnorm_coords, VkFilter filt) |
Create a sampler. More... | |
int | ff_vk_shader_init (FFVulkanContext *s, FFVulkanShader *shd, const char *name, VkPipelineStageFlags stage, const char *extensions[], int nb_extensions, int lg_x, int lg_y, int lg_z, uint32_t required_subgroup_size) |
Initialize a shader object, with a specific set of extensions, type+bind, local group size, and subgroup requirements. More... | |
void | ff_vk_shader_print (void *ctx, FFVulkanShader *shd, int prio) |
Output the shader code as logging data, with a specific priority. More... | |
int | ff_vk_shader_link (FFVulkanContext *s, FFVulkanShader *shd, uint8_t *spirv, size_t spirv_len, const char *entrypoint) |
Link a shader into an executable. More... | |
int | ff_vk_shader_add_push_const (FFVulkanShader *shd, int offset, int size, VkShaderStageFlagBits stage) |
Add/update push constants for execution. More... | |
int | ff_vk_shader_add_descriptor_set (FFVulkanContext *s, FFVulkanShader *shd, FFVulkanDescriptorSetBinding *desc, int nb, int singular, int print_to_shader_only) |
Add descriptor to a shader. More... | |
int | ff_vk_shader_register_exec (FFVulkanContext *s, FFVkExecPool *pool, FFVulkanShader *shd) |
Register a shader with an exec pool. More... | |
void | ff_vk_exec_bind_shader (FFVulkanContext *s, FFVkExecContext *e, FFVulkanShader *shd) |
Bind a shader. More... | |
void | ff_vk_shader_update_push_const (FFVulkanContext *s, FFVkExecContext *e, FFVulkanShader *shd, VkShaderStageFlagBits stage, int offset, size_t size, void *src) |
Update push constant in a shader. More... | |
int | ff_vk_shader_update_desc_buffer (FFVulkanContext *s, FFVkExecContext *e, FFVulkanShader *shd, int set, int bind, int elem, FFVkBuffer *buf, VkDeviceSize offset, VkDeviceSize len, VkFormat fmt) |
Update a descriptor in a buffer with a buffer. More... | |
void | ff_vk_shader_update_img_array (FFVulkanContext *s, FFVkExecContext *e, FFVulkanShader *shd, AVFrame *f, VkImageView *views, int set, int binding, VkImageLayout layout, VkSampler sampler) |
Update a descriptor in a buffer with an image array. More... | |
void | ff_vk_shader_free (FFVulkanContext *s, FFVulkanShader *shd) |
Free a shader. More... | |
void | ff_vk_uninit (FFVulkanContext *s) |
Frees main context. More... | |
Variables | |
const VkComponentMapping | ff_comp_identity_map |
#define GLSLA | ( | ... | ) |
#define GLSLD | ( | D | ) |
#define RET | ( | x | ) |
enum FFVkShaderRepFormat |
|
inlinestatic |
Definition at line 317 of file vulkan.h.
Referenced by ff_vk_aspect_flag(), ff_vk_create_imageviews(), ff_vk_exec_add_dep_frame(), ff_vk_exec_submit(), ff_vk_frame_barrier(), run_rct(), vulkan_frame_free(), and vulkan_transfer_frame().
|
inlinestatic |
Definition at line 326 of file vulkan.h.
Referenced by ff_vk_decode_init(), ff_vk_exec_pool_init(), get_video_profile(), try_export_flags(), and vulkan_frames_init().
|
inlinestatic |
int ff_vk_init | ( | FFVulkanContext * | s, |
void * | log_parent, | ||
AVBufferRef * | device_ref, | ||
AVBufferRef * | frames_ref | ||
) |
Initializes the AVClass, in case this context is not used as the main user's context.
May use either a frames context reference, or a device context reference.
Definition at line 2636 of file vulkan.c.
Referenced by ff_vk_decode_init(), and vulkan_encode_ffv1_init().
const char* ff_vk_ret2str | ( | VkResult | res | ) |
Converts Vulkan return values to strings.
Definition at line 35 of file vulkan.c.
Referenced by alloc_bind_mem(), alloc_mem(), create_frame(), create_instance(), create_shader_module(), create_shader_object(), ff_vk_create_buf(), ff_vk_create_imageviews(), ff_vk_decode_create_params(), ff_vk_decode_frame(), ff_vk_decode_init(), ff_vk_exec_pool_init(), ff_vk_exec_start(), ff_vk_exec_submit(), ff_vk_init_sampler(), ff_vk_map_buffers(), ff_vk_shader_register_exec(), ff_vk_unmap_buffers(), ff_vulkan_encode_create_session_params(), ff_vulkan_encode_init(), find_device(), init_compute_pipeline(), init_descriptors(), init_pipeline_layout(), vulkan_decode_get_profile(), vulkan_device_create_internal(), and vulkan_encode_output().
int ff_vk_mt_is_np_rgb | ( | enum AVPixelFormat | pix_fmt | ) |
Returns 1 if pixfmt is a usable RGB format.
Definition at line 1323 of file vulkan.c.
Referenced by ff_vk_aspect_flag(), run_rct(), and scale_vulkan_config_output().
VkImageAspectFlags ff_vk_aspect_flag | ( | AVFrame * | f, |
int | p | ||
) |
Get the aspect flag for a plane from an image.
Definition at line 1306 of file vulkan.c.
Referenced by ff_vk_create_imageviews(), and vulkan_transfer_frame().
const char* ff_vk_shader_rep_fmt | ( | enum AVPixelFormat | pix_fmt, |
enum FFVkShaderRepFormat | rep_fmt | ||
) |
Definition at line 1344 of file vulkan.c.
Referenced by init_encode_shader(), init_filter(), init_rct_shader(), init_setup_shader(), and init_vulkan().
int ff_vk_load_props | ( | FFVulkanContext * | s | ) |
Loads props/mprops/driver_props.
Definition at line 106 of file vulkan.c.
Referenced by ff_vk_filter_init_context(), ff_vk_init(), ff_vulkan_encode_init(), and vulkan_device_init().
int ff_vk_qf_init | ( | FFVulkanContext * | s, |
FFVkQueueFamilyCtx * | qf, | ||
VkQueueFlagBits | dev_family | ||
) |
Chooses a QF and loads it into a context.
Definition at line 232 of file vulkan.c.
Referenced by init_filter(), init_vulkan(), vulkan_device_init(), and vulkan_encode_ffv1_init().
int ff_vk_exec_pool_init | ( | FFVulkanContext * | s, |
FFVkQueueFamilyCtx * | qf, | ||
FFVkExecPool * | pool, | ||
int | nb_contexts, | ||
int | nb_queries, | ||
VkQueryType | query_type, | ||
int | query_64bit, | ||
const void * | query_create_pnext | ||
) |
Allocates/frees an execution pool.
ff_vk_exec_pool_init_desc() MUST be called if ff_vk_exec_descriptor_set_add() has been called.
Definition at line 306 of file vulkan.c.
Referenced by ff_vk_decode_init(), ff_vk_update_thread_context(), ff_vulkan_encode_init(), init_filter(), init_vulkan(), vulkan_encode_ffv1_init(), and vulkan_frames_init().
void ff_vk_exec_pool_free | ( | FFVulkanContext * | s, |
FFVkExecPool * | pool | ||
) |
Definition at line 242 of file vulkan.c.
Referenced by avgblur_vulkan_uninit(), bwdif_vulkan_uninit(), chromaber_vulkan_uninit(), ff_vk_decode_uninit(), ff_vk_exec_pool_init(), ff_vulkan_encode_uninit(), flip_vulkan_uninit(), gblur_vulkan_uninit(), overlay_vulkan_uninit(), scale_vulkan_uninit(), testsrc_vulkan_uninit(), transpose_vulkan_uninit(), uninit(), vulkan_encode_ffv1_close(), and vulkan_frames_uninit().
FFVkExecContext* ff_vk_exec_get | ( | FFVulkanContext * | s, |
FFVkExecPool * | pool | ||
) |
Retrieve an execution pool.
Threadsafe.
Definition at line 493 of file vulkan.c.
Referenced by download_slices(), ff_vk_decode_flush(), ff_vk_decode_frame(), ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), prepare_frame(), vulkan_encode_ffv1_receive_packet(), vulkan_encode_issue(), and vulkan_transfer_frame().
VkResult ff_vk_exec_get_query | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
void ** | data, | ||
VkQueryResultFlagBits | flags | ||
) |
Performs nb_queries queries and returns their results and statuses.
64_BIT and WITH_STATUS flags are ignored as 64_BIT must be specified via query_64bit in ff_vk_exec_pool_init() and WITH_STATUS is always enabled.
Definition at line 465 of file vulkan.c.
Referenced by ff_vk_decode_frame(), and vulkan_encode_output().
int ff_vk_exec_start | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Start/submit/wait an execution.
ff_vk_exec_start() always waits on a submission, so using ff_vk_exec_wait() is not necessary (unless using it is just better).
Definition at line 507 of file vulkan.c.
Referenced by download_slices(), ff_vk_decode_flush(), ff_vk_decode_frame(), ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), prepare_frame(), vulkan_encode_ffv1_submit_frame(), vulkan_encode_issue(), and vulkan_transfer_frame().
int ff_vk_exec_submit | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Definition at line 833 of file vulkan.c.
Referenced by download_slices(), ff_vk_decode_flush(), ff_vk_decode_frame(), ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), prepare_frame(), vulkan_encode_ffv1_submit_frame(), vulkan_encode_issue(), and vulkan_transfer_frame().
void ff_vk_exec_wait | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Definition at line 498 of file vulkan.c.
Referenced by download_slices(), get_packet(), vulkan_encode_wait(), and vulkan_transfer_frame().
int ff_vk_exec_add_dep_buf | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
AVBufferRef ** | deps, | ||
int | nb_deps, | ||
int | ref | ||
) |
Execution dependency management.
Can attach buffers to executions that will only be unref'd once the buffer has finished executing. Adding a frame dep will lock the frame, until either the dependencies are discarded, the execution is submitted, or a failure happens. update_frame will update the frame's properties before it is unlocked, only if submission was successful.
Definition at line 573 of file vulkan.c.
Referenced by download_slices(), ff_vk_create_imageviews(), ff_vk_decode_frame(), ff_vk_exec_add_dep_bool_sem(), vulkan_encode_ffv1_submit_frame(), vulkan_encode_issue(), and vulkan_transfer_frame().
int ff_vk_exec_add_dep_bool_sem | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
VkSemaphore * | sem, | ||
int | nb, | ||
VkPipelineStageFlagBits2 | stage, | ||
int | wait | ||
) |
int ff_vk_exec_add_dep_frame | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
AVFrame * | f, | ||
VkPipelineStageFlagBits2 | wait_stage, | ||
VkPipelineStageFlagBits2 | signal_stage | ||
) |
Definition at line 718 of file vulkan.c.
Referenced by ff_vk_decode_frame(), ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), prepare_frame(), run_rct(), vulkan_encode_ffv1_submit_frame(), vulkan_encode_issue(), and vulkan_transfer_frame().
int ff_vk_exec_add_dep_sw_frame | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
AVFrame * | f | ||
) |
Definition at line 597 of file vulkan.c.
Referenced by vulkan_transfer_frame().
void ff_vk_exec_update_frame | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
AVFrame * | f, | ||
VkImageMemoryBarrier2 * | bar, | ||
uint32_t * | nb_img_bar | ||
) |
Definition at line 788 of file vulkan.c.
Referenced by ff_vk_decode_frame(), ff_vk_frame_barrier(), and vulkan_encode_issue().
int ff_vk_exec_mirror_sem_value | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
VkSemaphore * | dst, | ||
uint64_t * | dst_val, | ||
AVFrame * | f | ||
) |
Definition at line 807 of file vulkan.c.
Referenced by ff_vk_decode_frame().
void ff_vk_exec_discard_deps | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Definition at line 543 of file vulkan.c.
Referenced by ff_vk_exec_add_dep_buf(), ff_vk_exec_add_dep_frame(), ff_vk_exec_add_dep_sw_frame(), ff_vk_exec_pool_free(), ff_vk_exec_start(), ff_vk_exec_submit(), ff_vk_exec_wait(), ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), prepare_frame(), vulkan_encode_ffv1_submit_frame(), and vulkan_transfer_frame().
int ff_vk_create_imageviews | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
VkImageView | views[AV_NUM_DATA_POINTERS], | ||
AVFrame * | f, | ||
enum FFVkShaderRepFormat | rep_fmt | ||
) |
Create an imageview and add it as a dependency to an execution.
Definition at line 1611 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), run_rct(), and vulkan_encode_ffv1_submit_frame().
void ff_vk_frame_barrier | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
AVFrame * | pic, | ||
VkImageMemoryBarrier2 * | bar, | ||
int * | nb_bar, | ||
VkPipelineStageFlags | src_stage, | ||
VkPipelineStageFlags | dst_stage, | ||
VkAccessFlagBits | new_access, | ||
VkImageLayout | new_layout, | ||
uint32_t | new_qf | ||
) |
Definition at line 1694 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), prepare_frame(), run_rct(), vulkan_encode_ffv1_submit_frame(), and vulkan_transfer_frame().
int ff_vk_alloc_mem | ( | FFVulkanContext * | s, |
VkMemoryRequirements * | req, | ||
VkMemoryPropertyFlagBits | req_flags, | ||
void * | alloc_extension, | ||
VkMemoryPropertyFlagBits * | mem_flags, | ||
VkDeviceMemory * | mem | ||
) |
Memory/buffer/image allocation helpers.
Definition at line 899 of file vulkan.c.
Referenced by create_mapped_buffer(), ff_vk_create_buf(), and ff_vk_video_common_init().
int ff_vk_create_buf | ( | FFVulkanContext * | s, |
FFVkBuffer * | buf, | ||
size_t | size, | ||
void * | pNext, | ||
void * | alloc_pNext, | ||
VkBufferUsageFlags | usage, | ||
VkMemoryPropertyFlagBits | flags | ||
) |
Definition at line 950 of file vulkan.c.
Referenced by ff_vk_create_avbuf(), ff_vk_get_pooled_buffer(), ff_vk_shader_register_exec(), init_crc_table_data(), init_gblur_pipeline(), init_quant_table_data(), and init_state_transition_data().
int ff_vk_create_avbuf | ( | FFVulkanContext * | s, |
AVBufferRef ** | ref, | ||
size_t | size, | ||
void * | pNext, | ||
void * | alloc_pNext, | ||
VkBufferUsageFlags | usage, | ||
VkMemoryPropertyFlagBits | flags | ||
) |
int ff_vk_map_buffers | ( | FFVulkanContext * | s, |
FFVkBuffer ** | buf, | ||
uint8_t * | mem[], | ||
int | nb_buffers, | ||
int | invalidate | ||
) |
int ff_vk_unmap_buffers | ( | FFVulkanContext * | s, |
FFVkBuffer ** | buf, | ||
int | nb_buffers, | ||
int | flush | ||
) |
Definition at line 1124 of file vulkan.c.
Referenced by ff_vk_unmap_buffer().
|
inlinestatic |
Definition at line 497 of file vulkan.h.
Referenced by ff_vk_get_pooled_buffer(), ff_vk_shader_register_exec(), init_crc_table_data(), init_gblur_pipeline(), init_quant_table_data(), and init_state_transition_data().
|
inlinestatic |
Definition at line 504 of file vulkan.h.
Referenced by ff_vk_exec_pool_free(), ff_vk_free_buf(), init_crc_table_data(), init_gblur_pipeline(), init_quant_table_data(), and init_state_transition_data().
void ff_vk_free_buf | ( | FFVulkanContext * | s, |
FFVkBuffer * | buf | ||
) |
Definition at line 1164 of file vulkan.c.
Referenced by destroy_avvkbuf(), ff_vk_exec_pool_free(), ff_vk_get_pooled_buffer(), free_data_buf(), gblur_vulkan_uninit(), and vulkan_encode_ffv1_close().
int ff_vk_get_pooled_buffer | ( | FFVulkanContext * | ctx, |
AVBufferPool ** | buf_pool, | ||
AVBufferRef ** | buf, | ||
VkBufferUsageFlags | usage, | ||
void * | create_pNext, | ||
size_t | size, | ||
VkMemoryPropertyFlagBits | mem_props | ||
) |
Initialize a pool and create AVBufferRefs containing FFVkBuffer.
Threadsafe to use. Buffers are automatically mapped on creation if VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT is set in mem_props. Users should synchronize access themselvesd. Mainly meant for device-local buffers.
Definition at line 1200 of file vulkan.c.
Referenced by ff_vk_decode_add_slice(), get_packet(), get_plane_buf(), vulkan_encode_ffv1_submit_frame(), and vulkan_encode_issue().
int ff_vk_init_sampler | ( | FFVulkanContext * | s, |
VkSampler * | sampler, | ||
int | unnorm_coords, | ||
VkFilter | filt | ||
) |
Create a sampler.
Definition at line 1274 of file vulkan.c.
Referenced by init_filter(), and init_vulkan().
int ff_vk_shader_init | ( | FFVulkanContext * | s, |
FFVulkanShader * | shd, | ||
const char * | name, | ||
VkPipelineStageFlags | stage, | ||
const char * | extensions[], | ||
int | nb_extensions, | ||
int | lg_x, | ||
int | lg_y, | ||
int | lg_z, | ||
uint32_t | required_subgroup_size | ||
) |
Initialize a shader object, with a specific set of extensions, type+bind, local group size, and subgroup requirements.
Definition at line 1737 of file vulkan.c.
Referenced by init_encode_shader(), init_filter(), init_rct_shader(), init_reset_shader(), init_setup_shader(), and init_vulkan().
void ff_vk_shader_print | ( | void * | ctx, |
FFVulkanShader * | shd, | ||
int | prio | ||
) |
Output the shader code as logging data, with a specific priority.
Definition at line 1812 of file vulkan.c.
Referenced by glslc_shader_compile(), and shdc_shader_compile().
int ff_vk_shader_link | ( | FFVulkanContext * | s, |
FFVulkanShader * | shd, | ||
uint8_t * | spirv, | ||
size_t | spirv_len, | ||
const char * | entrypoint | ||
) |
Link a shader into an executable.
Definition at line 2026 of file vulkan.c.
Referenced by init_encode_shader(), init_filter(), init_gblur_pipeline(), init_rct_shader(), init_reset_shader(), init_setup_shader(), and init_vulkan().
int ff_vk_shader_add_push_const | ( | FFVulkanShader * | shd, |
int | offset, | ||
int | size, | ||
VkShaderStageFlagBits | stage | ||
) |
Add/update push constants for execution.
Definition at line 1253 of file vulkan.c.
Referenced by add_push_data(), init_filter(), init_rct_shader(), init_reset_shader(), and init_vulkan().
int ff_vk_shader_add_descriptor_set | ( | FFVulkanContext * | s, |
FFVulkanShader * | shd, | ||
FFVulkanDescriptorSetBinding * | desc, | ||
int | nb, | ||
int | singular, | ||
int | print_to_shader_only | ||
) |
Add descriptor to a shader.
Must be called before shader init.
Definition at line 2101 of file vulkan.c.
Referenced by init_encode_shader(), init_filter(), init_gblur_pipeline(), init_rct_shader(), init_reset_shader(), init_setup_shader(), and init_vulkan().
int ff_vk_shader_register_exec | ( | FFVulkanContext * | s, |
FFVkExecPool * | pool, | ||
FFVulkanShader * | shd | ||
) |
Register a shader with an exec pool.
Pool may be NULL if all descriptor sets are read-only.
Definition at line 2226 of file vulkan.c.
Referenced by init_encode_shader(), init_filter(), init_gblur_pipeline(), init_rct_shader(), init_reset_shader(), init_setup_shader(), and init_vulkan().
void ff_vk_exec_bind_shader | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
FFVulkanShader * | shd | ||
) |
Bind a shader.
Definition at line 2552 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), run_rct(), and vulkan_encode_ffv1_submit_frame().
void ff_vk_shader_update_push_const | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
FFVulkanShader * | shd, | ||
VkShaderStageFlagBits | stage, | ||
int | offset, | ||
size_t | size, | ||
void * | src | ||
) |
Update push constant in a shader.
Must be called before binding the shader.
Definition at line 2542 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), run_rct(), and vulkan_encode_ffv1_submit_frame().
int ff_vk_shader_update_desc_buffer | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
FFVulkanShader * | shd, | ||
int | set, | ||
int | bind, | ||
int | elem, | ||
FFVkBuffer * | buf, | ||
VkDeviceSize | offset, | ||
VkDeviceSize | len, | ||
VkFormat | fmt | ||
) |
Update a descriptor in a buffer with a buffer.
Must be called before binding the shader.
Definition at line 2463 of file vulkan.c.
Referenced by init_crc_table_data(), init_gblur_pipeline(), init_quant_table_data(), init_state_transition_data(), run_rct(), and vulkan_encode_ffv1_submit_frame().
void ff_vk_shader_update_img_array | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
FFVulkanShader * | shd, | ||
AVFrame * | f, | ||
VkImageView * | views, | ||
int | set, | ||
int | binding, | ||
VkImageLayout | layout, | ||
VkSampler | sampler | ||
) |
Update a descriptor in a buffer with an image array.
Must be called before binding the shader.
Definition at line 2529 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), run_rct(), and vulkan_encode_ffv1_submit_frame().
void ff_vk_shader_free | ( | FFVulkanContext * | s, |
FFVulkanShader * | shd | ||
) |
Free a shader.
Definition at line 2586 of file vulkan.c.
Referenced by avgblur_vulkan_uninit(), bwdif_vulkan_uninit(), chromaber_vulkan_uninit(), flip_vulkan_uninit(), gblur_vulkan_uninit(), overlay_vulkan_uninit(), scale_vulkan_uninit(), testsrc_vulkan_uninit(), transpose_vulkan_uninit(), uninit(), and vulkan_encode_ffv1_close().
void ff_vk_uninit | ( | FFVulkanContext * | s | ) |
Frees main context.
Definition at line 2625 of file vulkan.c.
Referenced by avgblur_vulkan_uninit(), bwdif_vulkan_uninit(), chromaber_vulkan_uninit(), ff_vk_init(), ff_vulkan_encode_uninit(), flip_vulkan_uninit(), free_common(), gblur_vulkan_uninit(), libplacebo_uninit(), overlay_vulkan_uninit(), scale_vulkan_uninit(), testsrc_vulkan_uninit(), transpose_vulkan_uninit(), uninit(), vulkan_device_uninit(), and vulkan_encode_ffv1_close().
const VkComponentMapping ff_comp_identity_map |
Definition at line 27 of file vulkan.c.
Referenced by ff_vk_create_imageviews(), and ff_vk_video_common_init().