FFmpeg  4.3.8
Data Structures | Macros | Enumerations | Functions | Variables
hwcontext_vulkan.c File Reference
#include "config.h"
#include "pixdesc.h"
#include "avstring.h"
#include "imgutils.h"
#include "hwcontext.h"
#include "hwcontext_internal.h"
#include "hwcontext_vulkan.h"

Go to the source code of this file.

Data Structures

struct  VulkanQueueCtx
 
struct  VulkanExecCtx
 
struct  VulkanDevicePriv
 
struct  VulkanFramesPriv
 
struct  AVVkFrameInternal
 
struct  VulkanOptExtension
 
struct  VulkanDeviceSelection
 
struct  VulkanMapping
 
struct  ImageBuffer
 

Macros

#define GET_QUEUE_COUNT(hwctx, graph, comp, tx)
 
#define VK_LOAD_PFN(inst, name)
 
#define DEFAULT_USAGE_FLAGS
 
#define ADD_VAL_TO_LIST(list, count, val)
 
#define CASE(VAL)   case VAL: return #VAL
 
#define SEARCH_FLAGS(expr, out)
 
#define ADD_QUEUE(fidx, graph, comp, tx)
 
#define COPY_FEATURE(DST, NAME)   (DST).features.NAME = dev_features.NAME;
 
#define CHECK_QUEUE(type, n)
 

Enumerations

enum  VulkanExtensions {
  EXT_EXTERNAL_DMABUF_MEMORY = 1ULL << 0, EXT_DRM_MODIFIER_FLAGS = 1ULL << 1, EXT_EXTERNAL_FD_MEMORY = 1ULL << 2, EXT_EXTERNAL_FD_SEM = 1ULL << 3,
  EXT_EXTERNAL_HOST_MEMORY = 1ULL << 4, EXT_NO_FLAG = 1ULL << 63
}
 
enum  PrepMode { PREP_MODE_WRITE, PREP_MODE_RO_SHADER, PREP_MODE_EXTERNAL_EXPORT }
 

Functions

const VkFormat * av_vkfmt_from_pixfmt (enum AVPixelFormat p)
 Returns the format of each image up to the number of planes for a given sw_format. More...
 
static int pixfmt_is_supported (AVVulkanDeviceContext *hwctx, enum AVPixelFormat p, int linear)
 
static const char * vk_ret2str (VkResult res)
 
static VkBool32 vk_dbg_callback (VkDebugUtilsMessageSeverityFlagBitsEXT severity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT *data, void *priv)
 
static int check_extensions (AVHWDeviceContext *ctx, int dev, AVDictionary *opts, const char *const **dst, uint32_t *num, int debug)
 
static int create_instance (AVHWDeviceContext *ctx, AVDictionary *opts)
 
static const char * vk_dev_type (enum VkPhysicalDeviceType type)
 
static int find_device (AVHWDeviceContext *ctx, VulkanDeviceSelection *select)
 
static int search_queue_families (AVHWDeviceContext *ctx, VkDeviceCreateInfo *cd)
 
static int create_exec_ctx (AVHWFramesContext *hwfc, VulkanExecCtx *cmd, int queue_family_index, int num_queues)
 
static void free_exec_ctx (AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
 
static VkCommandBuffer get_buf_exec_ctx (AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
 
static void unref_exec_ctx_deps (AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
 
static int wait_start_exec_ctx (AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
 
static int add_buf_dep_exec_ctx (AVHWFramesContext *hwfc, VulkanExecCtx *cmd, AVBufferRef *const *deps, int nb_deps)
 
static int submit_exec_ctx (AVHWFramesContext *hwfc, VulkanExecCtx *cmd, VkSubmitInfo *s_info, int synchronous)
 
static void vulkan_device_free (AVHWDeviceContext *ctx)
 
static int vulkan_device_create_internal (AVHWDeviceContext *ctx, VulkanDeviceSelection *dev_select, AVDictionary *opts, int flags)
 
static int vulkan_device_init (AVHWDeviceContext *ctx)
 
static int vulkan_device_create (AVHWDeviceContext *ctx, const char *device, AVDictionary *opts, int flags)
 
static int vulkan_device_derive (AVHWDeviceContext *ctx, AVHWDeviceContext *src_ctx, AVDictionary *opts, int flags)
 
static int vulkan_frames_get_constraints (AVHWDeviceContext *ctx, const void *hwconfig, AVHWFramesConstraints *constraints)
 
static int alloc_mem (AVHWDeviceContext *ctx, VkMemoryRequirements *req, VkMemoryPropertyFlagBits req_flags, const void *alloc_extension, VkMemoryPropertyFlagBits *mem_flags, VkDeviceMemory *mem)
 
static void vulkan_free_internal (AVVkFrameInternal *internal)
 
static void vulkan_frame_free (void *opaque, uint8_t *data)
 
static int alloc_bind_mem (AVHWFramesContext *hwfc, AVVkFrame *f, void *alloc_pnext, size_t alloc_pnext_stride)
 
static int prepare_frame (AVHWFramesContext *hwfc, VulkanExecCtx *ectx, AVVkFrame *frame, enum PrepMode pmode)
 
static int create_frame (AVHWFramesContext *hwfc, AVVkFrame **frame, VkImageTiling tiling, VkImageUsageFlagBits usage, void *create_pnext)
 
static void try_export_flags (AVHWFramesContext *hwfc, VkExternalMemoryHandleTypeFlags *comp_handle_types, VkExternalMemoryHandleTypeFlagBits *iexp, VkExternalMemoryHandleTypeFlagBits exp)
 
static AVBufferRefvulkan_pool_alloc (void *opaque, int size)
 
static void vulkan_frames_uninit (AVHWFramesContext *hwfc)
 
static int vulkan_frames_init (AVHWFramesContext *hwfc)
 
static int vulkan_get_buffer (AVHWFramesContext *hwfc, AVFrame *frame)
 
static int vulkan_transfer_get_formats (AVHWFramesContext *hwfc, enum AVHWFrameTransferDirection dir, enum AVPixelFormat **formats)
 
static void vulkan_unmap_frame (AVHWFramesContext *hwfc, HWMapDescriptor *hwmap)
 
static int vulkan_map_frame_to_mem (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
 
static int vulkan_map_to (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
 
static int vulkan_map_from (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
 
static void free_buf (void *opaque, uint8_t *data)
 
static int create_buf (AVHWDeviceContext *ctx, AVBufferRef **buf, size_t imp_size, int height, int *stride, VkBufferUsageFlags usage, VkMemoryPropertyFlagBits flags, void *create_pnext, void *alloc_pnext)
 
static int map_buffers (AVHWDeviceContext *ctx, AVBufferRef **bufs, uint8_t *mem[], int nb_buffers, int invalidate)
 
static int unmap_buffers (AVHWDeviceContext *ctx, AVBufferRef **bufs, int nb_buffers, int flush)
 
static int transfer_image_buf (AVHWFramesContext *hwfc, const AVFrame *f, AVBufferRef **bufs, const int *buf_stride, int w, int h, enum AVPixelFormat pix_fmt, int to_buf)
 
static int vulkan_transfer_data_from_mem (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
 
static int vulkan_transfer_data_to (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
 
static int vulkan_transfer_data_to_mem (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
 
static int vulkan_transfer_data_from (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
 
static int vulkan_frames_derive_to (AVHWFramesContext *dst_fc, AVHWFramesContext *src_fc, int flags)
 
AVVkFrameav_vk_frame_alloc (void)
 Allocates a single AVVkFrame and initializes everything as 0. More...
 

Variables

struct {
   enum AVPixelFormat   pixfmt
 
   const VkFormat   vkfmts [3]
 
vk_pixfmt_map []
 
static const VulkanOptExtension optional_instance_exts []
 
static const VulkanOptExtension optional_device_exts []
 
const HWContextType ff_hwcontext_type_vulkan
 

Macro Definition Documentation

◆ GET_QUEUE_COUNT

#define GET_QUEUE_COUNT (   hwctx,
  graph,
  comp,
  tx 
)
Value:
( \
graph ? hwctx->nb_graphics_queues : \
comp ? (hwctx->nb_comp_queues ? \
hwctx->nb_comp_queues : hwctx->nb_graphics_queues) : \
tx ? (hwctx->nb_tx_queues ? hwctx->nb_tx_queues : \
(hwctx->nb_comp_queues ? \
hwctx->nb_comp_queues : hwctx->nb_graphics_queues)) : \
0 \
)

Definition at line 107 of file hwcontext_vulkan.c.

Referenced by vulkan_frames_init().

◆ VK_LOAD_PFN

#define VK_LOAD_PFN (   inst,
  name 
)
Value:
PFN_##name pfn_##name = (PFN_##name) \
vkGetInstanceProcAddr(inst, #name)
const char * name
Definition: qsvenc.c:46

Definition at line 117 of file hwcontext_vulkan.c.

Referenced by create_instance(), vulkan_device_free(), vulkan_map_frame_to_mem(), and vulkan_map_to().

◆ DEFAULT_USAGE_FLAGS

#define DEFAULT_USAGE_FLAGS
Value:
(VK_IMAGE_USAGE_SAMPLED_BIT | \
VK_IMAGE_USAGE_STORAGE_BIT | \
VK_IMAGE_USAGE_TRANSFER_SRC_BIT | \
VK_IMAGE_USAGE_TRANSFER_DST_BIT)

Definition at line 120 of file hwcontext_vulkan.c.

Referenced by pixfmt_is_supported(), and vulkan_frames_init().

◆ ADD_VAL_TO_LIST

#define ADD_VAL_TO_LIST (   list,
  count,
  val 
)
Value:
do { \
list = av_realloc_array(list, sizeof(*list), ++count); \
if (!list) { \
err = AVERROR(ENOMEM); \
goto fail; \
} \
list[count - 1] = av_strdup(val); \
if (!list[count - 1]) { \
err = AVERROR(ENOMEM); \
goto fail; \
} \
} while(0)
void * av_realloc_array(void *ptr, size_t nmemb, size_t size)
Allocate, reallocate, or free an array.
Definition: mem.c:198
#define AVERROR(e)
Definition: error.h:43
#define fail()
Definition: checkasm.h:123
char * av_strdup(const char *s)
Duplicate a string.
Definition: mem.c:253
static double val(void *priv, double ch)
Definition: aeval.c:76

Definition at line 125 of file hwcontext_vulkan.c.

Referenced by check_extensions().

◆ CASE

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

Referenced by vk_ret2str().

◆ SEARCH_FLAGS

#define SEARCH_FLAGS (   expr,
  out 
)
Value:
for (int i = 0; i < num; i++) { \
const VkQueueFlagBits flags = qs[i].queueFlags; \
if (expr) { \
out = i; \
break; \
} \
}
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:269
#define flags(name, subs,...)
Definition: cbs_av1.c:576

Referenced by search_queue_families().

◆ ADD_QUEUE

#define ADD_QUEUE (   fidx,
  graph,
  comp,
  tx 
)
Value:
av_log(ctx, AV_LOG_VERBOSE, "Using queue family %i (total queues: %i) for %s%s%s\n", \
fidx, qs[fidx].queueCount, graph ? "graphics " : "", \
comp ? "compute " : "", tx ? "transfers " : ""); \
av_log(ctx, AV_LOG_VERBOSE, " QF %i flags: %s%s%s%s\n", fidx, \
((qs[fidx].queueFlags) & VK_QUEUE_GRAPHICS_BIT) ? "(graphics) " : "", \
((qs[fidx].queueFlags) & VK_QUEUE_COMPUTE_BIT) ? "(compute) " : "", \
((qs[fidx].queueFlags) & VK_QUEUE_TRANSFER_BIT) ? "(transfers) " : "", \
((qs[fidx].queueFlags) & VK_QUEUE_SPARSE_BINDING_BIT) ? "(sparse) " : ""); \
pc[cd->queueCreateInfoCount].queueFamilyIndex = fidx; \
pc[cd->queueCreateInfoCount].queueCount = qs[fidx].queueCount; \
weights = av_malloc(qs[fidx].queueCount * sizeof(float)); \
pc[cd->queueCreateInfoCount].pQueuePriorities = weights; \
if (!weights) \
goto fail; \
for (int i = 0; i < qs[fidx].queueCount; i++) \
weights[i] = 1.0f; \
cd->queueCreateInfoCount++;
#define av_malloc(s)
#define f(width, name)
Definition: cbs_vp9.c:255
#define AV_LOG_VERBOSE
Detailed information.
Definition: log.h:192
#define av_log(a,...)
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:269
#define fail()
Definition: checkasm.h:123
AVFormatContext * ctx
Definition: movenc.c:48
static void comp(unsigned char *dst, ptrdiff_t dst_stride, unsigned char *src, ptrdiff_t src_stride, int add)
Definition: eamad.c:83

Referenced by search_queue_families().

◆ COPY_FEATURE

#define COPY_FEATURE (   DST,
  NAME 
)    (DST).features.NAME = dev_features.NAME;

◆ CHECK_QUEUE

#define CHECK_QUEUE (   type,
 
)
Value:
if (n >= queue_num) { \
av_log(ctx, AV_LOG_ERROR, "Invalid %s queue index %i (device has %i queues)!\n", \
type, n, queue_num); \
return AVERROR(EINVAL); \
}
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176
#define AVERROR(e)
Definition: error.h:43
AVFormatContext * ctx
Definition: movenc.c:48
cl_device_type type

Referenced by vulkan_device_init().

Enumeration Type Documentation

◆ VulkanExtensions

Enumerator
EXT_EXTERNAL_DMABUF_MEMORY 
EXT_DRM_MODIFIER_FLAGS 
EXT_EXTERNAL_FD_MEMORY 
EXT_EXTERNAL_FD_SEM 
EXT_EXTERNAL_HOST_MEMORY 
EXT_NO_FLAG 

Definition at line 207 of file hwcontext_vulkan.c.

◆ PrepMode

enum PrepMode
Enumerator
PREP_MODE_WRITE 
PREP_MODE_RO_SHADER 
PREP_MODE_EXTERNAL_EXPORT 

Definition at line 1423 of file hwcontext_vulkan.c.

Function Documentation

◆ av_vkfmt_from_pixfmt()

const VkFormat* av_vkfmt_from_pixfmt ( enum AVPixelFormat  p)

Returns the format of each image up to the number of planes for a given sw_format.

Returns NULL on unsupported formats.

Definition at line 175 of file hwcontext_vulkan.c.

Referenced by create_frame(), pixfmt_is_supported(), process_frames(), try_export_flags(), and vulkan_map_to().

◆ pixfmt_is_supported()

static int pixfmt_is_supported ( AVVulkanDeviceContext hwctx,
enum AVPixelFormat  p,
int  linear 
)
static

Definition at line 183 of file hwcontext_vulkan.c.

Referenced by vulkan_frames_get_constraints().

◆ vk_ret2str()

static const char* vk_ret2str ( VkResult  res)
static

◆ vk_dbg_callback()

static VkBool32 vk_dbg_callback ( VkDebugUtilsMessageSeverityFlagBitsEXT  severity,
VkDebugUtilsMessageTypeFlagsEXT  messageType,
const VkDebugUtilsMessengerCallbackDataEXT *  data,
void priv 
)
static

Definition at line 275 of file hwcontext_vulkan.c.

Referenced by create_instance().

◆ check_extensions()

static int check_extensions ( AVHWDeviceContext ctx,
int  dev,
AVDictionary opts,
const char *const **  dst,
uint32_t *  num,
int  debug 
)
static

Definition at line 298 of file hwcontext_vulkan.c.

Referenced by create_instance(), and vulkan_device_create_internal().

◆ create_instance()

static int create_instance ( AVHWDeviceContext ctx,
AVDictionary opts 
)
static

Definition at line 429 of file hwcontext_vulkan.c.

Referenced by vulkan_device_create_internal().

◆ vk_dev_type()

static const char* vk_dev_type ( enum VkPhysicalDeviceType  type)
static

Definition at line 509 of file hwcontext_vulkan.c.

Referenced by find_device().

◆ find_device()

static int find_device ( AVHWDeviceContext ctx,
VulkanDeviceSelection select 
)
static

Definition at line 521 of file hwcontext_vulkan.c.

Referenced by vulkan_device_create_internal().

◆ search_queue_families()

static int search_queue_families ( AVHWDeviceContext ctx,
VkDeviceCreateInfo *  cd 
)
static

Definition at line 642 of file hwcontext_vulkan.c.

Referenced by vulkan_device_create_internal().

◆ create_exec_ctx()

static int create_exec_ctx ( AVHWFramesContext hwfc,
VulkanExecCtx cmd,
int  queue_family_index,
int  num_queues 
)
static

Definition at line 736 of file hwcontext_vulkan.c.

Referenced by ff_vk_create_exec_ctx(), and vulkan_frames_init().

◆ free_exec_ctx()

static void free_exec_ctx ( AVHWFramesContext hwfc,
VulkanExecCtx cmd 
)
static

Definition at line 791 of file hwcontext_vulkan.c.

Referenced by vulkan_frames_init(), and vulkan_frames_uninit().

◆ get_buf_exec_ctx()

static VkCommandBuffer get_buf_exec_ctx ( AVHWFramesContext hwfc,
VulkanExecCtx cmd 
)
static

Definition at line 823 of file hwcontext_vulkan.c.

Referenced by prepare_frame(), and transfer_image_buf().

◆ unref_exec_ctx_deps()

static void unref_exec_ctx_deps ( AVHWFramesContext hwfc,
VulkanExecCtx cmd 
)
static

Definition at line 828 of file hwcontext_vulkan.c.

Referenced by add_buf_dep_exec_ctx(), submit_exec_ctx(), and wait_start_exec_ctx().

◆ wait_start_exec_ctx()

static int wait_start_exec_ctx ( AVHWFramesContext hwfc,
VulkanExecCtx cmd 
)
static

Definition at line 837 of file hwcontext_vulkan.c.

Referenced by prepare_frame(), and transfer_image_buf().

◆ add_buf_dep_exec_ctx()

static int add_buf_dep_exec_ctx ( AVHWFramesContext hwfc,
VulkanExecCtx cmd,
AVBufferRef *const *  deps,
int  nb_deps 
)
static

Definition at line 878 of file hwcontext_vulkan.c.

Referenced by transfer_image_buf().

◆ submit_exec_ctx()

static int submit_exec_ctx ( AVHWFramesContext hwfc,
VulkanExecCtx cmd,
VkSubmitInfo *  s_info,
int  synchronous 
)
static

Definition at line 908 of file hwcontext_vulkan.c.

Referenced by prepare_frame(), and transfer_image_buf().

◆ vulkan_device_free()

static void vulkan_device_free ( AVHWDeviceContext ctx)
static

Definition at line 945 of file hwcontext_vulkan.c.

Referenced by vulkan_device_create_internal().

◆ vulkan_device_create_internal()

static int vulkan_device_create_internal ( AVHWDeviceContext ctx,
VulkanDeviceSelection dev_select,
AVDictionary opts,
int  flags 
)
static

Definition at line 969 of file hwcontext_vulkan.c.

Referenced by vulkan_device_create(), and vulkan_device_derive().

◆ vulkan_device_init()

static int vulkan_device_init ( AVHWDeviceContext ctx)
static

Definition at line 1052 of file hwcontext_vulkan.c.

◆ vulkan_device_create()

static int vulkan_device_create ( AVHWDeviceContext ctx,
const char *  device,
AVDictionary opts,
int  flags 
)
static

Definition at line 1122 of file hwcontext_vulkan.c.

◆ vulkan_device_derive()

static int vulkan_device_derive ( AVHWDeviceContext ctx,
AVHWDeviceContext src_ctx,
AVDictionary opts,
int  flags 
)
static

Definition at line 1138 of file hwcontext_vulkan.c.

◆ vulkan_frames_get_constraints()

static int vulkan_frames_get_constraints ( AVHWDeviceContext ctx,
const void hwconfig,
AVHWFramesConstraints constraints 
)
static

Definition at line 1209 of file hwcontext_vulkan.c.

◆ alloc_mem()

static int alloc_mem ( AVHWDeviceContext ctx,
VkMemoryRequirements *  req,
VkMemoryPropertyFlagBits  req_flags,
const void alloc_extension,
VkMemoryPropertyFlagBits *  mem_flags,
VkDeviceMemory *  mem 
)
static

Definition at line 1256 of file hwcontext_vulkan.c.

Referenced by alloc_bind_mem(), create_buf(), and vulkan_map_frame_to_mem().

◆ vulkan_free_internal()

static void vulkan_free_internal ( AVVkFrameInternal internal)
static

◆ vulkan_frame_free()

static void vulkan_frame_free ( void opaque,
uint8_t data 
)
static

◆ alloc_bind_mem()

static int alloc_bind_mem ( AVHWFramesContext hwfc,
AVVkFrame f,
void alloc_pnext,
size_t  alloc_pnext_stride 
)
static

Definition at line 1355 of file hwcontext_vulkan.c.

Referenced by vulkan_pool_alloc().

◆ prepare_frame()

static int prepare_frame ( AVHWFramesContext hwfc,
VulkanExecCtx ectx,
AVVkFrame frame,
enum PrepMode  pmode 
)
static

Definition at line 1429 of file hwcontext_vulkan.c.

Referenced by vulkan_map_frame_to_mem(), vulkan_map_to(), and vulkan_pool_alloc().

◆ create_frame()

static int create_frame ( AVHWFramesContext hwfc,
AVVkFrame **  frame,
VkImageTiling  tiling,
VkImageUsageFlagBits  usage,
void create_pnext 
)
static

Definition at line 1502 of file hwcontext_vulkan.c.

Referenced by vulkan_frames_init(), and vulkan_pool_alloc().

◆ try_export_flags()

static void try_export_flags ( AVHWFramesContext hwfc,
VkExternalMemoryHandleTypeFlags *  comp_handle_types,
VkExternalMemoryHandleTypeFlagBits *  iexp,
VkExternalMemoryHandleTypeFlagBits  exp 
)
static

Definition at line 1594 of file hwcontext_vulkan.c.

Referenced by vulkan_pool_alloc().

◆ vulkan_pool_alloc()

static AVBufferRef* vulkan_pool_alloc ( void opaque,
int  size 
)
static

Definition at line 1631 of file hwcontext_vulkan.c.

Referenced by vulkan_frames_init().

◆ vulkan_frames_uninit()

static void vulkan_frames_uninit ( AVHWFramesContext hwfc)
static

Definition at line 1687 of file hwcontext_vulkan.c.

◆ vulkan_frames_init()

static int vulkan_frames_init ( AVHWFramesContext hwfc)
static

Definition at line 1696 of file hwcontext_vulkan.c.

Referenced by vulkan_frames_derive_to().

◆ vulkan_get_buffer()

static int vulkan_get_buffer ( AVHWFramesContext hwfc,
AVFrame frame 
)
static

Definition at line 1759 of file hwcontext_vulkan.c.

◆ vulkan_transfer_get_formats()

static int vulkan_transfer_get_formats ( AVHWFramesContext hwfc,
enum AVHWFrameTransferDirection  dir,
enum AVPixelFormat **  formats 
)
static

Definition at line 1773 of file hwcontext_vulkan.c.

◆ vulkan_unmap_frame()

static void vulkan_unmap_frame ( AVHWFramesContext hwfc,
HWMapDescriptor hwmap 
)
static

Definition at line 1793 of file hwcontext_vulkan.c.

Referenced by vulkan_map_frame_to_mem().

◆ vulkan_map_frame_to_mem()

static int vulkan_map_frame_to_mem ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src,
int  flags 
)
static

Definition at line 1825 of file hwcontext_vulkan.c.

Referenced by vulkan_map_from().

◆ vulkan_map_to()

static int vulkan_map_to ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src,
int  flags 
)
static

Definition at line 2476 of file hwcontext_vulkan.c.

◆ vulkan_map_from()

static int vulkan_map_from ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src,
int  flags 
)
static

Definition at line 2649 of file hwcontext_vulkan.c.

◆ free_buf()

static void free_buf ( void opaque,
uint8_t data 
)
static

Definition at line 2677 of file hwcontext_vulkan.c.

Referenced by create_buf().

◆ create_buf()

static int create_buf ( AVHWDeviceContext ctx,
AVBufferRef **  buf,
size_t  imp_size,
int  height,
int stride,
VkBufferUsageFlags  usage,
VkMemoryPropertyFlagBits  flags,
void create_pnext,
void alloc_pnext 
)
static

Definition at line 2691 of file hwcontext_vulkan.c.

◆ map_buffers()

static int map_buffers ( AVHWDeviceContext ctx,
AVBufferRef **  bufs,
uint8_t mem[],
int  nb_buffers,
int  invalidate 
)
static

Definition at line 2779 of file hwcontext_vulkan.c.

◆ unmap_buffers()

static int unmap_buffers ( AVHWDeviceContext ctx,
AVBufferRef **  bufs,
int  nb_buffers,
int  flush 
)
static

Definition at line 2827 of file hwcontext_vulkan.c.

◆ transfer_image_buf()

static int transfer_image_buf ( AVHWFramesContext hwfc,
const AVFrame f,
AVBufferRef **  bufs,
const int buf_stride,
int  w,
int  h,
enum AVPixelFormat  pix_fmt,
int  to_buf 
)
static

Definition at line 2870 of file hwcontext_vulkan.c.

◆ vulkan_transfer_data_from_mem()

static int vulkan_transfer_data_from_mem ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src 
)
static

Definition at line 2985 of file hwcontext_vulkan.c.

Referenced by vulkan_transfer_data_to().

◆ vulkan_transfer_data_to()

static int vulkan_transfer_data_to ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src 
)
static

Definition at line 3084 of file hwcontext_vulkan.c.

◆ vulkan_transfer_data_to_mem()

static int vulkan_transfer_data_to_mem ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src 
)
static

Definition at line 3174 of file hwcontext_vulkan.c.

Referenced by vulkan_transfer_data_from().

◆ vulkan_transfer_data_from()

static int vulkan_transfer_data_from ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src 
)
static

Definition at line 3268 of file hwcontext_vulkan.c.

◆ vulkan_frames_derive_to()

static int vulkan_frames_derive_to ( AVHWFramesContext dst_fc,
AVHWFramesContext src_fc,
int  flags 
)
static

Definition at line 3288 of file hwcontext_vulkan.c.

◆ av_vk_frame_alloc()

AVVkFrame* av_vk_frame_alloc ( void  )

Allocates a single AVVkFrame and initializes everything as 0.

Note
Must be freed via av_free()

Definition at line 3294 of file hwcontext_vulkan.c.

Referenced by create_frame(), and vulkan_map_frame_to_mem().

Variable Documentation

◆ pixfmt

enum AVPixelFormat pixfmt

Definition at line 140 of file hwcontext_vulkan.c.

Referenced by av_vkfmt_from_pixfmt().

◆ vkfmts

const VkFormat vkfmts[3]

Definition at line 141 of file hwcontext_vulkan.c.

◆ vk_pixfmt_map

const { ... } vk_pixfmt_map[]

Referenced by av_vkfmt_from_pixfmt().

◆ optional_instance_exts

const VulkanOptExtension optional_instance_exts[]
static
Initial value:
= {
}

Definition at line 222 of file hwcontext_vulkan.c.

Referenced by check_extensions().

◆ optional_device_exts

const VulkanOptExtension optional_device_exts[]
static
Initial value:
= {
{ VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME, EXT_EXTERNAL_FD_MEMORY, },
{ VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME, EXT_EXTERNAL_DMABUF_MEMORY, },
{ VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME, EXT_DRM_MODIFIER_FLAGS, },
{ VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, EXT_EXTERNAL_FD_SEM, },
{ VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, EXT_EXTERNAL_HOST_MEMORY, },
}

Definition at line 226 of file hwcontext_vulkan.c.

Referenced by check_extensions().

◆ ff_hwcontext_type_vulkan

const HWContextType ff_hwcontext_type_vulkan

Definition at line 3299 of file hwcontext_vulkan.c.