Commit graph

141 commits

Author SHA1 Message Date
Matthew Waters dcff70d6bf vulkan: remove unused downsample AYUV shader 2019-06-20 05:44:47 +00:00
Matthew Waters d43fea06c5 vkcolorconvert: add support for RGB<->NV12 2019-06-20 01:41:56 +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 2180fbb498 vulkancolorconvert: support RGB <-> AYUV/YUY2/UYVY 2019-06-20 01:41:56 +10:00
Matthew Waters dbf60a1738 vktrash: add mini_object_unref destroy function 2019-06-20 01:41:56 +10:00
Matthew Waters b93de8b0d8 vkfullscreenrender: create descriptor sets later
The desciptor sets may be dependant on the caps
2019-06-20 01:41:56 +10:00
Matthew Waters 2e34dd891d vulkan/shaders: change glslc compilation args based on configurations
Add depfile support so that modifying an #included glsl snippet
rebuilds all the dependant shaders.
2019-06-20 01:41:56 +10:00
Matthew Waters 5363b30f6c vulkan: add a color conversion element
Currently converts between all 4-component RGBA/RGBx formats.
2019-06-20 01:41:56 +10:00
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