FFmpeg
Data Structures | Macros | Functions | Variables
vulkan.h File Reference
#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)
 
FFVkExecContextff_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
 

Macro Definition Documentation

◆ VK_NO_PROTOTYPES

#define VK_NO_PROTOTYPES

Definition at line 22 of file vulkan.h.

◆ INDENT

#define INDENT (   N)    INDENT_##N

Definition at line 35 of file vulkan.h.

◆ INDENT_0

#define INDENT_0

Definition at line 36 of file vulkan.h.

◆ INDENT_1

#define INDENT_1   INDENT_0 " "

Definition at line 37 of file vulkan.h.

◆ INDENT_2

#define INDENT_2   INDENT_1 INDENT_1

Definition at line 38 of file vulkan.h.

◆ INDENT_3

#define INDENT_3   INDENT_2 INDENT_1

Definition at line 39 of file vulkan.h.

◆ INDENT_4

#define INDENT_4   INDENT_3 INDENT_1

Definition at line 40 of file vulkan.h.

◆ INDENT_5

#define INDENT_5   INDENT_4 INDENT_1

Definition at line 41 of file vulkan.h.

◆ INDENT_6

#define INDENT_6   INDENT_5 INDENT_1

Definition at line 42 of file vulkan.h.

◆ C

#define C (   N,
  S 
)    INDENT(N) #S "\n"

Definition at line 43 of file vulkan.h.

◆ GLSLC

#define GLSLC (   N,
  S 
)
Value:
do { \
av_bprintf(&shd->src, C(N, S)); \
} while (0)

Definition at line 45 of file vulkan.h.

◆ GLSLA

#define GLSLA (   ...)
Value:
do { \
av_bprintf(&shd->src, __VA_ARGS__); \
} while (0)

Definition at line 50 of file vulkan.h.

◆ GLSLF

#define GLSLF (   N,
  S,
  ... 
)
Value:
do { \
av_bprintf(&shd->src, C(N, S), __VA_ARGS__); \
} while (0)

Definition at line 55 of file vulkan.h.

◆ GLSLD

#define GLSLD (   D)
Value:
do { \
av_bprintf(&shd->src, "\n"); \
av_bprint_append_data(&shd->src, D, strlen(D)); \
av_bprintf(&shd->src, "\n"); \
} while (0)

Definition at line 60 of file vulkan.h.

◆ RET

#define RET (   x)
Value:
do { \
if ((err = (x)) < 0) \
goto fail; \
} while (0)

Definition at line 68 of file vulkan.h.

◆ DUP_SAMPLER

#define DUP_SAMPLER (   x)    { x, x, x, x }

Definition at line 74 of file vulkan.h.

Function Documentation

◆ ff_vk_count_images()

static int ff_vk_count_images ( AVVkFrame f)
inlinestatic

◆ ff_vk_find_struct()

static const void* ff_vk_find_struct ( const void *  chain,
VkStructureType  stype 
)
inlinestatic

Definition at line 276 of file vulkan.h.

Referenced by try_export_flags().

◆ ff_vk_ret2str()

const char* ff_vk_ret2str ( VkResult  res)

◆ ff_vk_mt_is_np_rgb()

int ff_vk_mt_is_np_rgb ( enum AVPixelFormat  pix_fmt)

Returns 1 if pixfmt is a usable RGB format.

Definition at line 1169 of file vulkan.c.

Referenced by scale_vulkan_config_output().

◆ ff_vk_shader_rep_fmt()

const char* ff_vk_shader_rep_fmt ( enum AVPixelFormat  pixfmt)

Returns the format to use for images in shaders.

Definition at line 1181 of file vulkan.c.

Referenced by init_filter(), init_vulkan(), and insert_weights_pass().

◆ ff_vk_load_props()

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().

◆ ff_vk_qf_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 202 of file vulkan.c.

Referenced by ff_vk_decode_init(), init_filter(), init_vulkan(), insert_weights_pass(), and vulkan_device_init().

◆ ff_vk_exec_pool_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 273 of file vulkan.c.

Referenced by ff_vk_decode_init(), init_filter(), init_vulkan(), insert_weights_pass(), and vulkan_frames_init().

◆ ff_vk_exec_pool_free()

void ff_vk_exec_pool_free ( FFVulkanContext s,
FFVkExecPool pool 
)

◆ ff_vk_exec_get()

FFVkExecContext* ff_vk_exec_get ( FFVkExecPool pool)

Retrieve an execution pool.

Threadsafe.

Definition at line 473 of file vulkan.c.

Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), insert_weights_pass(), prepare_frame(), and transfer_image_buf().

◆ ff_vk_exec_get_query()

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 426 of file vulkan.c.

◆ ff_vk_exec_start()

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 489 of file vulkan.c.

Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), insert_weights_pass(), prepare_frame(), and transfer_image_buf().

◆ ff_vk_exec_submit()

int ff_vk_exec_submit ( FFVulkanContext s,
FFVkExecContext e 
)

◆ ff_vk_exec_wait()

void ff_vk_exec_wait ( FFVulkanContext s,
FFVkExecContext e 
)

Definition at line 480 of file vulkan.c.

Referenced by transfer_image_buf().

◆ ff_vk_exec_add_dep_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 551 of file vulkan.c.

Referenced by ff_vk_create_imageviews(), insert_weights_pass(), and transfer_image_buf().

◆ ff_vk_exec_add_dep_frame()

int ff_vk_exec_add_dep_frame ( FFVulkanContext s,
FFVkExecContext e,
AVFrame f,
VkPipelineStageFlagBits2  wait_stage,
VkPipelineStageFlagBits2  signal_stage 
)

◆ ff_vk_exec_update_frame()

void ff_vk_exec_update_frame ( FFVulkanContext s,
FFVkExecContext e,
AVFrame f,
VkImageMemoryBarrier2 *  bar,
uint32_t *  nb_img_bar 
)

Definition at line 655 of file vulkan.c.

Referenced by ff_vk_frame_barrier().

◆ ff_vk_exec_mirror_sem_value()

int ff_vk_exec_mirror_sem_value ( FFVulkanContext s,
FFVkExecContext e,
VkSemaphore *  dst,
uint64_t *  dst_val,
AVFrame f 
)

Definition at line 674 of file vulkan.c.

◆ ff_vk_exec_discard_deps()

void ff_vk_exec_discard_deps ( FFVulkanContext s,
FFVkExecContext e 
)

◆ ff_vk_create_imageviews()

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 1205 of file vulkan.c.

Referenced by ff_vk_filter_process_2pass(), ff_vk_filter_process_Nin(), ff_vk_filter_process_simple(), and insert_weights_pass().

◆ ff_vk_frame_barrier()

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 
)

◆ ff_vk_alloc_mem()

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 764 of file vulkan.c.

Referenced by ff_vk_create_buf(), and ff_vk_video_common_init().

◆ ff_vk_create_buf()

int ff_vk_create_buf ( FFVulkanContext s,
FFVkBuffer buf,
size_t  size,
void *  pNext,
void *  alloc_pNext,
VkBufferUsageFlags  usage,
VkMemoryPropertyFlagBits  flags 
)

◆ ff_vk_create_avbuf()

int ff_vk_create_avbuf ( FFVulkanContext s,
AVBufferRef **  ref,
size_t  size,
void *  pNext,
void *  alloc_pNext,
VkBufferUsageFlags  usage,
VkMemoryPropertyFlagBits  flags 
)

Definition at line 917 of file vulkan.c.

Referenced by vulkan_transfer_data().

◆ ff_vk_map_buffers()

int ff_vk_map_buffers ( FFVulkanContext s,
FFVkBuffer **  buf,
uint8_t *  mem[],
int  nb_buffers,
int  invalidate 
)

Buffer management code.

Definition at line 944 of file vulkan.c.

Referenced by ff_vk_map_buffer(), and vulkan_transfer_data().

◆ ff_vk_unmap_buffers()

int ff_vk_unmap_buffers ( FFVulkanContext s,
FFVkBuffer **  buf,
int  nb_buffers,
int  flush 
)

Definition at line 991 of file vulkan.c.

Referenced by ff_vk_unmap_buffer(), and vulkan_transfer_data().

◆ ff_vk_map_buffer()

static int ff_vk_map_buffer ( FFVulkanContext s,
FFVkBuffer buf,
uint8_t **  mem,
int  invalidate 
)
inlinestatic

◆ ff_vk_unmap_buffer()

static int ff_vk_unmap_buffer ( FFVulkanContext s,
FFVkBuffer buf,
int  flush 
)
inlinestatic

Definition at line 414 of file vulkan.h.

Referenced by ff_vk_free_buf(), ff_vk_pipeline_free(), free_data_buf(), and init_gblur_pipeline().

◆ ff_vk_free_buf()

void ff_vk_free_buf ( FFVulkanContext s,
FFVkBuffer buf 
)

◆ ff_vk_get_pooled_buffer()

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 1065 of file vulkan.c.

Referenced by insert_weights_pass().

◆ ff_vk_init_sampler()

int ff_vk_init_sampler ( FFVulkanContext s,
VkSampler *  sampler,
int  unnorm_coords,
VkFilter  filt 
)

Create a sampler.

Definition at line 1137 of file vulkan.c.

Referenced by init_filter(), init_vulkan(), and insert_weights_pass().

◆ ff_vk_shader_init()

int ff_vk_shader_init ( FFVulkanPipeline pl,
FFVkSPIRVShader shd,
const char *  name,
VkShaderStageFlags  stage,
uint32_t  required_subgroup_size 
)

Shader management.

Definition at line 1319 of file vulkan.c.

Referenced by init_filter(), init_vulkan(), and insert_weights_pass().

◆ ff_vk_shader_set_compute_sizes()

void ff_vk_shader_set_compute_sizes ( FFVkSPIRVShader shd,
int  x,
int  y,
int  z 
)

Definition at line 1345 of file vulkan.c.

Referenced by init_filter(), init_vulkan(), and insert_weights_pass().

◆ ff_vk_shader_print()

void ff_vk_shader_print ( void *  ctx,
FFVkSPIRVShader shd,
int  prio 
)

Definition at line 1356 of file vulkan.c.

Referenced by glslc_shader_compile(), and shdc_shader_compile().

◆ ff_vk_shader_create()

int ff_vk_shader_create ( FFVulkanContext s,
FFVkSPIRVShader shd,
uint8_t *  spirv,
size_t  spirv_size,
const char *  entrypoint 
)

Definition at line 1387 of file vulkan.c.

Referenced by init_filter(), init_gblur_pipeline(), init_vulkan(), and insert_weights_pass().

◆ ff_vk_shader_free()

void ff_vk_shader_free ( FFVulkanContext s,
FFVkSPIRVShader shd 
)

◆ ff_vk_add_push_constant()

int ff_vk_add_push_constant ( FFVulkanPipeline pl,
int  offset,
int  size,
VkShaderStageFlagBits  stage 
)

Add/update push constants for execution.

Definition at line 1117 of file vulkan.c.

Referenced by init_filter(), init_vulkan(), and insert_weights_pass().

◆ ff_vk_update_push_exec()

void ff_vk_update_push_exec ( FFVulkanContext s,
FFVkExecContext e,
FFVulkanPipeline pl,
VkShaderStageFlagBits  stage,
int  offset,
size_t  size,
void *  src 
)

◆ ff_vk_pipeline_descriptor_set_add()

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 1437 of file vulkan.c.

Referenced by init_filter(), init_gblur_pipeline(), init_vulkan(), and insert_weights_pass().

◆ ff_vk_init_compute_pipeline()

int ff_vk_init_compute_pipeline ( FFVulkanContext s,
FFVulkanPipeline pl,
FFVkSPIRVShader shd 
)

Definition at line 1783 of file vulkan.c.

Referenced by init_filter(), init_gblur_pipeline(), init_vulkan(), and insert_weights_pass().

◆ ff_vk_pipeline_free()

void ff_vk_pipeline_free ( FFVulkanContext s,
FFVulkanPipeline pl 
)

◆ ff_vk_exec_pipeline_register()

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 1551 of file vulkan.c.

Referenced by init_filter(), init_gblur_pipeline(), init_vulkan(), and insert_weights_pass().

◆ ff_vk_exec_bind_pipeline()

void ff_vk_exec_bind_pipeline ( FFVulkanContext s,
FFVkExecContext e,
FFVulkanPipeline pl 
)

◆ ff_vk_set_descriptor_sampler()

int ff_vk_set_descriptor_sampler ( FFVulkanContext s,
FFVulkanPipeline pl,
FFVkExecContext e,
int  set,
int  bind,
int  offs,
VkSampler *  sampler 
)

Definition at line 1608 of file vulkan.c.

◆ ff_vk_set_descriptor_image()

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 1635 of file vulkan.c.

Referenced by ff_vk_update_descriptor_img_array().

◆ ff_vk_set_descriptor_buffer()

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 1680 of file vulkan.c.

Referenced by init_gblur_pipeline(), and insert_weights_pass().

◆ ff_vk_update_descriptor_img_array()

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 
)

◆ ff_vk_uninit()

void ff_vk_uninit ( FFVulkanContext s)

Variable Documentation

◆ ff_comp_identity_map

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().

C
#define C(N, S)
Definition: vulkan.h:43
D
D(D(float, sse)
Definition: rematrix_init.c:29
S
#define S(s, c, i)
Definition: flacdsp_template.c:46
fail
#define fail()
Definition: checkasm.h:137
N
#define N
Definition: af_mcompand.c:53