Matthew Waters
31728880fe
vkupload: Also implement copying non vulkan memory into vulkan buffers
...
The only way we can upload things is through our memory so any
non-vulkan memory that appears must be copied into our memory.
2019-06-20 01:41:56 +10:00
Matthew Waters
3fef510c48
vulkan: add download element
...
Currently only downloads images into a host-visible buffer and
synchronises immediately.
2019-06-20 01:41:56 +10:00
Matthew Waters
dc0c9dea7f
vulkan/identity: Split out most rendering code to a base class
...
A simple base class that renders a 2d fullscreen quad parallel to the
screen surface inside the view frustum.
2019-06-20 01:41:56 +10:00
Matthew Waters
773e914f48
vkupload: fix a structure sType
2019-06-20 01:41:56 +10:00
Matthew Waters
db617a98ad
vksink: Retrieve vulkan queue earlier
...
Allows using the swapper's queue over upstream's queue. The swapper
will check for the necessary presentation support that upstream may not
consider.
2019-06-20 01:41:56 +10:00
Matthew Waters
f33310df56
vkupload: remove debugging error log
2019-06-04 09:03:44 +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
1230a6c723
vulkan: remove uneeded buffer inheritence information
...
buffer inheritence informationi is only required for secondary command
buffers which we are not creating
2019-06-04 09:03:44 +00:00
Matthew Waters
9593e4e8bb
vulkan: add a new image copying element
...
Copies using the graphics pipeline, an input image and renders to an
output image.
2019-06-04 09:03:44 +00:00
Matthew Waters
80cbbb319d
vkupload: add raw->vulkanimage uploader
2019-06-04 09:03:44 +00:00
Matthew Waters
ca38c2f25e
vktrash: add more destruction of vulkan types
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
b02493091b
vkswapper: support displaying memory:VulkanImage
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
f351f3a759
vulkansink: Respond to queue queries
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
2d0cab20c0
vkswapper: don't output duplicate formats
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
Matthew Waters
8def3b3743
vkbufferpool: Fix multiplaner allocations
...
Use the plane width/height and the sizes required by vulkan
Fixes allocation of:
videotestsrc ! video/x-raw,format=I420 ! vulkanupload ! fakesink
2019-06-04 09:03:44 +00:00
Matthew Waters
268dfcaad9
vk*memory: explicitly error out for driver NPOT alignment
2019-06-04 09:03:44 +00:00
Matthew Waters
0526310a95
vulkan/image: initialize the requirements struct before using it
2019-06-04 09:03:44 +00:00
Matthew Waters
7ee28e2e4b
vulkan: don't require every element to have a display
...
Only sink elements really care about a valid display
2019-06-04 09:03:44 +00:00
Matthew Waters
eb0f7f3279
vulkan: remove unused X11 window system references
...
We use XCB instead
2019-06-04 09:03:44 +00:00
Matthew Waters
873add374a
vulkan: remove unused layer enablement
...
This is possible now via the vulkan loader
2019-06-04 09:03:44 +00:00
Thibault Saunier
47a49f3381
docs: Build documentation with hotdoc
2019-05-13 17:00:00 -04:00
Matthew Waters
2e442b801b
vulkan: Add iOS window implementation
2019-04-08 09:26:20 +00:00
Matthew Waters
012d6b1d98
vulkan: Add Cocoa window implementation
2019-04-08 09:26:20 +00:00
Matthew Waters
b9be6b318e
vulkan: make the debug extension optional
...
i.e. don't fail if it's not available
2019-04-08 09:26:20 +00:00
Tim-Philipp Müller
054dc5282d
vulkan: fix some compiler warnings in gnu89 mode
...
for loop variable initialization and conflicting types for i.
2019-03-22 23:39:04 +00:00
Tim-Philipp Müller
ecb7049d7e
vulkan: fix some leaks
...
Fix vk_instance leak when state change fails like in
generic/states unit test.
2019-03-08 01:18:39 +00:00
Nirbheek Chauhan
b55dfb5313
Add feature options for almost all plugins
...
The only plugins remaining are those that haven't been ported to Meson
yet, and msdk. Also, the tests are still automagic.
https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 19:04:38 +05:30
Tim-Philipp Müller
a862c0aa85
vulkan: Update for g_type_class_add_private() deprecation in recent GLib
2018-06-24 01:25:04 +02:00
Matthew Waters
52e3db3371
vulkaninstance: add missing precondition to _open()
2018-06-13 20:23:22 +10:00
Xavier Claessens
83d0623293
Meson: Generate pc file for all plugins in bad
...
https://bugzilla.gnome.org/show_bug.cgi?id=794568
2018-04-25 11:08:09 +01:00
Matthew Waters
e5c4135e81
vulkanupload: actually loop over possible uploaders
...
Fix some funky control that wasn't working
CID #1417219
2018-02-08 16:55:43 +11:00
Edward Hervey
87dbd558cc
vulkan: Fix out-of-bound read
...
G_N_ELEMENTS is the *number* of entries, not the maximum entry number
CID #1417215
2017-11-21 16:39:14 +01:00
Nicolas Dufresne
9b2e28d91d
Request minimum buffer even if need_pool is FALSE
...
When tee is used, it will not request a pool, but still it wants to
know how many buffers are required.
https://bugzilla.gnome.org/show_bug.cgi?id=730758
2017-09-06 14:19:37 -04:00
Jussi Kukkonen
97b0085c48
vulkan: Use the generated version of vkconfig.h
...
Build fails in ext/vulkan/xcb and ext/vulkan/wayland when:
* building from tarball
* building out-of-tree
* Only one WSI integration (xcb or wayland) is enabled by configure.ac
This is because vkconfig.h from source directory gets used instead
of the generated one.
Add the correct build directory to "-I". Use angle bracket
include in vkapi.h so that it actually looks in the include search
path instead of defaulting to the same (source tree) directory.
https://bugzilla.gnome.org/show_bug.cgi?id=784539
2017-07-10 21:42:49 +10:00
Jussi Kukkonen
9c6d36984f
vkdisplay: Use ifdef for platform specific defines
...
VK_KHR_*_SURFACE_EXTENSION_NAME are only available when corresponding
WSI is enabled.
https://bugzilla.gnome.org/show_bug.cgi?id=784539
2017-07-10 21:42:49 +10:00
Sebastian Dröge
634cd87c76
gst: Clear floating flag in constructor of all GstObject subclasses that are not owned by any parent
...
https://bugzilla.gnome.org/show_bug.cgi?id=743062
2017-05-17 10:40:23 +03:00
Nicolas Dufresne
4261692187
Remove plugin specific static build option
...
Static and dynamic plugins now have the same interface. The standard
--enable-static/--enable-shared toggle are sufficient.
2017-05-16 14:05:52 -04:00
Thibault Saunier
78022a6e0c
docs: Port all docstring to gtk-doc markdown
2017-04-12 12:57:57 -03:00
Matthew Waters
d7bb3b5542
vkwindow: fix build error on i386
...
Vulkan handles are either pointers (64-bit) or 64-bit integer
handles (32-bit). Cast the type in failure cases.
vkwindow.c:229:561: error: return makes integer from pointer without a cast [-Werror=int-conversion]
vkwindow.c:231:194: error: return makes integer from pointer without a cast [-Werror=int-conversion]
https://bugzilla.gnome.org/show_bug.cgi?id=777979
2017-02-01 16:08:55 +11:00
Matthew Waters
f6b81a6125
vkimagememory: use the correct enum for RGB16/BGR16 formats
...
vkimagememory.c:64:14: warning: implicit conversion from enumeration type 'GstVideoGLTextureType' to different enumeration type 'VkFormat' (aka 'enum VkFormat') [-Wenum-conversion]
return GST_VIDEO_GL_TEXTURE_TYPE_RGB16;
https://bugzilla.gnome.org/show_bug.cgi?id=777760
2017-01-26 19:52:07 +11:00
Sebastian Dröge
5c99f9cf37
gst: Don't declare variables inside the for loop header
...
This is a C99 feature.
2016-12-13 22:39:01 +02:00
Reynaldo H. Verdejo Pinochet
7c64ea4832
wayland: avoid prefix clash in combined pkg-config check
...
Adittionally, remove leftover WAYLAND_DRM_ include flags var
Fixes building of ext/wayland/* broken by dfd86de67a
Related to:
https://bugzilla.gnome.org/show_bug.cgi?id=773927
2016-11-18 10:41:16 -08:00
Arun Raghavan
723218aa63
vulkan: Add missing files to meson build
2016-11-04 09:51:45 +05:30
Matthew Waters
ea167c533e
vkswapper: Use the trash list to free resources after they've been used
...
This allows further parallelism and removes a device wait from the end of
the render code.
2016-11-03 16:58:35 +11:00
Matthew Waters
0f800095e1
vulkan: add a trash object
...
This allows pushing the destruction of vulkan resources after the signalling
of an vulkan event. The event facilitates knowing when a specific point in the
vulkan queue has been reached. Only after the event has been signaled can
vulkan resources be freed and/or reused.
2016-11-03 16:58:35 +11:00
Matthew Waters
af8c4589ba
vulkan: add a simple refcountable fence wrapper
2016-11-03 16:58:35 +11:00
Matthew Waters
4e3cb77fa8
vkdisplay: hold a weakref on the list of windows
...
It's possible that the window may have been destroyed when a winsys
event comes in for it.
Fixes an assertion in make -C tests/check generic/states.check
2016-10-05 12:20:52 +11:00
Matthew Waters
1b3de55eb1
vkdevice: only unref the gstcontext query if non-NULL
...
Fixes an assertion in make -C tests/check generic/states.check
2016-10-05 12:20:52 +11:00
Matthew Waters
a969048003
meson: add build files for vulkan
2016-09-09 16:55:23 +10:00
Matthew Waters
7b566b2964
vkupload: add video/x-raw to the VulkanBuffer uploader
...
Allows upstream elements that use our memory to passthrough without copying.
2016-09-08 16:14:41 +10:00
Matthew Waters
c110b62cf8
vkutils: set the last element of the layer array to NULL
...
g_strv* functions require this to not read off the end of the array.
2016-09-08 16:14:31 +10:00
Matthew Waters
864a0f453d
vkswapper: check the error of the presentation for out of date
...
allows us to resize the swapchain correctly.
2016-05-13 15:24:35 +03:00
Matthew Waters
4810c7de70
vulkan/build: add the build directory to the list of includes
...
Fixes out of tree builds from tarballs.
https://bugzilla.gnome.org/show_bug.cgi?id=764758
2016-05-05 23:54:16 +10:00
Matthew Waters
77f6e253e1
vkswapper: fix up display synchronization
...
Use the semaphores in the correct place, before and after the submission for
acquiring and presenting the swapchain buffer.
Waiting on the fence that only signals the command buffer completion rather than
the completion of the presentation is racy with the destruction of the vulkan
buffers associated with that image. Wait on the device to be idle instead after
presenting.
2016-05-05 23:54:16 +10:00
Matthew Waters
267588fb5e
vkswapper: use gst_video_sink_center_rect for positioning the video
...
Don't try to reimplement it badly.
2016-05-05 23:54:16 +10:00
Matthew Waters
ab33030250
vulkan: prettify the various versions in the debug output
...
output human readable numbers.
2016-04-12 09:39:12 +10:00
Matthew Waters
65770c2af9
vulkan: add a wayland winsys implementation
2016-04-11 14:18:47 +10:00
Matthew Waters
e46bd98fe6
vulkan/xcb: getProcAddress winsys functions
...
There's no guarantee that they will always be exposed by the vulkan loader.
2016-04-11 14:18:47 +10:00
Matthew Waters
b76fcfd3f7
vkupload: copy necessary buffer metadata
...
timestamps, flags, etc
2016-04-11 14:18:47 +10:00
Matthew Waters
09808f9780
vkswapper: add necessary wait stages to the submission info
2016-04-08 21:46:50 +10:00
Matthew Waters
e4377e5c8f
vkswapper: add srgb formats to our list of formats
...
intel returns them for their surface formats.
2016-04-08 21:46:50 +10:00
Matthew Waters
61d1b31136
vulkan: silence a validation warning filling out the image barrier
2016-04-08 21:46:50 +10:00
Matthew Waters
cecbcd704b
vulkan: use the correct validation layer name
...
The threading validation layer has changed names.
2016-04-08 21:46:50 +10:00
Matthew Waters
761171b6d2
vulkan: only warn on not found layers
...
don't error out completely
https://bugzilla.gnome.org/show_bug.cgi?id=764545
2016-04-08 17:56:50 +10:00
Matthew Waters
b32ca4b550
vulkan: don't g_error when failing to find validation layers
...
Aborting the application is never a good thing to do for recoverable errors.
Just warn and error out instead.
https://bugzilla.gnome.org/show_bug.cgi?id=764545
2016-04-08 17:42:46 +10:00
Vineeth TM
8cdfb13658
bad: use new gst_element_class_add_static_pad_template()
...
https://bugzilla.gnome.org/show_bug.cgi?id=763081
2016-03-24 14:56:51 +02:00
Thibault Saunier
b634f08ad6
vulkan: Minor string fix
2016-03-23 13:43:46 +01:00
Matthew Waters
dcfa7ee044
vulkan: VK_API_VERSION has been removed
...
In a stable release too, naughty.
Use VK_API_VERSION_1_0 instead
https://bugzilla.gnome.org/show_bug.cgi?id=764066
2016-03-23 22:15:35 +11:00
Sebastian Dröge
02fff22db5
vulkan: Ship missing headers with tarballs
...
https://bugzilla.gnome.org/show_bug.cgi?id=763877
2016-03-18 19:45:09 +02:00
Reynaldo H. Verdejo Pinochet
b077cd5510
vksink: fix spelling on failed _ensure_data() error message
2016-03-02 14:53:46 -08:00
Vineeth TM
55060ee6ce
vkswapper/vkutils: Fix gerror memory leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=762842
2016-02-29 09:50:25 +02:00
Vineeth TM
d258b06013
vkdevice: Fix duplicate assignment of queue variable
...
https://bugzilla.gnome.org/show_bug.cgi?id=762842
2016-02-29 09:50:25 +02:00
Vineeth TM
e821582c13
vksink: Fix GError memory leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=762842
2016-02-29 09:50:25 +02:00
Matthew Waters
1cca847b2a
vkdevice: add the necessary but arbitrary queue priority
...
Silences an error in the validation layers.
2016-02-17 01:13:43 +11:00
Matthew Waters
49430569da
vkswapper: add the necessary call to check if the physical device supports the surface
...
Silences an error in the validation layers.
2016-02-17 01:13:43 +11:00
Matthew Waters
4ca3fdb955
vulkan: update to SDK 1.0.3.1
2016-02-17 01:13:43 +11:00
Matthew Waters
a3aa0d11ec
vkswapper: iterate over the device queue's using the new iteration API
2016-02-17 01:13:43 +11:00
Matthew Waters
ca8f2b0826
vkdevice: add callback iteration over the device queue's
2016-02-17 01:13:43 +11:00
Matthew Waters
eb4419b49b
vkqueue: add context helpers
2016-02-17 01:13:43 +11:00
Matthew Waters
5617b0904b
vkutils: move object-specific context queries to their respective files
...
vkutils now just contains some utility functions to further simplify retrieving
multiple objects.
2016-02-17 01:13:43 +11:00
Matthew Waters
d1d8a365a2
vkdevice: remove unneeded error parameter from get_queue()
2016-02-17 01:13:43 +11:00
Matthew Waters
53f99ac804
vkupload: implement an uploader abstraction
2016-02-17 01:13:43 +11:00
Matthew Waters
57bd62f85f
vkdisplay: unref the instance
...
fixes memory leak
2016-02-17 01:13:43 +11:00
Matthew Waters
7118f1f7e2
vulkan: chain up in finalize
...
They were missing in some cases
2016-02-17 01:13:43 +11:00
Matthew Waters
22172df413
vksink: only unref if the pointers are non-NULL
2016-02-17 01:13:43 +11:00
Matthew Waters
b5dce08d8f
vkimagememory: free the managing struct on _free
...
fixes a memory leak
2016-02-17 01:13:43 +11:00
Matthew Waters
68b1e18123
vkdevice: perform a waitIdle before destroying the device
2016-02-17 01:13:43 +11:00
Matthew Waters
1c2aae08c5
Revert "vulkan: remove views from the memory objects."
...
This reverts commit 1ea817298ee4d5ef9b00f888f8ebe16a888b1150.
2016-02-17 01:13:43 +11:00
Matthew Waters
3c2710dc0f
vulkanmemory: remove bind variants
2016-02-17 01:13:43 +11:00
Matthew Waters
4c0a169af9
vulkan: remove views from the memory objects.
...
They are not used and it's not possible to create the view before binding the
VkDeviceMemory object to them.
2016-02-17 01:13:43 +11:00
Matthew Waters
0309c9fbc7
vkswapper: alpha flags are now supported by LunarG's driver
2016-02-17 01:13:43 +11:00
Matthew Waters
0dd1154b73
vulkan: add a vulkanbuffer bufferpool
2016-02-17 01:13:43 +11:00
Matthew Waters
86e18d6b8f
vulkan: add upload element
2016-02-17 01:13:43 +11:00
Matthew Waters
980213ee97
vkutils: fix assert inversion
2016-02-17 01:13:43 +11:00
Matthew Waters
43afa15fac
vulkan: add caps feature names for the buffer and image memories
2016-02-17 01:13:43 +11:00
Matthew Waters
7871910bc6
vulkan: add device to handle_context_query
2016-02-17 01:13:43 +11:00