Matthew Waters
82e86573b8
vulkan: implement command buffer reuse
...
Using a similar design for reference counting as
GstBuffer/GstBufferPool.
2019-09-19 02:01:35 +00:00
Matthew Waters
2af2402880
vulkan: add device provider implementation
2019-09-17 13:02:44 +10:00
Matthew Waters
5f76c84feb
vulkan: split physical device from logical device
2019-09-17 13:02:44 +10:00
Matthew Waters
863e785770
vulkan: expose various flags to string methods
2019-09-17 13:02:44 +10:00
Matthew Waters
407dab607f
vulkan: only pass the device/instance/display in to *_handle_*() functions
...
We don't need to change the pointer value in these functions.
2019-09-17 13:02:43 +10:00
Matthew Waters
cd28c77413
vulkan/window/ios: fix race on window startup
...
1. The iOS create_surface implementation needs to call out to the main
thread to create the window (UIKit requirement)
2. get_surface() can be called and will attempt to create the VkSurface
from an invalid view/layer.
Also pass the layer for MoltenVK so we don't get pesky 'UIView function
not called on main thread' warnings.
2019-09-16 03:15:39 +00:00
Matthew Waters
656a0cde84
vulkan: create the macos/ios-specific displays
2019-09-16 03:15:39 +00:00
Matthew Waters
96b2413616
vulkan: install public gstvkdebug.h header
2019-09-16 03:15:39 +00:00
Matthew Waters
08b53ca456
vulkan: fix build with older API headers
...
The protected memory flags were only added later as was the
multi-instance flag.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1081
2019-09-11 23:59:53 +00:00
Matthew Waters
2b7050120e
vulkan: dump most of the device information
...
Dump anything that can be queried using the physical device like features,
limits, queue properties, memory properties.
2019-09-11 20:22:56 +10:00
Yeongjin Jeong
fdab54611b
vulkan: Fix some confusing typos
...
Seems to have been copy pasted from around gl element
2019-08-29 11:19:37 +00:00
Yeongjin Jeong
94671be428
vulkan/xcb: Don't try to create xcb window with non-xcb display
...
Non-xcb display does not have a xcb_connection and trying
to create xcb window with wild pointer can cause segfault.
2019-08-29 11:19:37 +00:00
Matthew Waters
87311d404e
vulkan/swapper: add a couple of missing g_clear_error()'s
2019-08-28 10:34:39 +00:00
Matthew Waters
542af25eb1
vulkan/build: conditionally depend on Vulkan-1.0.gir
...
Vulkan-1.0.gir is new in gobject-introspection >= 1.61.1
2019-08-28 10:34:39 +00:00
Matthew Waters
c237c8de6a
vulkandisplay: silence an unused but set error with no enable winsys implementations
2019-08-28 10:34:39 +00:00
Matthew Waters
09883b6a6b
vulkan/swapper: check queue present return later
...
During resizes, the VkQueuePresent can return OUT_OF_DATE and if a buffer
is displayed returning OUT_OF_DATE it would error out and stop the pipeline.
We already have a explicit check for OUT_OF_DATE and the same general
error check in the statements following so just use that code.
2019-08-28 10:34:39 +00:00
Matthew Waters
d1f8f7436d
vulkan/swapper: destroy the surface in finalize
...
Fixes a leak of the VkSurface object.
2019-08-28 10:34:39 +00:00
Matthew Waters
cac1487479
vulkan/swapper: set some values to NULL in error conditions
...
So that they are not double free()-ed.
2019-08-28 10:34:39 +00:00
Matthew Waters
be9c9e44f1
vulkan/error: add the error value in hex and decimal
...
Provides more information for what may be an 'Unknown' error.
2019-08-28 10:34:39 +00:00
Matthew Waters
5ab92e05d8
vulkanswapper: disconnect window signals before any internal resources
...
Otherwise, it's racy whether the necessary resources are available in
the signal callbacks on destruction.
2019-08-28 10:34:39 +00:00
Matthew Waters
b43651cf99
vulkandisplay: Also free the GSource
...
NULL checking the main_context does not help as we've just destroyed the
GMainContext and set that field to NULL, not to mention it's unnecessary.
Fixes a leak of display's GSource.
2019-08-22 17:28:19 +10:00
Matthew Waters
1b7e83c584
vulkandisplay: free the list of windows on destruction
...
They may not have had an explicit removal from the subclass.
2019-08-22 17:02:07 +10:00
Matthew Waters
fc9f047885
vulkandisplay: fix use-after-free with removal of window
...
g_list_delete_link() free()'s the list node so any access after that is
a use-after-free.
2019-08-22 14:55:40 +10:00
Matthew Waters
e83df1759d
vulkan/xcb: display->windows is a list of allocated GWeakRef
...
Don't access them as plain GstVulkanWindow objects.
2019-08-22 14:54:30 +10:00
Matthew Waters
db157428ee
vulkan/ios: keep track of surface changes
2019-08-14 13:45:31 +10:00
Matthew Waters
c8614bf4da
vulkan/ios: initialize the frame to the parent's
2019-08-14 13:45:31 +10:00
Yeongjin Jeong
68057cee98
vulkan: Fix GstMemory leaks
...
Allocated GstMemory should be freed with g_free()
2019-08-06 07:44:05 +00:00
Matthew Waters
d916cad886
vulkan: add a couple of headers to the install list
2019-08-05 11:32:59 +10:00
Matthew Waters
58f203844d
vulkan/window: add property for the parent display
2019-07-05 16:20:05 +10:00
Matthew Waters
fda9b57dbe
vulkan/device: add property for the parent instance
2019-07-05 16:13:13 +10:00
Matthew Waters
69af8a9360
vulkan: move swapper object to the gstvulkan library
...
Allows other sinks and/or user code to display to a VkSurface
2019-07-04 14:18:15 +10:00
Matthew Waters
b5256d94fc
vulkan: move trash list to library
2019-07-04 14:18:15 +10:00
Matthew Waters
0cb416db11
vkbuffermemory: report requested size of the memory
...
Rather than using Vulkan's much larger aligned sizes. Fixes multi-planer
video with the GstVideoFrame API.
2019-06-20 01:41:56 +10:00
Matthew Waters
bbdb2f3f17
vulkan: add some information on vulkan formats
2019-06-20 01:41:56 +10:00
Matthew Waters
2dcdaaf7cb
vulkan: ensure initialization of a couple of debug categories
...
Needed when some of the context querying functions can be called before
an instance has been created.
2019-06-20 01:41:56 +10:00
Seungha Yang
7b1b3327a0
vulkan: Add support WIN32 for Windows
...
It's almost a fork of glwindow_win32 implementation.
To build on Windows, Vulkan SDK (at https://vulkan.lunarg.com/sdk/home )
and VK_SDK_PATH environment are required. Note that VK_SDK_PATH environment
setting is a part of the SDK installation.
2019-06-13 04:55:15 +00:00
Matthew Waters
ac09f88eb9
vulkan: implement the correct memory barriers necessary
...
Vulkan validation layers are finally silent!
2019-06-04 09:03:44 +00:00
Matthew Waters
ae13e66639
vkmemory: fix allocation of sizes less than the alignment
...
Avoids allocating a 0-sized device memory which is invalid vulkan usage
2019-06-04 09:03:44 +00:00
Matthew Waters
0efd559950
vk*pool: expand usage hints to cover use in a renderpass
2019-06-04 09:03:44 +00:00
Matthew Waters
25a970f9d5
vkformat: fix format conversion for matching vulkan formats
...
Other formats still need a swizzle or conversion.
2019-06-04 09:03:44 +00:00
Matthew Waters
5478d39900
vkbuffermemory: bufferview's are only for texture-like memory
2019-06-04 09:03:44 +00:00
Matthew Waters
d61e771c37
vulkan: use c99 designated initializers where possible
...
Makes the code much easier to read and allows removing our terrible
macros for structure initialization.
2019-06-04 09:03:44 +00:00
Matthew Waters
673d775df0
vkupload: implement buffer to image uploader
2019-06-04 09:03:44 +00:00
Matthew Waters
c568d1a673
vkqueue: unly unref the context query if it succeeds
2019-06-04 09:03:44 +00:00
Matthew Waters
70fda3ff78
vulkan: large docs update
2019-06-04 09:03:44 +00:00
Matthew Waters
32d217a9df
vulkan: add a command pool object for tracking
2019-06-04 09:03:44 +00:00
Matthew Waters
25dd3b32e5
vulkan: make a gstvulkan library out of the existing API
2019-06-04 09:03:44 +00:00