parent #GstVulkanBarrierMemoryInfo
offset into the vulkan buffer to execute the barrier with
size of memory to execute barrier over
parent #GstVulkanBarrierMemoryInfo
the image layout of this barrier
what subresource the barrier applies to
the #GstVulkanBarrierType of the barrier
@flags the #GstVulkanBarrierFlags of the barrier
the #GstVulkanQueue this barrier is to execute with
the stages in the graphics pipeline to execute the barrier
access flags
Timeline semaphore
Current value of the timeline semaphore
no barrier type
parent #GstMemory
the #GstVulkanDevice this vulkan buffer is allocated from
Vulkan buffer object
backing #GstVulkanMemory for @buffer
allocation requirements for @buffer
intended usage for @buffer
the last set barrier information
Allocate a new #GstVulkanBufferMemory.
a #GstMemory object backed by a vulkan buffer
backed by vulkan device memory
a #GstVulkanDevice
size of the new buffer
buffer usage flags
memory properties flags for the backing memory
Allocate a new #GstVulkanBufferMemory.
a #GstMemory object backed by a vulkan buffer
backed by vulkan device memory
a #GstVulkanDevice
the VkBufferCreateInfo structure
memory properties flags for the backing memory
Initializes the Vulkan buffer memory allocator. It is safe to call this function
multiple times. This must be called before any other #GstVulkanBufferMemory operation.
Allocated a new wrapped #GstVulkanBufferMemory with @buffer.
a #GstMemory object backed by a vulkan device memory
a #GstVulkanDevice
a `VkBuffer`
usage flags of @buffer
user data to call @notify with
a #GDestroyNotify called when @buffer is no longer in use
Opaque #GstVulkanBufferMemoryAllocator struct
the parent #GstAllocator
The #GstVulkanBufferMemoryAllocatorClass only contains private data
the parent #GstAllocatorClass
Opaque #GstVulkanBufferPool struct
a #GstBufferPool that allocates buffers with #GstGLMemory
the #GstVulkanDevice to use
Sets the @usage of the buffers to setup.
the #GstStructure with the pool's configuration.
The Vulkan buffer usage flags.
the parent #GstBufferPool
the #GstVulkanDevice to allocate Vulkan buffers from
The #GstVulkanBufferPoolClass structure contains only private data
the parent #GstBufferPoolClass
the parent #GstMiniObject
the vulkan command buffer handle
the parent #GstVulkanCommandPool for command buffer reuse and locking
the level of the vulkan command buffer
a new #GstVulkanCommandBuffer
a VkCommandBuffer
the VkCommandBufferLevel for @cmd
Increases the refcount of the given buffer by one.
@cmd
a #GstVulkanCommandBuffer.
Decreases the refcount of the buffer. If the refcount reaches 0, the buffer
will be freed.
a #GstVulkanCommandBuffer.
a new or recycled primary #GstVulkanCommandBuffer
a #GstVulkanCommandPool
the parent #GstVulkanQueue for this command pool
a #GstVulkanCommandPool
This should be called to ensure no other thread will attempt to access
the pool's internal resources. Any modification of any of the allocated
#GstVulkanCommandBuffer's need to be encapsulated in a
gst_vulkan_command_pool_lock()/gst_vulkan_command_pool_unlock() pair to meet
the Vulkan API requirements that host access to the command pool is
externally synchronised.
a #GstVulkanCommandPool
See the documentation for gst_vulkan_command_pool_lock() for when you would
need to use this function.
a #GstVulkanCommandPool
the parent #GstObject
the #GstVulkanQueue to command buffers will be allocated from
the vulkan command pool handle
the parent #GstObjectClass
a new #GstVulkanDescriptorCache
a #GstVulkanDescriptorPool
number of @layouts
list of #GstVulkanHandle containing
descriptor set layouts
a new #GstVulkanDescriptorSet
a #GstVulkanDescriptorCache
the parent #GstVulkanHandlePool
the #GstVulkanDescriptorPool to cache descriptor sets for
the parent #GstObjectClass
a new #GstVulkanDescriptorPool
a #GstVulkanDevice
a `VkDescriptorPool`
maximum descriptor sets allocatable wit @pool
a new #GstVulkanDescriptorSet
a #GstVulkanDescriptorPool
number of @layouts
list of #GstVulkanHandle containing
descriptor set layouts
the parent #GstVulkanDevice for this descriptor pool
a #GstVulkanDescriptorPool
the maximum number of sets allocatable from @pool
a #GstVulkanDescriptorPool
the parent #GstObject
the #GstVulkanDevice for descriptor sets
the vulksn descriptor pool handle
the parent #GstObjectClass
the parent #GstMiniObject
the vulkan descriptor set handle
the parent #GstVulkanDescriptorPool for pooling
the parent #GstVulkanDescriptorCache for reuse
number of layouts applied to this descriptor set
layouts applied to this descriptor set
a new #GstVulkanDescriptorSet
a VkDescriptorSet
number of @layouts
list of #GstVulkanHandle containing
descriptor set layouts
Increases the refcount of the given buffer by one.
@set
a #GstVulkanDescriptorSet.
Decreases the refcount of the buffer. If the refcount reaches 0, the buffer
will be freed.
a #GstVulkanDescriptorSet.
a new #GstVulkanDevice
the associated #GstVulkanPhysicalDevice
a new #GstVulkanDevice
the associated #GstVulkanInstance
the device index to create the new #GstVulkanDevice from
If a #GstVulkanDevice is requested in @query, sets @device as the reply.
Intended for use with element query handlers to respond to #GST_QUERY_CONTEXT
for a #GstVulkanDevice.
whether @query was responded to with @device
a #GstElement
a #GstQuery of type #GST_QUERY_CONTEXT
the #GstVulkanDevice
Attempt to retrieve a #GstVulkanDevice using #GST_QUERY_CONTEXT from the
surrounding elements of @element.
whether @device contains a valid #GstVulkanDevice
a #GstElement
a #GstVulkanDevice
a new #GstVulkanFence or %NULL
a #GstVulkanDevice
Disable an Vulkan extension by @name. Disabling an extension will only have
an effect before the call to gst_vulkan_device_open().
whether the Vulkan extension could be disabled.
a #GstVulkanDevice
extension name to enable
Enable an Vulkan extension by @name. Enabling an extension will
only have an effect before the call to gst_vulkan_device_open().
whether the Vulkan extension could be enabled.
a #GstVulkanDevice
extension name to enable
Enable an Vulkan layer by @name. Enabling a layer will
only have an effect before the call to gst_vulkan_device_open().
whether the Vulkan layer could be enabled.
a #GstVulkanDevice
layer name to enable
Iterate over each queue family available on #GstVulkanDevice
a #GstVulkanDevice
a #GstVulkanDeviceForEachQueueFunc to run for each #GstVulkanQueue
user data to pass to each call of @func
the #GstVulkanInstance used to create this @device
a #GstVulkanDevice
The VkPhysicalDevice used to create @device
a #GstVulkanDevice
Performs `vkGetDeviceProcAddr()` with @device and @name
the function pointer for @name or %NULL
a #GstVulkanDevice
name of the function to retrieve
a new #GstVulkanQueue
a #GstVulkanDevice
a queue family to retrieve
index of the family to retrieve
whether extension @name is enabled
a # GstVulkanDevice
extension name
whether layer @name is enabled
a # GstVulkanDevice
layer name
Attempts to create the internal `VkDevice` object.
whether a vulkan device could be created
a #GstVulkanDevice
An array with the family
indexes of the created queues in @device
a #GstVulkanDevice
Select a compatible queue from the @device supporting the @expected_flags.
a #GstVulkanQueue for @queue matching the
@expected_flags
a #GstVulkanDevice
a VkQueueFlagBits
the parent #GstObject
the #GstVulkanInstance this device was allocated with
the #GstVulkanPhysicalDevice this device was allocated with
the vulkan device handle
the parent #GstObjectClass
The contents of a #GstVulkanDisplay are private and should only be accessed
through the provided API
a new #GstVulkanDisplay
a new #GstVulkanDisplay or %NULL if
e.g. @type is unsupported
a #GstVulkanInstance
the #GstVulkanDisplayType to create
This function will read the `GST_VULKAN_WINDOW` environment variable for
a user choice or choose the first supported implementation.
gst_vulkan_instance_fill_info() must have been called prior to this function.
the default #GstVulkanDisplayType #GstVulkanInstance will choose
on creation
a #GstVulkanInstance
If a #GstVulkanDisplay is requested in @query, sets @device as the reply.
Intended for use with element query handlers to respond to #GST_QUERY_CONTEXT
for a #GstVulkanDisplay.
whether @query was responded to with @display
a #GstElement
a #GstQuery of type #GST_QUERY_CONTEXT
the #GstVulkanDisplay
Attempt to retrieve a #GstVulkanDisplay using #GST_QUERY_CONTEXT from the
surrounding elements of @element.
whether @display contains a valid #GstVulkanDisplay
a #GstElement
a #GstVulkanDisplay
a new #GstVulkanWindow for @display or
%NULL.
a #GstVulkanDisplay
the winsys specific handle of @display
a #GstVulkanDisplay
a new #GstVulkanWindow for @display or
%NULL.
a #GstVulkanDisplay
Execute @compare_func over the list of windows stored by @display. The
first argument to @compare_func is the #GstVulkanWindow being checked and the
second argument is @data.
The first #GstVulkanWindow that
@compare_func matches, or %NULL
a #GstVulkanDisplay
some data to pass to @compare_func
a comparison function to run
the winsys specific handle of @display
a #GstVulkanDisplay
the #GstVulkanDisplayType of @display
a #GstVulkanDisplay
whether the window was successfully removed
a #GstVulkanDisplay
the #GstVulkanWindow to remove
parent #GstObjectClass
the winsys specific handle of @display
a #GstVulkanDisplay
a new #GstVulkanWindow for @display or
%NULL.
a #GstVulkanDisplay
no display
XCB display
wayland display
cocoa display for macOS
ios display
win32 display
any display type
the Vulkan extension string required for creating a
VkSurfaceKHR using a window system handle or %NULL
a #GstVulkanDisplayType
Encoder query result. Expected to be used in gst_vulkan_operation_get_query()
buffer offset
data size
status
undetermined error
if @result indicates an error condition, fills out #GError with details of
the error
@result for easy chaining
a VkResult
a #GError to fill
the printf-like format to write into the #GError
arguments for @format
the parent #GstMiniObject
the #GstVulkanDevice this fence is allocated from
the parent #GstVulkanFenceCache for fence reuse
the vulkan fence handle
a new #GstVulkanFence or %NULL on error
the parent #GstVulkanDevice
a new #GstVulkanFence that is always in the signalled state
whether @fence has been signalled
a #GstVulkanFence
the parent #GstVulkanHandlePool
the parent #GstVulkanHandlePoolClass
is a YUV format
is a RGB format
has an alpha channel
data is stored in little-endiate byte order
data is stored complex and cannot be read/write only using the information in the #GstVulkanFormatInfo
the Vulkan format being described
name of this format
how raw data is interpreted and scaled
flags that apply to this format
The number of bits used to pack data items. This can be less than
8 when multiple pixels are stored in a byte. for values > 8 multiple
bytes should be read according to the endianness flag before
applying the shift and mask.
@n_components; number of components in this format
the number of bits to shift away to get the component data
the depth in bits for each component
the number of planes for this format. The number of planes can
be less than the amount of components when multiple components
are packed into one plane.
the plane number where a component can be found
the offset in the plane where the first pixel of the components
can be found.
subsampling factor of the width for the component.
Use GST_VIDEO_SUB_SCALE to scale a width.
subsampling factor of the height for the component.
Use GST_VIDEO_SUB_SCALE to scale a height.
image aspect of this format
[0, 2^n - 1] -> [0.0, 1.0]
[-2^(n-1), 2^(n-1) - 1] -> [-1.0, 1.0]
[0, 2^n - 1] -> [0.0, float(2^n - 1)]
[-2^(n-1), 2^(n-1) - 1] -> [float(-2^(n-1)), float(2^(n-1) - 1)]
[0, 2^n - 1] -> [0, 2^n - 1]
[-2^(n-1), 2^(n-1) - 1] -> [-2^(n-1), 2^(n-1) - 1]
@GST_VULKAN_FORMAT_SCALING_UNORM but the first three components are gamma corrected for the sRGB colour space.
a new #GstVulkanFullScreenQuad
a #GstVulkanQueue
Helper function for creation and submission of a command buffer that draws
a full screen quad. If you need to add other things to the command buffer,
create the command buffer manually and call
gst_vulkan_full_screen_quad_prepare_draw(),
gst_vulkan_full_screen_quad_fill_command_buffer() and
gst_vulkan_full_screen_quad_submit() instead.
whether the draw was successful
the #GstVulkanFullScreenQuad
Enables blending of the input image to the output image.
See also: gst_vulkan_full_screen_quad_set_blend_operation() and
gst_vulkan_full_screen_quad_set_blend_factors().
the #GstVulkanFullScreenQuad
whether to enable blending
the #GstVulkanFullScreenQuad
whether to clear the framebuffer on load
whether @cmd could be filled with the necessary commands
a #GstVulkanFullScreenQuad
the #GstVulkanCommandBuffer to fill with commands
whether the necessary information could be generated for drawing a
frame.
the #GstVulkanFullScreenQuad
a #GstVulkanFence that will be signalled after submission
You need to enable blend with gst_vulkan_full_screen_quad_enable_blend().
See also: gst_vulkan_full_screen_quad_set_blend_operation().
the #GstVulkanFullScreenQuad
the `VkBlendFactor` for the source image for the colour
components (RGB)
the `VkBlendFactor` for the destination image for the
colour components (RGB)
the `VkBlendFactor` for the source image for the
alpha component.
the `VkBlendFactor` for the destination image for
the alpha component.
You need to enable blend with gst_vulkan_full_screen_quad_enable_blend().
See also: gst_vulkan_full_screen_quad_set_blend_factors().
the #GstVulkanFullScreenQuad
the `VkBlendOp` to use for blending colour (RGB) values
the `VkBlendOp` to use for blending alpha values
See also gst_vulkan_full_screen_quad_set_vertex_buffer()
whether the index data could be set
the #GstVulkanFullScreenQuad
the index data. Must be a #GstVulkanBufferMemory
number of indices in @indices
whether the information could be successfully set
the #GstVulkanFullScreenQuad
the input #GstVideoInfo to set
the output #GstVideoInfo to set
whether the input buffer could be changed
the #GstVulkanFullScreenQuad
the input #GstBuffer to set
whether the input buffer could be changed
the #GstVulkanFullScreenQuad
the output #GstBuffer to set
whether the shaders could be set
the #GstVulkanFullScreenQuad
the vertex shader to set
the fragment shader to set
whether the shaders could be set
the #GstVulkanFullScreenQuad
the uniform data to set. Must be a #GstVulkanBufferMemory
whether the index data could be set
the #GstVulkanFullScreenQuad
the vertex data. Must be a #GstVulkanBufferMemory
whether @cmd could be submitted to the queue
a #GstVulkanFullScreenQuad
a #GstVulkanCommandBuffer to submit
a #GstVulkanFence to signal on completion
the parent #GstObject
the configured output #GstVideoInfo
the configured input #GstVideoInfo
the #GstVulkanQueue to submit #GstVulkanCommandBuffer's on
the configured `VkRenderPass`
the configured `VkPipelineLayout`
the configured `VkPipeline`
the configured `VkDescriptorSetLayout`
the configured #GstVulkanDescriptorCache
the configured #GstVulkanDescriptorSet
the configured `VkFramebuffer`
the configured `VkSampler`
the #GstVulkanCommandPool to allocate #GstVulkanCommandBuffer's from
the #GstVulkanTrashList for freeing unused resources
the last configured #GstVulkanFences
the parent #GstObjectClass
Holds information about a vulkan non dispatchable handle that only has
a vulkan device as a parent and no specific host synchronisation
requirements. Command buffers have extra requirements that are serviced by
more specific implementations (#GstVulkanCommandBuffer, #GstVulkanCommandPool).
the parent #GstMiniObject
the #GstVulkanDevice for this handle
the type of handle
the handle value
a new #GstVulkanHandle wrapping @handle
a Vulkan handle
a #GDestroyNotify
data to pass to @notify
Frees the descriptor set layout in @handle
a #GstVulkanHandle containing a vulkan `VkDescriptorSetLayout`
callback user data
Frees the framebuffer in @handle
a #GstVulkanHandle containing a vulkan `VkFramebuffer`
callback user data
Frees the pipeline in @handle
a #GstVulkanHandle containing a vulkan `VkPipeline`
callback user data
Frees the pipeline layout in @handle
a #GstVulkanHandle containing a vulkan `VkPipelineLayout`
callback user data
Frees the render pass in @handle
a #GstVulkanHandle containing a vulkan `VkRenderPass`
callback user data
Frees the sampler in @handle
a #GstVulkanHandle containing a vulkan `VkSampler`
callback user data
Frees the shader in @handle
a #GstVulkanHandle containing a vulkan `VkFramebuffer`
callback user data
Increases the refcount of the given handle by one.
@buf
a #GstVulkanHandle.
Decreases the refcount of the buffer. If the refcount reaches 0, the buffer
will be freed.
a #GstVulkanHandle.
Whether the @query was successfully responded to from the passed
@display, @instance, and @device.
a #GstElement
a #GstQuery of type %GST_QUERY_CONTEXT
a #GstVulkanDisplay
a #GstVulkanInstance
a #GstVulkanInstance
Helper function for implementing #GstElementClass.set_context() in
Vulkan capable elements.
Retrieve's the #GstVulkanDisplay or #GstVulkanInstance in @context and places
the result in @display or @instance respectively.
whether the @display or @instance could be set successfully
a #GstElement
a #GstContext
location of a #GstVulkanDisplay
location of a #GstVulkanInstance
Function definition called when the #GstVulkanHandle is no longer in use.
All implementations of this callback must free the internal handle stored
inside @handle.
the #GstVulkanHandle
callback user data
the parent #GstObject
the #GstVulkanDevice handles are allocated from
the collection of outstanding handles
the collection of allocated and available handles
the parent #GstObjectClass
descripter set layout
pipeline layout
pipeline
render pass
sampler
framebuffer
shader
video session
video session parameters
sampler with YCBCR conversion
a #GstBufferPool that allocates buffers with #GstGLMemory
the #GstVulkanDevice to use
Sets the @usage and @mem_properties of the images to setup.
the #GstStructure with the pool's configuration.
The Vulkan image usage flags.
Vulkan memory property flags.
Initial Vulkan image layout.
Access flags for the layout transition if @initial_layout is
not VK_IMAGE_LAYOUT_UNDEFINED or VK_IMAGE_LAYOUT_PREINITIALIZED.
Decode @caps are used when the buffers are going to be used either as decoded
dest or DPB images.
the #GstStructure with the pool's configuration.
Upstream decode caps.
Encode @caps are used when the buffers are going to be used either as encoded
src or DPB images.
the #GstStructure with the pool's configuration.
Upstream encode caps.
parent #GstBufferPool
the #GstVulkanDevice to allocate images from
The #GstVulkanImageBufferPoolClass structure contains only private data
parent #GstBufferPoolClass
parent #GstMemory
the #GstVulkanDevice to allocate images from
the Vulkan image handle
the backing #GstVulkanMemory for @image
creation information for @image
memory requirements for @image
format properties
intended usage for @image
last set barrier for @image
a #GstVulkanImageMemory
a #GstVulkanImageView
the first #GstVulkanImageView that
@find_func returns %TRUE for, or %NULL
a #GstVulkanImageMemory
#GstVulkanImageMemoryFindViewFunc to search with
user data to call @finc_func with
the height of @image
a #GstVulkanImageMemory
the width of @image
a #GstVulkanImageMemory
Allocated a new #GstVulkanImageMemory.
a #GstMemory object backed by a vulkan device memory
a #GstVulkanDevice
the VkFormat for the new image
width for the new image
height for the new image
tiling for the new image
usage flags for the new image
VkDeviceMemory property flags for the new image
a #GstMemory object backed by a vulkan device memory
a #GstVulkanDevice
VkImageCreateInfo structure
VkMemoryPropertyFlags flags
Initializes the Vulkan image memory allocator. It is safe to call this function
multiple times. This must be called before any other #GstVulkanImageMemory operation.
a new #GstVulkanImageMemory wrapping @image
a #GstVulkanDevice
a VkImage
the VkFormat for @image
width of @image
height of @image
tiling of @image
usage flags of @image
user data for @notify
a #GDestroyNotify when @image is no longer needed
Opaque #GstVulkanImageMemoryAllocator struct
the parent #GstAllocator
The #GstVulkanImageMemoryAllocatorClass only contains private data
the parent #GstAllocatorClass
Function definition used to find views. Return %TRUE if @view matches the
criteria.
the parent #GstMiniObject
the #GstVulkanDevice
the associated #GstVulkanImageMemory for this view
the vulkan image view handle
the creation information for this view
A new #GstVulkanImageView from @image and
@create_info
a #GstVulkanImageMemory to create the new view from
the creation information to create the view from
Increases the refcount of the given trash object by one.
@trash
a #GstVulkanImageView.
Decreases the refcount of the trash object. If the refcount reaches 0, the
trash will be freed.
a #GstVulkanImageView.
a new uninitialized #GstVulkanInstance
If a #GstVulkanInstance is requested in @query, sets @instance as the reply.
Intended for use with element query handlers to respond to #GST_QUERY_CONTEXT
for a #GstVulkanInstance.
whether @query was responded to with @instance
a #GstElement
a #GstQuery of type #GST_QUERY_CONTEXT
the #GstVulkanInstance
Attempt to retrieve a #GstVulkanInstance using #GST_QUERY_CONTEXT from the
surrounding elements of @element.
whether @instance contains a valid #GstVulkanInstance
a #GstElement
a #GstVulkanInstance
Check if the configured vulkan instance supports the specified version.
Will not work prior to opening the instance with gst_vulkan_instance_open().
If a specific version is requested, the @patch level is ignored.
whether @instance is at least the requested version.
a #GstVulkanInstance
major version
minor version
patch version
a new #GstVulkanDevice
a #GstVulkanInstance
Disable an Vulkan extension by @name. Disabling an extension will only have
an effect before the call to gst_vulkan_instance_open().
whether the Vulkan extension could be disabled.
a #GstVulkanInstance
extension name to enable
Enable an Vulkan extension by @name. Extensions cannot be enabled until
gst_vulkan_instance_fill_info() has been called. Enabling an extension will
only have an effect before the call to gst_vulkan_instance_open().
whether the Vulkan extension could be enabled.
a #GstVulkanInstance
extension name to enable
Enable an Vulkan layer by @name. Layer cannot be enabled until
gst_vulkan_instance_fill_info() has been called. Enabling a layer will
only have an effect before the call to gst_vulkan_instance_open().
whether the Vulkan layer could be enabled.
a #GstVulkanInstance
layer name to enable
Retrieve as much information about the available Vulkan instance without
actually creating an Vulkan instance. Will not do anything while @instance
is open.
whether the instance information could be retrieved
a #GstVulkanInstance
Retrieves information about an extension.
Will not find any extensions before gst_vulkan_instance_fill_info() has been
called.
whether extension @name is available
a #GstVulkanInstance
the layer name to look for
return value for the layer specification version
Retrieves information about a layer.
Will not find any layers before gst_vulkan_instance_fill_info() has been
called.
whether layer @name is available
a #GstVulkanInstance
the layer name to look for
return value for the layer description or %NULL
return value for the layer specification version
return value for the layer implementation version
Performs `vkGetInstanceProcAddr()` with @instance and @name
the function pointer for @name or %NULL
a #GstVulkanInstance
name of the function to retrieve
Retrieve the vulkan instance configured version. Only returns the supported
API version by the instance without taking into account the requested API
version. This means gst_vulkan_instance_check_version() will return
different values if a specific version has been requested (which is the
default) than a version check that is performed manually by retrieving the
version with this function.
a #GstVulkanInstance
major version
minor version
patch version
whether extension @name is enabled
a # GstVulkanInstance
extension name
whether layer @name is enabled
a # GstVulkanInstance
layer name
whether the instance could be created
a #GstVulkanInstance
parent #GstObject
the Vulkan instance handle
list of vulkan physical device handles
Overrides the #GstVulkanDevice creation mechanism.
It can be called from any thread.
the newly created #GstVulkanDevice.
parent #GstObjectClass
the parent #GstMemory
the #GstVulkanDevice this memory is allocated from
the vulkan memory handle
lock for accessing/changing memory informat
number of times this memory is mapped
internal pointer to already mapped memory
Allocated a new #GstVulkanMemory.
a #GstMemory object backed by a vulkan device memory
a #GstVulkanDevice
the Vulkan memory type index
a #GstAllocationParams
the size to allocate
whether a valid memory type could be found
a #GstVulkanDevice
memory requirements to look for
memory properties to search for
resulting index of the memory type
Initializes the Vulkan memory allocator. It is safe to call this function
multiple times. This must be called before any other #GstVulkanMemory operation.
Opaque #GstVulkanMemoryAllocator struct
the parent #GstAllocator
The #GstVulkanMemoryAllocatorClass only contains private data
the parent #GstAllocatorClass
When using the operation @cmd_buf, you should lock it using
gst_vulkan_command_buffer_lock(), but you have to unlock it, with
gst_vulkan_command_buffer_unlock(), when calling any of #GstVulkanOperation
methods.
a newly allocated #GstVulkanOperation
a #GstVulkanCommandPool
Add @frame as an operation dependency by adding the timeline semaphores in
each memory of @frame into either the wait semaphore array. The signal array
hold the same semaphores but increasing their current value.
whether the @frame was added as dependency.
a #GstVulkanOperation
a Vulkan Image #GstBuffer
pipeline stage to wait (VkPipelineStageFlags or
VkPipelineStageFlags2)
pipeline stage to signal (VkPipelineStageFlags or
VkPipelineStageFlags2)
See also: gst_vulkan_operation_use_sync2(),
gst_vulkan_operation_new_extra_image_barriers() and
gst_vulkan_operation_update_frame()
Any non-repeated image barrier in @extra is appended to the internal barrier
list.
Remember to call gst_vulkan_operation_update_frame() on those frames with
images in @extra_barriers.
a #GstVulkanOperation
a #GArray of extra image memory barriers to handle
See also: gst_vulkan_operation_update_frame()
Adds an image memory barrier per memory in @frame with its future state. And
it updates the @frame barrier state by calling internally
gst_vulkan_operation_update_frame().
whether the @frame barriers were appended
a #GstVulkanOperation
a Vulkan Image #GstBuffer
destination pipeline stage (VkPipelineStageFlags or
VkPipelineStageFlags2)
the new access flags (VkAccessFlags2 or VkAccessFlags)
the new VkImageLayout
destination #GstVulkanQueue for a transfer of @frame
ownership
See also: gst_vulkan_operation_end() and gst_vulkan_operation_reset()
Attempts to set the operation ready to work. It instantiates the common
command buffer in @self and calls vkBeginCommandBuffer.
After calling this function you can register commands in the command buffer,
and finally call gst_vulkan_operation_end(). gst_vulkan_operation_reset() is
called internally if something failed.
whether the operation started. It might fill @error.
a #GstVulkanOperation
Begins a query operation in the current command buffer.
whether the begin command was set
a #GstVulkanOperation
Discards barriers, and all the semaphore arrays populated by
gst_vulkan_operation_add_dependency_frame().
a #GstVulkanOperation
Tries to enable the query pool for the current operation.
whether the query pool was enabled. It might populate @error in case
of error.
a #GstVulkanOperation
the VkQueryType to enable
number of queries to enable
the structure pointer to use as pNext
See also: gst_vulkan_operation_begin() and gst_vulkan_operation_reset()
It calls vkEndCommandBuffer, and later either vkQueueSubmit or
vkQueueSubmit2KHR filling up the semaphores from images declared as
dependencies.
You have called gst_vulkan_operation_begin() before.
gst_vulkan_operation_reset() is called internally if something fails
whether the operation failed. It might fill @error.
a #GstVulkanOperation
Ends a query operation in the current command buffer.
whether the end command was set
a #GstVulkanOperation
Gets the latest operation results of all the queries in @data. API users have
to parse the binary array of @data according of their needs (usually is a
guint32 array of size of n_query).
Don't free @data.
whether a status was fetched. If not, it might populate @error
a #GstVulkanOperation
result of all queries
See also: gst_vulkan_operation_use_sync2(),
gst_vulkan_operation_add_extra_image_barriers() and
gst_vulkan_operation_update_frame()
If it's required to add custom image memory barriers this function will
allocate a new array to append in it the extra image memory barriers to
handle.
Remember to call gst_vulkan_operation_update_frame() after adding the barrier
related with that frame.
A new allocated array of barriers, either
VkImageMemoryBarrier or VkImageMemoryBarrier2KHR, depending whether
synchronization2 extension is used.
a #GstVulkanOperation
It's a wrapper to vkCmdPipelineBarrier2{KHR} if it's available.
%TRUE if vkCmdPipelineBarrier2{KHR} it's available. %FALSE,
otherwise.
a #GstVulkanOperation
a pointer to VkDependencyInfo
Resets the operation to a clean state.
a #GstVulkanOperation
Retrieves a copy of the current defined barriers internally, which will be
used by vkCmdPipelineBarrier or vkCmdPipelineBarrier2KHR by the API user.
The element type of the array might be, depending on if synchronization2
extension is used, either VkImageMemoryBarrier or VkImageMemoryBarrier2KHR.
Current barriers array. Call g_array_unref() after
the operation is using.
a #GstVulkanOperation
Add or update the internal list of the future state of @frame. This state
will be set after gst_vulkan_operation_end().
This method is useful when new barriers are added to the array without using
gst_vulkan_operation_add_frame_barrier().
a #GstVulkanOperation
a #GstBuffer to update after submit
destination pipeline stage (VkPipelineStageFlags or
VkPipelineStageFlags2)
the new access flags (VkAccessFlags2 or VkAccessFlags)
the new VkImageLayout
destination #GstVulkanQueue for a transfer of @frame
ownership
whether the operations are using synchronization2 extension.
a #GstVulkanOperation
Waits for the operation's fence to signal.
whether the operation succeed.
a #GstVulkanOperation
the parent #GstObject
the current #GstVulkanCommandBuffer
a new #GstVulkanPhysicalDevice
the parent #GstVulkanInstance
name of @type
a `VkPhysicalDeviceType
Retrieves information about a device extension.
Will not find any extensions before gst_vulkan_instance_fill_info() has been
called.
whether extension @name is available
a #GstVulkanPhysicalDevice
the extension name to look for
return value for the exteion specification version
The associated `VkPhysicalDevice` handle
a #GstVulkanPhysicalDevice
The #GstVulkanInstance associated with this physical device
a #GstVulkanPhysicalDevice
Retrieves information about a layer.
Will not find any layers before gst_vulkan_instance_fill_info() has been
called.
whether layer @name is available
a #GstVulkanPhysicalDevice
the layer name to look for
return value for the layer description or %NULL
return value for the layer specification version
return value for the layer implementation version
the parent #GstObject
the parent #GstVulkanInstance for this physical device
the index into the physical device list in @instance
the vulkan physical device handle
retrieved physical device properties
retrieved physical device features
retrieved physical device memory properties
vulkan family properties
number of elements in @queue_family_props
vulkan operations allowed per queue family
the parent #GstObjectClass
If a #GstVulkanQueue is requested in @query, sets @queue as the reply.
Intended for use with element query handlers to respond to #GST_QUERY_CONTEXT
for a #GstVulkanQueue.
whether @query was responded to with @queue
a #GstElement
a #GstQuery of type #GST_QUERY_CONTEXT
the #GstVulkanQueue
Attempt to retrieve a #GstVulkanQueue using #GST_QUERY_CONTEXT from the
surrounding elements of @element.
whether @queue contains a valid #GstVulkanQueue
a #GstElement
a #GstVulkanQueue
a new #GstVulkanCommandPool or %NULL
a #GstVulkanQueue
the #GstVulkanDevice for @queue
a #GstVulkanQueue
Locks the queue for command submission using `vkQueueSubmit()` to meet the
Vulkan requirements for externally synchronised resources.
a #GstVulkanQueue
Unlocks the queue for command submission using `vkQueueSubmit()`.
See gst_vulkan_queue_submit_lock() for details on when this call is needed.
a #GstVulkanQueue
the parent #GstObject
the #GstVulkanDevice this queue was allocated from
the vulkan queue handle
the vulkan queue family
the vulkan queue index
the parent #GstObjectClass
video operation supported by queue family
if queue family supports queries
a #GstVulkanSwapper
The #GstVideoRectangle for the configured
caps modified for DAR.
The #GstVideoRectangle for where the
output surface is located relative to its parent
The #GstVideoRectangle for where the input
images are placed inside @surface_location
parent #GstObject
the #GstVulkanDevice
the #GstVulkanWindow to display into
the #GstVulkanQueue to display with
the #GstVulkanCommandPool to allocate command buffers from
parent #GstObjectClass
Create and return a new #GstVulkanTrash object that will stores a callback
to call when @fence is signalled.
a new #GstVulkanTrash
a #GstVulkanFence
a #GstVulkanTrashNotify
user data for @notify
a new #GstVulkanTrash object that will the free
@semaphore when @fence is signalled
the #GstVulkanFence
a `VkSemaphore` to free
Increases the refcount of the given trash object by one.
@trash
a #GstVulkanTrash.
Decreases the refcount of the trash object. If the refcount reaches 0, the
trash will be freed.
a #GstVulkanTrash.
A #GstVulkanTrashNotify implementation for unreffing a #GstMiniObject when the
associated #GstVulkanFence is signalled
the #GstVulkanDevice
the #GstMiniObject
A #GstVulkanTrashNotify implementation for unreffing a #GstObject when the
associated #GstVulkanFence is signalled
the #GstVulkanDevice
the #GstMiniObject
a.18
a new #gst_vulkan_trash_fence_list_new
whether @trash could be added to @trash_list
the #GstVulkanTrashList instance
the #GstVulkanTrash to add to @trash_list
the #GstVulkanTrashList instance
whether all objects were signalled and freed within the @timeout
the #GstVulkanTrashList instance
the timeout in ns to wait
a new or reused #GstVulkanTrash for the provided
parameters.
a #GstVulkanTrashList
a #GstVulkanFence to wait for signalling
notify function for when @fence is signalled
user data for @notify
whether @trash could be added to @trash_list
the #GstVulkanTrashList
#GstVulkanTrash object to add to the list
Remove any stored #GstVulkanTrash objects that have had their associated
#GstVulkanFence signalled.
the #GstVulkanTrashList
whether the wait succeeded in waiting for all objects to be freed.
the #GstVulkanTrashList
timeout in ns to wait, -1 for indefinite
the parent #GstVulkanHandle
Add @trash to @trash_list for tracking
whether @trash could be added to @trash_list
the #GstVulkanTrashList instance
the #GstVulkanTrash to add to @trash_list
the #GstVulkanHandlePoolClass
the #GstVulkanTrashListAdd functions
the #GstVulkanTrashListGC function
the #GstVulkanTrashListWait function
Remove any memory allocated by any signalled objects.
the #GstVulkanTrashList instance
Wait for a most @timeout to pass for all #GstVulkanTrash objects to be
signalled and freed.
whether all objects were signalled and freed within the @timeout
the #GstVulkanTrashList instance
the timeout in ns to wait
the #GstVulkanDevice
user data
the parent #GstBaseTransform
the configured #GstVulkanInstance
the configured #GstVulkanDevice
the configured #GstVulkanQueue
the configured input #GstCaps
the configured input #GstVideoInfo
the configured output #GstCaps
the configured output #GstVideoInfo
the parent #GstBaseTransformClass
The type of video operation.
decode operation
encode operation
unknown
whether @a and @b contains the same information.
a #GstVulkanVideoProfile
another #GstVulkanVideoProfile
%TRUE if @profile is correct and matches with @codec
the output profile
VkVideoCodecOperationFlagBitsKHR described by @profile
a #GstCaps from @profile
#GstVulkanVideoProfile to convert into a #GstCaps
%TRUE if @caps was parsed correctly, otherwise %FALSE
the output profile
a #GstCaps to parse
a supported video operation
#GstVulkanWindow is an opaque struct and should only be accessed through the
provided api.
a new #GstVulkanWindow using @display's connection
a #GstVulkanDisplay
Attempt to close the window.
a #GstVulkanWindow
whether the given combination of @window, @device and
@queue_family_idx supports presentation
a #GstVulkanWindow
a #GstVulkanDevice
the queue family
the VkSurface for displaying into. The caller is responsible for
calling `VkDestroySurface` on the returned surface.
a #GstVulkanWindow
a #GstVulkanWindow
Current width of @window
Current height of @window
Tell a @window that it should handle events from the window system. These
events are forwarded upstream as navigation events. In some window systems
events are not propagated in the window hierarchy if a client is listening
for them. This method allows you to disable events handling completely
from the @window.
a #GstVulkanWindow
a #gboolean indicating if events should be handled or not.
whether @window could be successfully opened
a #GstVulkanWindow
Attempt to close the window.
a #GstVulkanWindow
the #GstVulkanDisplay for @window
a #GstVulkanWindow
whether the given combination of @window, @device and
@queue_family_idx supports presentation
a #GstVulkanWindow
a #GstVulkanDevice
the queue family
the VkSurface for displaying into. The caller is responsible for
calling `VkDestroySurface` on the returned surface.
a #GstVulkanWindow
a #GstVulkanWindow
Current width of @window
Current height of @window
Tell a @window that it should handle events from the window system. These
events are forwarded upstream as navigation events. In some window systems
events are not propagated in the window hierarchy if a client is listening
for them. This method allows you to disable events handling completely
from the @window.
a #GstVulkanWindow
a #gboolean indicating if events should be handled or not.
whether @window could be successfully opened
a #GstVulkanWindow
Ask the @window to redraw its contents
a #GstVulkanWindow
Resize the output surface.
Currently intended for subclasses to update internal state.
a #GstVulkanWindow
the new width
the new height
Will be emitted when a key event is received by the #GstVulkanWindow.
the name of the event
the id of the key pressed
Will be emitted when a mouse event is received by the #GstVulkanWindow.
the name of the event
the id of the button
the x coordinate of the mouse event
the y coordinate of the mouse event
Parent class
whether @window could be successfully opened
a #GstVulkanWindow
a #GstVulkanWindow
the VkSurface for displaying into. The caller is responsible for
calling `VkDestroySurface` on the returned surface.
a #GstVulkanWindow
whether the given combination of @window, @device and
@queue_family_idx supports presentation
a #GstVulkanWindow
a #GstVulkanDevice
the queue family
a #GstVulkanWindow
Current width of @window
Current height of @window
a #GstVulkanWindow
a #gboolean indicating if events should be handled or not.
failed
old libraries
resource unavailable
Whether @device was in @context
a #GstContext
resulting #GstVulkanDevice
Whether @display was in @context
a #GstContext
resulting #GstVulkanDisplay
Whether @instance was in @context
a #GstContext
resulting #GstVulkanInstance
Whether @queue was in @context
a #GstContext
resulting #GstVulkanQueue
Sets @device on @context
a #GstContext
a #GstVulkanDevice
Sets @display on @context
a #GstContext
a #GstVulkanDisplay
Sets @instance on @context
a #GstContext
a #GstVulkanInstance
Sets @queue on @context
a #GstContext
a #GstVulkanQueue
whether the memory at @mem is a #GstVulkanBufferMemory
a #GstMemory
whether the memory at @mem is a #GstVulkanImageMemory
a #GstMemory
whether the memory at @mem is a #GstVulkanMemory
a #GstMemory
#GstVulkanBufferMemory is a #GstMemory subclass providing support for the
mapping of Vulkan device memory.
a #GstVulkanBufferPool is an object that allocates buffers with #GstVulkanBufferMemory
A #GstVulkanBufferPool is created with gst_vulkan_buffer_pool_new()
#GstVulkanBufferPool implements the VideoMeta buffer pool option
#GST_BUFFER_POOL_OPTION_VIDEO_META
vulkandescriptorset holds information about a descriptor set.
A #GstVulkanDevice encapsulates a VkDevice
A #GstVulkanDisplay represents a connection to a display server on the platform
A #GstVulkanFence encapsulates a VkFence
A #GstVulkanFullScreenQuad is a helper object for rendering a single input
image to an output #GstBuffer
#GstVulkanHandle holds information about a vulkan handle.
a #GstVulkanImageBufferPool is an object that allocates buffers with #GstVulkanImageMemory
A #GstVulkanImageBufferPool is created with gst_vulkan_image_buffer_pool_new()
GstVulkanImageMemory is a #GstMemory subclass providing support for the
mapping of Vulkan device memory.
#GstVulkanImageView is a wrapper around a `VkImageView` mostly for
usage across element boundaries with #GstVulkanImageMemory
#GstVulkanInstance encapsulates the necessary information for the toplevel
Vulkan instance object.
If GStreamer is built with debugging support, the default Vulkan API chosen
can be selected with the environment variable
`GST_VULKAN_INSTANCE_API_VERSION=1.0`. Any subsequent setting of the
requested Vulkan API version through the available properties will override
the environment variable.
GstVulkanMemory is a #GstMemory subclass providing support for the mapping of
Vulkan device memory.
A #GstVulkanOperation abstract a queue operation for images adding
automatically semaphores and barriers. It uses Synchronization2 extension if
available. Also it enables a VkQueryPool if it's possible and it's requested.
A #GstVulkanPhysicalDevice encapsulates a VkPhysicalDevice
GstVulkanQueue encapsulates the vulkan command queue.
#GstVulkanSwapper is a helper object for rendering to a surface exposed by
#GstVulkanWindow.
#GstVulkanTrash is a helper object for freeing resources after a
#GstVulkanFence is signalled.
GstVulkanWindow represents a window that elements can render into. A window can
either be a user visible window (onscreen) or hidden (offscreen).
Allocate a new #GstVulkanBufferMemory.
a #GstMemory object backed by a vulkan buffer
backed by vulkan device memory
a #GstVulkanDevice
size of the new buffer
buffer usage flags
memory properties flags for the backing memory
Allocate a new #GstVulkanBufferMemory.
a #GstMemory object backed by a vulkan buffer
backed by vulkan device memory
a #GstVulkanDevice
the VkBufferCreateInfo structure
memory properties flags for the backing memory
Initializes the Vulkan buffer memory allocator. It is safe to call this function
multiple times. This must be called before any other #GstVulkanBufferMemory operation.
Allocated a new wrapped #GstVulkanBufferMemory with @buffer.
a #GstMemory object backed by a vulkan device memory
a #GstVulkanDevice
a `VkBuffer`
usage flags of @buffer
user data to call @notify with
a #GDestroyNotify called when @buffer is no longer in use
Lock @cmd for writing cmmands to @cmd. Must be matched by a corresponding
gst_vulkan_command_buffer_unlock().
the #GstVulkanCommandBuffer
Unlock @cmd for writing cmmands to @cmd. Must be matched by a corresponding
gst_vulkan_command_buffer_lock().
the #GstVulkanCommandBuffer
a #GstVulkanHandle for @image matching the
original layout and format of @image or %NULL
a #GstVulkanDevice
the SPIR-V shader byte code
length of @code. Must be a multiple of 4
the Vulkan extension string required for creating a
VkSurfaceKHR using a window system handle or %NULL
a #GstVulkanDisplayType
Perform the steps necessary for retrieving a #GstVulkanInstance and
(optionally) an #GstVulkanDisplay from the surrounding elements or from
the application using the #GstContext mechanism.
If the contents of @display_ptr or @instance_ptr are not %NULL, then no
#GstContext query is necessary and no #GstVulkanInstance or #GstVulkanDisplay
retrieval is performed.
whether a #GstVulkanInstance exists in @instance_ptr and if
@display_ptr is not %NULL, whether a #GstVulkanDisplay exists in
@display_ptr
a #GstElement
the resulting #GstVulkanDisplay
the resulting #GstVulkanInstance
if @result indicates an error condition, fills out #GError with details of
the error
@result for easy chaining
a VkResult
a #GError to fill
the printf-like format to write into the #GError
arguments for @format
A helper define for internally calling @gst_vulkan_handle_pool_acquire()
the #GstVulkanFenceCache
a #GError
the VkFormat to use for @v_format and @plane
the #GstVideoInfo
the plane
%TRUE if requested GStreamer format maps to a Vulkan format and its
properties.
a #GstVulkanPhysicalDevice
the #GstVideoInfo
the tiling to use
query for vulkan formats without multiple images
Vulkan formats per image/plane
number of images/planes used by the Vulkan format
The potential usage of the format
the @format aspect
Vulkan Format
the #GstVulkanFormatInfo for @format or %NULL
a valid `VkFormat`
the #GstVideoFormat that maps to @vk_format
the Vulkan format to convert
a #GstVulkanImageView for @image matching the
original layout and format of @image
a #GstVulkanImageMemory
Create a new #GstVulkanImageView with a specific @create_info.
a #GstVulkanImageView for @image matching the
original layout and format of @image
a #GstVulkanImageMemory
a VkImageViewCreateInfo
Performs the steps necessary for executing a context query including
posting a message for the application to respond.
a #GstElement
the context type to query for
Whether the @query was successfully responded to from the passed
@display, @instance, and @device.
a #GstElement
a #GstQuery of type %GST_QUERY_CONTEXT
a #GstVulkanDisplay
a #GstVulkanInstance
a #GstVulkanInstance
Helper function for implementing #GstElementClass.set_context() in
Vulkan capable elements.
Retrieve's the #GstVulkanDisplay or #GstVulkanInstance in @context and places
the result in @display or @instance respectively.
whether the @display or @instance could be set successfully
a #GstElement
a #GstContext
location of a #GstVulkanDisplay
location of a #GstVulkanInstance
Allocated a new #GstVulkanImageMemory.
a #GstMemory object backed by a vulkan device memory
a #GstVulkanDevice
the VkFormat for the new image
width for the new image
height for the new image
tiling for the new image
usage flags for the new image
VkDeviceMemory property flags for the new image
a #GstMemory object backed by a vulkan device memory
a #GstVulkanDevice
VkImageCreateInfo structure
VkMemoryPropertyFlags flags
Initializes the Vulkan image memory allocator. It is safe to call this function
multiple times. This must be called before any other #GstVulkanImageMemory operation.
a new #GstVulkanImageMemory wrapping @image
a #GstVulkanDevice
a VkImage
the VkFormat for @image
width of @image
height of @image
tiling of @image
usage flags of @image
user data for @notify
a #GDestroyNotify when @image is no longer needed
Performs the steps necessary for executing a context query between only
other elements in the pipeline
a #GstElement
the context type to query for
Allocated a new #GstVulkanMemory.
a #GstMemory object backed by a vulkan device memory
a #GstVulkanDevice
the Vulkan memory type index
a #GstAllocationParams
the size to allocate
whether a valid memory type could be found
a #GstVulkanDevice
memory requirements to look for
memory properties to search for
resulting index of the memory type
Initializes the Vulkan memory allocator. It is safe to call this function
multiple times. This must be called before any other #GstVulkanMemory operation.
name of @present_mode
a `VkPresentModeKHR`
a message that corresponds to @result
a VkResult
whether @query was answered successfully
a #GstElement
the #GstQuery to perform
the #GstPadDirection to perform query on
A #GstVulkanTrashNotify implementation for unreffing a #GstMiniObject when the
associated #GstVulkanFence is signalled
the #GstVulkanDevice
the #GstMiniObject
A #GstVulkanTrashNotify implementation for unreffing a #GstObject when the
associated #GstVulkanFence is signalled
the #GstVulkanDevice
the #GstMiniObject
%TRUE if @caps was parsed correctly, otherwise %FALSE
the output profile
a #GstCaps to parse
a supported video operation
vulkancommandbuffer holds information about a command buffer.
#GstVulkanHandlePool holds a number of handles that are pooled together.
#GstVulkanVideoFilter is a helper base class for retrieving and holding the
#GstVulkanInstance, #GstVulkanDevice and #GstVulkanQueue used by an element.