FFmpeg
Data Structures | Macros | Functions | Variables
vulkan.c File Reference
#include "avassert.h"
#include "vulkan.h"

Go to the source code of this file.

Data Structures

struct  ImageViewCtx
 
struct  descriptor_props
 

Macros

#define CASE(VAL)   case VAL: return #VAL
 
#define ARR_REALLOC(str, arr, alloc_s, cnt)
 

Functions

const char * ff_vk_ret2str (VkResult res)
 Converts Vulkan return values to strings. More...
 
int ff_vk_load_props (FFVulkanContext *s)
 Loads props/mprops/driver_props. More...
 
static int vk_qf_get_index (FFVulkanContext *s, VkQueueFlagBits dev_family, int *nb)
 
int ff_vk_qf_init (FFVulkanContext *s, FFVkQueueFamilyCtx *qf, VkQueueFlagBits dev_family)
 Chooses a QF and loads it into a context. More...
 
void ff_vk_exec_pool_free (FFVulkanContext *s, FFVkExecPool *pool)
 
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...
 
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...
 
FFVkExecContextff_vk_exec_get (FFVkExecPool *pool)
 Retrieve an execution pool. More...
 
void ff_vk_exec_wait (FFVulkanContext *s, FFVkExecContext *e)
 
int ff_vk_exec_start (FFVulkanContext *s, FFVkExecContext *e)
 Start/submit/wait an execution. More...
 
void ff_vk_exec_discard_deps (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)
 
int ff_vk_exec_submit (FFVulkanContext *s, FFVkExecContext *e)
 
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)
 
static void destroy_avvkbuf (void *opaque, uint8_t *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)
 Buffer management code. More...
 
int ff_vk_unmap_buffers (FFVulkanContext *s, FFVkBuffer **buf, int nb_buffers, int flush)
 
void ff_vk_free_buf (FFVulkanContext *s, FFVkBuffer *buf)
 
static void free_data_buf (void *opaque, uint8_t *data)
 
static AVBufferRefalloc_data_buf (void *opaque, size_t size)
 
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_add_push_constant (FFVulkanPipeline *pl, int offset, int size, VkShaderStageFlagBits stage)
 Add/update push constants for execution. More...
 
int ff_vk_init_sampler (FFVulkanContext *s, VkSampler *sampler, int unnorm_coords, VkFilter filt)
 Create a sampler. 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...
 
static void destroy_imageviews (void *opaque, uint8_t *data)
 
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_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)
 
void ff_vk_shader_free (FFVulkanContext *s, FFVkSPIRVShader *shd)
 
int ff_vk_shader_create (FFVulkanContext *s, FFVkSPIRVShader *shd, uint8_t *spirv, size_t spirv_size, const char *entrypoint)
 
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_exec_pipeline_register (FFVulkanContext *s, FFVkExecPool *pool, FFVulkanPipeline *pl)
 Register a pipeline with an exec pool. More...
 
static void update_set_descriptor (FFVulkanContext *s, FFVkExecContext *e, FFVulkanDescriptorSet *set, int bind_idx, int array_idx, VkDescriptorGetInfoEXT *desc_get_info, size_t desc_size)
 
static int 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_update_push_exec (FFVulkanContext *s, FFVkExecContext *e, FFVulkanPipeline *pl, VkShaderStageFlagBits stage, int offset, size_t size, void *src)
 
static int init_pipeline_layout (FFVulkanContext *s, FFVulkanPipeline *pl)
 
int ff_vk_init_compute_pipeline (FFVulkanContext *s, FFVulkanPipeline *pl, FFVkSPIRVShader *shd)
 
void ff_vk_exec_bind_pipeline (FFVulkanContext *s, FFVkExecContext *e, FFVulkanPipeline *pl)
 
void ff_vk_pipeline_free (FFVulkanContext *s, FFVulkanPipeline *pl)
 
void ff_vk_uninit (FFVulkanContext *s)
 Frees main context. More...
 

Variables

const VkComponentMapping ff_comp_identity_map
 
static const struct descriptor_props descriptor_props []
 

Macro Definition Documentation

◆ CASE

#define CASE (   VAL)    case VAL: return #VAL

◆ ARR_REALLOC

#define ARR_REALLOC (   str,
  arr,
  alloc_s,
  cnt 
)
Value:
do { \
arr = av_fast_realloc(str->arr, alloc_s, (cnt + 1)*sizeof(*arr)); \
if (!arr) { \
ff_vk_exec_discard_deps(s, e); \
return AVERROR(ENOMEM); \
} \
str->arr = arr; \
} while (0)

Function Documentation

◆ ff_vk_ret2str()

const char* ff_vk_ret2str ( VkResult  res)

◆ ff_vk_load_props()

int ff_vk_load_props ( FFVulkanContext s)

Loads props/mprops/driver_props.

Definition at line 85 of file vulkan.c.

Referenced by ff_vk_decode_init(), ff_vk_filter_init_context(), and vulkan_device_init().

◆ vk_qf_get_index()

static int vk_qf_get_index ( FFVulkanContext s,
VkQueueFlagBits  dev_family,
int nb 
)
static

Definition at line 189 of file vulkan.c.

Referenced by ff_vk_qf_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 224 of file vulkan.c.

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

◆ ff_vk_exec_pool_free()

void ff_vk_exec_pool_free ( FFVulkanContext s,
FFVkExecPool pool 
)

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

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

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

Referenced by ff_vk_decode_frame().

◆ ff_vk_exec_get()

FFVkExecContext* ff_vk_exec_get ( FFVkExecPool pool)

◆ ff_vk_exec_wait()

void ff_vk_exec_wait ( FFVulkanContext s,
FFVkExecContext e 
)

Definition at line 503 of file vulkan.c.

Referenced by ff_vk_decode_frame(), and transfer_image_buf().

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

◆ ff_vk_exec_discard_deps()

void ff_vk_exec_discard_deps ( FFVulkanContext s,
FFVkExecContext e 
)

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

Referenced by ff_vk_create_imageviews(), ff_vk_decode_frame(), 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 678 of file vulkan.c.

Referenced by ff_vk_decode_frame(), and 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 697 of file vulkan.c.

Referenced by ff_vk_decode_frame().

◆ ff_vk_exec_submit()

int ff_vk_exec_submit ( FFVulkanContext s,
FFVkExecContext e 
)

◆ 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 789 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 
)

◆ destroy_avvkbuf()

static void destroy_avvkbuf ( void *  opaque,
uint8_t *  data 
)
static

Definition at line 934 of file vulkan.c.

Referenced by ff_vk_create_avbuf().

◆ 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 942 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 969 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 1016 of file vulkan.c.

Referenced by ff_vk_unmap_buffer(), and vulkan_transfer_data().

◆ ff_vk_free_buf()

void ff_vk_free_buf ( FFVulkanContext s,
FFVkBuffer buf 
)

◆ free_data_buf()

static void free_data_buf ( void *  opaque,
uint8_t *  data 
)
static

Definition at line 1069 of file vulkan.c.

Referenced by alloc_data_buf().

◆ alloc_data_buf()

static AVBufferRef* alloc_data_buf ( void *  opaque,
size_t  size 
)
static

Definition at line 1077 of file vulkan.c.

Referenced by ff_vk_get_pooled_buffer().

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

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

Referenced by init_filter(), and init_vulkan().

◆ ff_vk_init_sampler()

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

Create a sampler.

Definition at line 1162 of file vulkan.c.

Referenced by init_filter(), and init_vulkan().

◆ 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 1194 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 1206 of file vulkan.c.

Referenced by init_filter(), and init_vulkan().

◆ destroy_imageviews()

static void destroy_imageviews ( void *  opaque,
uint8_t *  data 
)
static

Definition at line 1218 of file vulkan.c.

Referenced by ff_vk_create_imageviews().

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

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

◆ 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_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 1346 of file vulkan.c.

Referenced by init_filter(), and init_vulkan().

◆ ff_vk_shader_set_compute_sizes()

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

Definition at line 1372 of file vulkan.c.

Referenced by init_filter(), and init_vulkan().

◆ ff_vk_shader_print()

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

Definition at line 1383 of file vulkan.c.

Referenced by glslc_shader_compile(), and shdc_shader_compile().

◆ ff_vk_shader_free()

void ff_vk_shader_free ( FFVulkanContext s,
FFVkSPIRVShader shd 
)

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

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

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

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

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

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

◆ update_set_descriptor()

static void update_set_descriptor ( FFVulkanContext s,
FFVkExecContext e,
FFVulkanDescriptorSet set,
int  bind_idx,
int  array_idx,
VkDescriptorGetInfoEXT *  desc_get_info,
size_t  desc_size 
)
inlinestatic

Definition at line 1619 of file vulkan.c.

Referenced by ff_vk_set_descriptor_buffer(), and vk_set_descriptor_image().

◆ vk_set_descriptor_image()

static int vk_set_descriptor_image ( FFVulkanContext s,
FFVulkanPipeline pl,
FFVkExecContext e,
int  set,
int  bind,
int  offs,
VkImageView  view,
VkImageLayout  layout,
VkSampler  sampler 
)
static

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

Referenced by init_gblur_pipeline().

◆ 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_update_push_exec()

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

◆ init_pipeline_layout()

static int init_pipeline_layout ( FFVulkanContext s,
FFVulkanPipeline pl 
)
static

Definition at line 1749 of file vulkan.c.

Referenced by ff_vk_init_compute_pipeline().

◆ ff_vk_init_compute_pipeline()

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

Definition at line 1784 of file vulkan.c.

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

◆ ff_vk_exec_bind_pipeline()

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

◆ ff_vk_pipeline_free()

void ff_vk_pipeline_free ( FFVulkanContext s,
FFVulkanPipeline pl 
)

◆ ff_vk_uninit()

void ff_vk_uninit ( FFVulkanContext s)

Variable Documentation

◆ ff_comp_identity_map

const VkComponentMapping ff_comp_identity_map
Initial value:
= {
.r = VK_COMPONENT_SWIZZLE_IDENTITY,
.g = VK_COMPONENT_SWIZZLE_IDENTITY,
.b = VK_COMPONENT_SWIZZLE_IDENTITY,
.a = VK_COMPONENT_SWIZZLE_IDENTITY,
}

Definition at line 25 of file vulkan.c.

Referenced by ff_vk_create_imageviews(), and ff_vk_decode_init().

◆ descriptor_props

const struct descriptor_props descriptor_props[]
static
Initial value:
= {
[VK_DESCRIPTOR_TYPE_SAMPLER] = { sizeof(VkDescriptorImageInfo), "sampler", 1, 0, 0, 0, },
[VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE] = { sizeof(VkDescriptorImageInfo), "texture", 1, 0, 1, 0, },
[VK_DESCRIPTOR_TYPE_STORAGE_IMAGE] = { sizeof(VkDescriptorImageInfo), "image", 1, 1, 1, 0, },
[VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT] = { sizeof(VkDescriptorImageInfo), "subpassInput", 1, 0, 0, 0, },
[VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER] = { sizeof(VkDescriptorImageInfo), "sampler", 1, 0, 1, 0, },
[VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER] = { sizeof(VkDescriptorBufferInfo), NULL, 1, 0, 0, 1, },
[VK_DESCRIPTOR_TYPE_STORAGE_BUFFER] = { sizeof(VkDescriptorBufferInfo), "buffer", 0, 1, 0, 1, },
[VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC] = { sizeof(VkDescriptorBufferInfo), NULL, 1, 0, 0, 1, },
[VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC] = { sizeof(VkDescriptorBufferInfo), "buffer", 0, 1, 0, 1, },
[VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER] = { sizeof(VkBufferView), "samplerBuffer", 1, 0, 0, 0, },
[VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER] = { sizeof(VkBufferView), "imageBuffer", 1, 0, 0, 0, },
}
AVERROR
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
av_fast_realloc
void * av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
Reallocate the given buffer if it is not large enough, otherwise do nothing.
Definition: mem.c:495
s
#define s(width, name)
Definition: cbs_vp9.c:198
NULL
#define NULL
Definition: coverity.c:32