FFmpeg
|
#include <stdatomic.h>
#include "thread.h"
#include "pixdesc.h"
#include "bprint.h"
#include "hwcontext.h"
#include "vulkan_functions.h"
#include "hwcontext_vulkan.h"
#include "vulkan_loader.h"
Go to the source code of this file.
Data Structures | |
struct | FFVkSPIRVShader |
struct | FFVulkanDescriptorSetBinding |
struct | FFVkBuffer |
struct | FFVkQueueFamilyCtx |
struct | FFVulkanDescriptorSet |
struct | FFVulkanPipeline |
struct | FFVkExecContext |
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) |
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 (FFVkExecPool *pool) |
Retrieve an execution pool. More... | |
VkResult | ff_vk_exec_get_query (FFVulkanContext *s, FFVkExecContext *e, void **data, int64_t *status) |
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_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 (FFVulkanPipeline *pl, FFVkSPIRVShader *shd, const char *name, VkShaderStageFlags stage, uint32_t required_subgroup_size) |
Shader management. More... | |
void | ff_vk_shader_set_compute_sizes (FFVkSPIRVShader *shd, int x, int y, int z) |
void | ff_vk_shader_print (void *ctx, FFVkSPIRVShader *shd, int prio) |
int | ff_vk_shader_create (FFVulkanContext *s, FFVkSPIRVShader *shd, uint8_t *spirv, size_t spirv_size, const char *entrypoint) |
void | ff_vk_shader_free (FFVulkanContext *s, FFVkSPIRVShader *shd) |
int | ff_vk_add_push_constant (FFVulkanPipeline *pl, int offset, int size, VkShaderStageFlagBits stage) |
Add/update push constants for execution. More... | |
void | ff_vk_update_push_exec (FFVulkanContext *s, FFVkExecContext *e, FFVulkanPipeline *pl, VkShaderStageFlagBits stage, int offset, size_t size, void *src) |
int | ff_vk_pipeline_descriptor_set_add (FFVulkanContext *s, FFVulkanPipeline *pl, FFVkSPIRVShader *shd, FFVulkanDescriptorSetBinding *desc, int nb, int read_only, int print_to_shader_only) |
Add descriptor to a pipeline. More... | |
int | ff_vk_init_compute_pipeline (FFVulkanContext *s, FFVulkanPipeline *pl, FFVkSPIRVShader *shd) |
void | ff_vk_pipeline_free (FFVulkanContext *s, FFVulkanPipeline *pl) |
int | ff_vk_exec_pipeline_register (FFVulkanContext *s, FFVkExecPool *pool, FFVulkanPipeline *pl) |
Register a pipeline with an exec pool. More... | |
void | ff_vk_exec_bind_pipeline (FFVulkanContext *s, FFVkExecContext *e, FFVulkanPipeline *pl) |
int | ff_vk_set_descriptor_sampler (FFVulkanContext *s, FFVulkanPipeline *pl, FFVkExecContext *e, int set, int bind, int offs, VkSampler *sampler) |
int | ff_vk_set_descriptor_image (FFVulkanContext *s, FFVulkanPipeline *pl, FFVkExecContext *e, int set, int bind, int offs, VkImageView view, VkImageLayout layout, VkSampler sampler) |
int | ff_vk_set_descriptor_buffer (FFVulkanContext *s, FFVulkanPipeline *pl, FFVkExecContext *e, int set, int bind, int offs, VkDeviceAddress addr, VkDeviceSize len, VkFormat fmt) |
void | ff_vk_update_descriptor_img_array (FFVulkanContext *s, FFVulkanPipeline *pl, FFVkExecContext *e, AVFrame *f, VkImageView *views, int set, int binding, VkImageLayout layout, VkSampler sampler) |
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 | ) |
Definition at line 271 of file vulkan.h.
Referenced by ff_vk_create_imageviews(), ff_vk_exec_add_dep_frame(), ff_vk_exec_submit(), ff_vk_frame_barrier(), transfer_image_buf(), and vulkan_frame_free().
|
inlinestatic |
Definition at line 280 of file vulkan.h.
Referenced by ff_vk_decode_init(), get_video_profile(), and try_export_flags().
const char* ff_vk_ret2str | ( | VkResult | res | ) |
Converts Vulkan return values to strings.
Definition at line 34 of file vulkan.c.
Referenced by alloc_bind_mem(), alloc_mem(), create_frame(), create_instance(), ff_vk_alloc_mem(), 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_compute_pipeline(), ff_vk_init_sampler(), ff_vk_map_buffers(), ff_vk_pipeline_descriptor_set_add(), ff_vk_shader_create(), ff_vk_unmap_buffers(), find_device(), init_pipeline_layout(), vulkan_decode_get_profile(), and vulkan_device_create_internal().
int ff_vk_mt_is_np_rgb | ( | enum AVPixelFormat | pix_fmt | ) |
Returns 1 if pixfmt is a usable RGB format.
Definition at line 1195 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 1207 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 86 of file vulkan.c.
Referenced by ff_vk_decode_init(), ff_vk_filter_init_context(), 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 225 of file vulkan.c.
Referenced by ff_vk_decode_init(), 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 296 of file vulkan.c.
Referenced by ff_vk_decode_init(), ff_vk_update_thread_context(), init_filter(), init_vulkan(), and vulkan_frames_init().
void ff_vk_exec_pool_free | ( | FFVulkanContext * | s, |
FFVkExecPool * | pool | ||
) |
Definition at line 256 of file vulkan.c.
Referenced by avgblur_vulkan_uninit(), bwdif_vulkan_uninit(), chromaber_vulkan_uninit(), ff_vk_decode_uninit(), ff_vk_exec_pool_init(), 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 | ( | FFVkExecPool * | pool | ) |
Retrieve an execution pool.
Threadsafe.
Definition at line 497 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(), and transfer_image_buf().
VkResult ff_vk_exec_get_query | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
void ** | data, | ||
int64_t * | status | ||
) |
Performs nb_queries queries and returns their results and statuses.
Execution must have been waited on to produce valid results.
Definition at line 447 of file vulkan.c.
Referenced by ff_vk_decode_frame().
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 513 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(), and transfer_image_buf().
int ff_vk_exec_submit | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Definition at line 724 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(), and transfer_image_buf().
void ff_vk_exec_wait | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Definition at line 504 of file vulkan.c.
Referenced by ff_vk_decode_frame(), and transfer_image_buf().
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 575 of file vulkan.c.
Referenced by ff_vk_create_imageviews(), ff_vk_decode_frame(), and transfer_image_buf().
int ff_vk_exec_add_dep_frame | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
AVFrame * | f, | ||
VkPipelineStageFlagBits2 | wait_stage, | ||
VkPipelineStageFlagBits2 | signal_stage | ||
) |
Definition at line 599 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(), and transfer_image_buf().
void ff_vk_exec_update_frame | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
AVFrame * | f, | ||
VkImageMemoryBarrier2 * | bar, | ||
uint32_t * | nb_img_bar | ||
) |
Definition at line 679 of file vulkan.c.
Referenced by ff_vk_decode_frame(), and ff_vk_frame_barrier().
int ff_vk_exec_mirror_sem_value | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
VkSemaphore * | dst, | ||
uint64_t * | dst_val, | ||
AVFrame * | f | ||
) |
Definition at line 698 of file vulkan.c.
Referenced by ff_vk_decode_frame().
void ff_vk_exec_discard_deps | ( | FFVulkanContext * | s, |
FFVkExecContext * | e | ||
) |
Definition at line 549 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(), and prepare_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 1231 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 1304 of file vulkan.c.
Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), prepare_frame(), and transfer_image_buf().
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 790 of file vulkan.c.
Referenced by 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 848 of file vulkan.c.
Referenced by ff_vk_create_avbuf(), ff_vk_exec_pipeline_register(), ff_vk_get_pooled_buffer(), ff_vk_video_get_buffer(), 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 | ||
) |
Definition at line 943 of file vulkan.c.
Referenced by vulkan_transfer_data().
int ff_vk_map_buffers | ( | FFVulkanContext * | s, |
FFVkBuffer ** | buf, | ||
uint8_t * | mem[], | ||
int | nb_buffers, | ||
int | invalidate | ||
) |
Buffer management code.
Definition at line 970 of file vulkan.c.
Referenced by ff_vk_map_buffer(), and vulkan_transfer_data().
int ff_vk_unmap_buffers | ( | FFVulkanContext * | s, |
FFVkBuffer ** | buf, | ||
int | nb_buffers, | ||
int | flush | ||
) |
Definition at line 1017 of file vulkan.c.
Referenced by ff_vk_unmap_buffer(), and vulkan_transfer_data().
|
inlinestatic |
Definition at line 411 of file vulkan.h.
Referenced by ff_vk_exec_pipeline_register(), ff_vk_get_pooled_buffer(), ff_vk_video_get_buffer(), and init_gblur_pipeline().
|
inlinestatic |
Definition at line 418 of file vulkan.h.
Referenced by ff_vk_free_buf(), ff_vk_pipeline_free(), free_data_buf(), and init_gblur_pipeline().
void ff_vk_free_buf | ( | FFVulkanContext * | s, |
FFVkBuffer * | buf | ||
) |
Definition at line 1055 of file vulkan.c.
Referenced by destroy_avvkbuf(), ff_vk_get_pooled_buffer(), ff_vk_pipeline_free(), ff_vk_video_get_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.
int ff_vk_init_sampler | ( | FFVulkanContext * | s, |
VkSampler * | sampler, | ||
int | unnorm_coords, | ||
VkFilter | filt | ||
) |
Create a sampler.
Definition at line 1163 of file vulkan.c.
Referenced by init_filter(), and init_vulkan().
int ff_vk_shader_init | ( | FFVulkanPipeline * | pl, |
FFVkSPIRVShader * | shd, | ||
const char * | name, | ||
VkShaderStageFlags | stage, | ||
uint32_t | required_subgroup_size | ||
) |
Shader management.
Definition at line 1345 of file vulkan.c.
Referenced by init_filter(), and init_vulkan().
void ff_vk_shader_set_compute_sizes | ( | FFVkSPIRVShader * | shd, |
int | x, | ||
int | y, | ||
int | z | ||
) |
Definition at line 1371 of file vulkan.c.
Referenced by init_filter(), and init_vulkan().
void ff_vk_shader_print | ( | void * | ctx, |
FFVkSPIRVShader * | shd, | ||
int | prio | ||
) |
Definition at line 1382 of file vulkan.c.
Referenced by glslc_shader_compile(), and shdc_shader_compile().
int ff_vk_shader_create | ( | FFVulkanContext * | s, |
FFVkSPIRVShader * | shd, | ||
uint8_t * | spirv, | ||
size_t | spirv_size, | ||
const char * | entrypoint | ||
) |
Definition at line 1413 of file vulkan.c.
Referenced by init_filter(), init_gblur_pipeline(), and init_vulkan().
void ff_vk_shader_free | ( | FFVulkanContext * | s, |
FFVkSPIRVShader * | shd | ||
) |
Definition at line 1404 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().
int ff_vk_add_push_constant | ( | FFVulkanPipeline * | pl, |
int | offset, | ||
int | size, | ||
VkShaderStageFlagBits | stage | ||
) |
Add/update push constants for execution.
Definition at line 1143 of file vulkan.c.
Referenced by init_filter(), and init_vulkan().
void ff_vk_update_push_exec | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
FFVulkanPipeline * | pl, | ||
VkShaderStageFlagBits | stage, | ||
int | offset, | ||
size_t | size, | ||
void * | src | ||
) |
Definition at line 1764 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_pipeline_descriptor_set_add | ( | FFVulkanContext * | s, |
FFVulkanPipeline * | pl, | ||
FFVkSPIRVShader * | shd, | ||
FFVulkanDescriptorSetBinding * | desc, | ||
int | nb, | ||
int | read_only, | ||
int | print_to_shader_only | ||
) |
Add descriptor to a pipeline.
Must be called before pipeline init.
Definition at line 1463 of file vulkan.c.
Referenced by init_filter(), init_gblur_pipeline(), and init_vulkan().
int ff_vk_init_compute_pipeline | ( | FFVulkanContext * | s, |
FFVulkanPipeline * | pl, | ||
FFVkSPIRVShader * | shd | ||
) |
Definition at line 1809 of file vulkan.c.
Referenced by init_filter(), init_gblur_pipeline(), and init_vulkan().
void ff_vk_pipeline_free | ( | FFVulkanContext * | s, |
FFVulkanPipeline * | pl | ||
) |
Definition at line 1868 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().
int ff_vk_exec_pipeline_register | ( | FFVulkanContext * | s, |
FFVkExecPool * | pool, | ||
FFVulkanPipeline * | pl | ||
) |
Register a pipeline with an exec pool.
Pool may be NULL if all descriptor sets are read-only.
Definition at line 1577 of file vulkan.c.
Referenced by init_filter(), init_gblur_pipeline(), and init_vulkan().
void ff_vk_exec_bind_pipeline | ( | FFVulkanContext * | s, |
FFVkExecContext * | e, | ||
FFVulkanPipeline * | pl | ||
) |
Definition at line 1846 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_set_descriptor_sampler | ( | FFVulkanContext * | s, |
FFVulkanPipeline * | pl, | ||
FFVkExecContext * | e, | ||
int | set, | ||
int | bind, | ||
int | offs, | ||
VkSampler * | sampler | ||
) |
int ff_vk_set_descriptor_image | ( | FFVulkanContext * | s, |
FFVulkanPipeline * | pl, | ||
FFVkExecContext * | e, | ||
int | set, | ||
int | bind, | ||
int | offs, | ||
VkImageView | view, | ||
VkImageLayout | layout, | ||
VkSampler | sampler | ||
) |
Definition at line 1661 of file vulkan.c.
Referenced by ff_vk_update_descriptor_img_array().
int ff_vk_set_descriptor_buffer | ( | FFVulkanContext * | s, |
FFVulkanPipeline * | pl, | ||
FFVkExecContext * | e, | ||
int | set, | ||
int | bind, | ||
int | offs, | ||
VkDeviceAddress | addr, | ||
VkDeviceSize | len, | ||
VkFormat | fmt | ||
) |
Definition at line 1706 of file vulkan.c.
Referenced by init_gblur_pipeline().
void ff_vk_update_descriptor_img_array | ( | FFVulkanContext * | s, |
FFVulkanPipeline * | pl, | ||
FFVkExecContext * | e, | ||
AVFrame * | f, | ||
VkImageView * | views, | ||
int | set, | ||
int | binding, | ||
VkImageLayout | layout, | ||
VkSampler | sampler | ||
) |
Definition at line 1751 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_uninit | ( | FFVulkanContext * | s | ) |
Frees main context.
Definition at line 1897 of file vulkan.c.
Referenced by avgblur_vulkan_uninit(), bwdif_vulkan_uninit(), chromaber_vulkan_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 26 of file vulkan.c.
Referenced by ff_vk_create_imageviews(), and ff_vk_decode_init().