Commit graph

193 commits

Author SHA1 Message Date
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
Matthew Waters bfab93dabe vulkan: move instance_open into the utility ensure_element_data
So callers don't have to perform it themselves.
2016-02-17 01:13:43 +11:00
Matthew Waters 0bcb3cdd29 vkinstance: add signal for overriding device creation 2016-02-17 01:13:43 +11:00
Matthew Waters 300f4e03b2 vulkan: separate allocation and binding of memory 2016-02-17 01:13:43 +11:00
Matthew Waters 914c1a5193 vkbuffermemory: follow the rest of the struct macros 2016-02-17 01:13:43 +11:00
Matthew Waters 16510e2cbc vkswapper: use buffer memory to upload video frames to the GPU 2016-02-17 01:13:43 +11:00
Matthew Waters bd41cc4557 vulkan: add a buffer memory allocator
Wraps the VkBuffer in a GstMemory subclass.
2016-02-17 01:13:43 +11:00
Matthew Waters eb3f6eebce vkmemory: align struct members in the header 2016-02-17 01:13:43 +11:00
Matthew Waters a2ad5d9eac vkmacros: use specific _INIT macros to initialize structures 2016-02-17 01:13:43 +11:00
Matthew Waters 6731fad9af vkimagememory: add get_{width,height) functions 2016-02-17 01:13:43 +11:00
Matthew Waters 08fd5c2ae5 vulkan: update to release 1.0.1.1 2016-02-17 01:13:43 +11:00
Matthew Waters 700eb16af8 vulkan/xcb: flush after mapping the window
Otherwise the map may not reach the server and not appear.
2016-02-17 01:13:43 +11:00
Matthew Waters 28ad97059d vkswapper: fix semaphore usage 2016-02-17 01:13:43 +11:00
Matthew Waters 0ee8fe193e vulkan: add some debugging about the supported extensions 2016-02-17 01:13:43 +11:00
Matthew Waters 72e956fe5e vkswapper: get the function pointers from the correct object
GetPhysicalDevice* functions are instance functions rather than device
functions.
2016-02-17 01:13:43 +11:00
Matthew Waters d067ed8a9e vkinstance: add the necessary winsys extension 2016-02-17 01:13:43 +11:00
Matthew Waters 3ed50f36ed vkdisplay: forward declare GstVulkanDisplayType 2016-02-17 01:13:43 +11:00
Matthew Waters f0fb45dd76 vkapi: remove unneeded headers
vkapi is for accessing the vulkan headers with the correct defines applied so
doesn't need any interal headers.
2016-02-17 01:13:43 +11:00
Matthew Waters 873e0d6340 vkimagememory: fix the memory barrier access masks
silences the following warnings from the validation layer

AccessMask xxx must have required access bit xxx and may have optional bits 0
when layout is VK_IMAGE_LAYOUT_TRANSFER_{SRC,DST}_OPTIMAL
2016-02-17 01:13:43 +11:00
Matthew Waters 9a0f415e79 vkswapper: only wait on the semaphore once
It's invalid usage and we may deadlock
2016-02-17 01:13:43 +11:00
Matthew Waters 2f11fc029d vkimagememory: initialize flags and don't crash on errors 2016-02-17 01:13:43 +11:00
Matthew Waters b38362e75f vulkan: update error db for 0.10.2 2016-02-17 01:13:43 +11:00
Matthew Waters 6fe59754df vulkan: update to SDK 0.10.2 2016-02-17 01:13:43 +11:00
Matthew Waters 996200ffc0 vulkan: implement GstContext helpers
Based off libgstgl's implementation
2016-02-17 01:13:43 +11:00
Matthew Waters 75aaf184bb vkdevice: remove gst_vulkan_device_close()
When sharing the device between multiple elements/application, we need
to use th erefcount to know when to close the device.
2016-02-17 01:13:43 +11:00
Matthew Waters 5dd530daec vkinstance: remove gst_vulkan_instance_close
Sharing the instance across multiple elements/application will require
using the refcount instead to know when to close and destroy the instance.
2016-02-17 01:13:43 +11:00
Matthew Waters 203c6fa55c vkswapper: remove outdated comment 2016-02-17 01:13:43 +11:00
Matthew Waters 8819319ad1 vkswapper: always match lock/unlock of the render lock
If a draw event comes from the winsys before we've rendered a buffer we were
deadlocking.
2016-02-17 01:13:43 +11:00
Matthew Waters a4e82bcef7 vkmemory: debug output the memory properties requested 2016-02-17 01:13:43 +11:00
Matthew Waters 87a35f679d vkimagememory: don't leak GstMapInfo in failure cases on _map() 2016-02-17 01:13:43 +11:00
Matthew Waters 074cb047ef vulkan: de-C99 struct declarations 2016-02-17 01:13:43 +11:00
Matthew Waters a4476fa24b vkwindow/swapper: implement redraw handling
only xcb has been implemented
2016-02-17 01:13:43 +11:00
Matthew Waters 216a321319 vulkan: implement quitting and resizing the window
As before, only xcb has been implemented.
2016-02-17 01:13:43 +11:00
Matthew Waters 5de6dd9f40 new vulkan based video sink
Currently xcb is the only winsys that is implemented and there's no redraws et
al
2016-02-17 01:13:43 +11:00