Commit graph

163 commits

Author SHA1 Message Date
Aaron Boxer 6d3429af34 documentation: fixed a heap o' typos 2019-11-05 09:11:25 -05:00
Matthew Waters ecca6cbfd2 vulkanimage: move fence creation earlier
Fixes a critical:

GStreamer-CRITICAL **: 02:26:34.698: gst_mini_object_ref: assertion 'mini_object != NULL' failed
2019-10-28 07:22:45 +00:00
Matthew Waters 103112725c vulkan: change to clamp to edge rather than clamp to border
clamp-to-border will return the border color which is typically black,
white or transparent.  When linear filtering the edge pixels will
typeically be combined with the border color which is not typically what
we want.  Especially when color converting, this removes a green box
around the edge when converting YUV->RGB.
2019-10-28 07:22:45 +00:00
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