Matthew Waters
34ff895040
vulkan: remove VkImageView from the memory
...
There can be multiple views per image for different subresource ranges
or planes in multi-planer images.
2019-09-25 11:11:02 +00:00
Matthew Waters
452bb72292
vkbuffer: remove buffer view from the memory
...
It's only really useful for texture buffers which we currently do not
use.
2019-09-25 11:11:02 +00:00
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
66ed62b794
vulkansink: attempt a context query for a device
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
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
Yeongjin Jeong
8bc5144020
vulkan: Don't dereference null pointer when printing error
...
When printing error message because the function failed, the GError variable
may not be used and it can be NULL.
2019-08-29 11:19:37 +00:00
Matthew Waters
d9248560e4
vulkancolorconvert: explicitly initalize swizzle arrays
...
Fixes uninitialized access of the indexed values larger than
the number of planes in the video format.
2019-08-28 10:34:39 +00:00
Matthew Waters
833c596bc5
vulkan/fullscreenrender: free the attachment descriptions
...
Fixes a memory leak of the attachment descriptions we receive from the
subclass.
2019-08-22 14:57:02 +10:00
Matthew Waters
837cdd598a
vulkanviewconvert: perform a renegotiation on multiview mode/flag property changes
...
Otherwise changing the output* properties have no effect until someone else
performs a renegotiation.
2019-08-22 11:51:01 +10:00
Matthew Waters
e5d574534c
shaders/view-convert: remove some debugging colours
...
Fixes left and right output modes.
2019-08-22 11:50:51 +10:00
Seungha Yang
6b6bb6b203
vulkan: Fix incompatible type build warning
...
Make declare/define a function consistent.
Note that GstBaseTransform::set_caps should return gboolean
Compiling C object subprojects/gst-plugins-bad/ext/vulkan/f3f9d6b@@gstvulkan@sha/vkviewconvert.c.obj.
../subprojects/gst-plugins-bad/ext/vulkan/vkviewconvert.c(644):
warning C4133: '=': incompatible types - from 'GstFlowReturn (__cdecl *)(GstBaseTransform *,GstCaps *,GstCaps *)'
to 'gboolean (__cdecl *)(GstBaseTransform *,GstCaps *,GstCaps *)'
2019-07-09 01:42:58 +00:00
Matthew Waters
014642e188
vulkan: add view converter element
2019-07-05 15:04:28 +10:00
Matthew Waters
6ebaf7276e
vulkan: fix output framebuffer creation size
...
We don't scale when color converting so there is no impact.
2019-07-05 10:47:45 +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
ec9ea06591
vkswapper: support rescaling to the output size
2019-06-24 16:23:29 +10:00
Matthew Waters
35325fdffb
vksink: Don't take vulkan buffer's as input
2019-06-24 16:23:29 +10:00
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