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 the GStreamer video format the Vulkan format with a single memory Vulkan formats for multiple memories [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 The currently configured #GstVulkanQueue 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 Gets the configuration of the Vulkan image buffer pool. the #GstStructure with the pool's configuration. The Vulkan image usage flags. Initial Vulkan image layout. Initial Vulkan access flags. Sets the @usage and @mem_properties, @initial_layout and @initial_access of the images to setup. If @initial_access is VK_IMAGE_LAYOUT_UNDEFINED or VK_IMAGE_LAYOUT_PREINITIALIZED, the image crated by this pool has not been initialized to a particular layout 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_barriers 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 source pipeline stage (VkPipelineStageFlags or VkPipelineStageFlags2) 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 with @id in the current command buffer. whether the begin command was set a #GstVulkanOperation query id 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 with @id in the current command buffer. A query with @id has had started with gst_vulkan_operation_begin_query() whether the end command was set a #GstVulkanOperation query id 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 query status result support a #GstVulkanSwapper a #GstVulkanQueue chosen elsewhere 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 currently configured #GstVulkanDevice a #GstVulkanVideoFilter The currently configured #GstVulkanInstance a #GstVulkanVideoFilter The currently configured #GstVulkanQueue a #GstVulkanVideoFilter 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 #GstVulkanFormatMap matching with @format the #GstVideoFormat to get 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.