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 } |
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... | |
const char * | ff_vk_shader_rep_fmt (enum AVPixelFormat pixfmt) |
Returns the format to use for images in shaders. More... | |
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) |
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) |
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 | ) |
|
inlinestatic |
Definition at line 308 of file vulkan.h.
Referenced by ff_vk_create_imageviews(), ff_vk_exec_add_dep_frame(), ff_vk_exec_submit(), ff_vk_frame_barrier(), vulkan_frame_free(), and vulkan_transfer_frame().
|
inlinestatic |
Definition at line 317 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 2312 of file vulkan.c.
Referenced by ff_vk_decode_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 1276 of file vulkan.c.
Referenced by scale_vulkan_config_output().
const char* ff_vk_shader_rep_fmt | ( | enum AVPixelFormat | pixfmt | ) |
Returns the format to use for images in shaders.
Definition at line 1289 of file vulkan.c.
Referenced by init_filter(), 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 228 of file vulkan.c.
Referenced by init_filter(), init_vulkan(), and vulkan_device_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 300 of file vulkan.c.
Referenced by ff_vk_decode_init(), ff_vk_update_thread_context(), ff_vulkan_encode_init(), init_filter(), init_vulkan(), and vulkan_frames_init().
void ff_vk_exec_pool_free | ( | FFVulkanContext * | s, |
FFVkExecPool * | pool | ||
) |
Definition at line 238 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(), and vulkan_frames_uninit().
FFVkExecContext* ff_vk_exec_get | ( | FFVulkanContext * | s, |
FFVkExecPool * | pool | ||
) |
Retrieve an execution pool.
Threadsafe.
Definition at line 485 of file vulkan.c.
Referenced by 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_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 457 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 508 of file vulkan.c.
Referenced by 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_issue(), and vulkan_transfer_frame().
int ff_vk_exec_submit | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Definition at line 807 of file vulkan.c.
Referenced by 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_issue(), and vulkan_transfer_frame().
void ff_vk_exec_wait | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Definition at line 499 of file vulkan.c.
Referenced by 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 570 of file vulkan.c.
Referenced by ff_vk_create_imageviews(), ff_vk_decode_frame(), ff_vk_exec_add_dep_bool_sem(), 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 692 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(), vulkan_encode_issue(), and 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 762 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 781 of file vulkan.c.
Referenced by ff_vk_decode_frame().
void ff_vk_exec_discard_deps | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Definition at line 544 of file vulkan.c.
Referenced by ff_vk_exec_add_dep_buf(), ff_vk_exec_add_dep_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(), and vulkan_transfer_frame().
int ff_vk_create_imageviews | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
VkImageView | views[AV_NUM_DATA_POINTERS], | ||
AVFrame * | f | ||
) |
Create an imageview and add it as a dependency to an execution.
Definition at line 1313 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), and ff_vk_filter_process_simple().
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 1387 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), prepare_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 873 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 928 of file vulkan.c.
Referenced by ff_vk_create_avbuf(), ff_vk_get_pooled_buffer(), ff_vk_shader_register_exec(), and init_gblur_pipeline().
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 1097 of file vulkan.c.
Referenced by ff_vk_unmap_buffer().
|
inlinestatic |
Definition at line 470 of file vulkan.h.
Referenced by ff_vk_get_pooled_buffer(), ff_vk_shader_register_exec(), and init_gblur_pipeline().
|
inlinestatic |
Definition at line 477 of file vulkan.h.
Referenced by ff_vk_exec_pool_free(), ff_vk_free_buf(), and init_gblur_pipeline().
void ff_vk_free_buf | ( | FFVulkanContext * | s, |
FFVkBuffer * | buf | ||
) |
Definition at line 1135 of file vulkan.c.
Referenced by destroy_avvkbuf(), ff_vk_exec_pool_free(), ff_vk_get_pooled_buffer(), free_data_buf(), and gblur_vulkan_uninit().
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 1171 of file vulkan.c.
Referenced by ff_vk_decode_add_slice(), get_plane_buf(), and vulkan_encode_issue().
int ff_vk_init_sampler | ( | FFVulkanContext * | s, |
VkSampler * | sampler, | ||
int | unnorm_coords, | ||
VkFilter | filt | ||
) |
Create a sampler.
Definition at line 1244 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 1430 of file vulkan.c.
Referenced by init_filter(), 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 1501 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 1715 of file vulkan.c.
Referenced by init_filter(), init_gblur_pipeline(), 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 1223 of file vulkan.c.
Referenced by init_filter(), 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 1790 of file vulkan.c.
Referenced by init_filter(), init_gblur_pipeline(), 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 1902 of file vulkan.c.
Referenced by init_filter(), init_gblur_pipeline(), and init_vulkan().
void ff_vk_exec_bind_shader | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
FFVulkanShader * | shd | ||
) |
Bind a shader.
Definition at line 2228 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), and ff_vk_filter_process_simple().
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 2218 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), and ff_vk_filter_process_simple().
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 2139 of file vulkan.c.
Referenced by init_gblur_pipeline().
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 2205 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), and ff_vk_filter_process_simple().
void ff_vk_shader_free | ( | FFVulkanContext * | s, |
FFVulkanShader * | shd | ||
) |
Free a shader.
Definition at line 2262 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(), and uninit().
void ff_vk_uninit | ( | FFVulkanContext * | s | ) |
Frees main context.
Definition at line 2301 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(), and vulkan_device_uninit().
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().