Jason Ekstrand
048435b44c
vulkan/wsi: Fix structure chaining in wsi_create_buffer_image_mem
...
First, because we're using __vk_append_struct which attacks it on the
end, memory_wsi_info is modified even though it's const. Make things
non-const so we aren't silently violating assumptions. Also, we set a
pNext in memory_export_info which causes a loop in the pNext chain in
the handle_types != 0 case.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6826
Fixes: 124848bf9e ("vulkan/wsi: Support tiled CPU images")
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17434 >
2022-07-08 21:50:55 +00:00
Jason Ekstrand
a084ee7209
vulkan/wsi/wayland: Only memcpy if the swapchain is actually software
...
Otherwise, we'll segfault. :-(
Fixes: aca545d616 ("vulkan/wsi/wayland: Use host pointer import when available")
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17434 >
2022-07-08 21:50:55 +00:00
Pierre-Eric Pelloux-Prayer
835364ea0c
vulkan/wsi: define pWaitDstStageMask in the blit submission
...
Otherwise we get a crash in vk_common_QueueSubmit when doing:
.stageMask = pSubmits[s].pWaitDstStageMask[i],
cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6712
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17310 >
2022-07-07 21:49:39 +00:00
Jesse Natalie
8faf3781c8
vulkan/wsi/win32: Use the new helpers and persistent map
...
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 11:44:19 -05:00
Jason Ekstrand
aca545d616
vulkan/wsi/wayland: Use host pointer import when available
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 11:44:19 -05:00
Jason Ekstrand
54fa5ff406
vulkan/wsi/x11: Only use MIT_SHM if the device supports EXT_external_memory_host
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 11:44:19 -05:00
Jason Ekstrand
5abc05f1df
vulkan/wsi/x11: Don't leak shm_reply if we don't have dri3 or present
...
Fixes: b5c390c113 ("vulkan/wsi: add support for detecting mit-shm pixmaps.")
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 11:44:19 -05:00
Jason Ekstrand
124848bf9e
vulkan/wsi: Support tiled CPU images
...
Some drivers such as lavapipe are 100% fine with using linear for WSI
images. Most HW drivers, however, would rather render tiled and eat a
blit.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 11:44:19 -05:00
Jason Ekstrand
83fb6fe569
vulkan/wsi: Align buffer image strides to optimalBufferCopyRowPitchAlignment
...
This isn't a big deal for the current buffer paths because the required
alignment for PRIME is already higher than any driver advertises.
However, the SW path we're about to add won't have the PRIME requirement.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 11:44:17 -05:00
Jason Ekstrand
13148b9c68
vulkan/wsi: Compute stride and size in configure_buffer_image
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 11:44:10 -05:00
Jason Ekstrand
cf37837d36
vulkan/wsi: Persistently map CPU images
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 11:44:09 -05:00
Jason Ekstrand
1d0290fbfe
vulkan/wsi: Delete SW support from configure_native_image
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 10:21:35 -05:00
Jason Ekstrand
4c79ec1934
vulkan/wsi/wayland: Use wsi_configure_cpu_image
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 10:21:34 -05:00
Jason Ekstrand
3d48b3c6f8
vulkan/wsi/x11: Use wsi_configure_cpu_image
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 10:21:33 -05:00
Jason Ekstrand
afe2cb7b11
vulkan/wsi: Add a helper for creating CPU images
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 10:21:30 -05:00
Jason Ekstrand
1cc20fbefd
vulkan/wsi: Move select_memory_type to common and rework it a bit
...
Instead of taking a single boolean for device-local, take a set of
required properties and denied properties. This will let us require
additional things like being CPU mappable in the future.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 10:21:29 -05:00
Jason Ekstrand
fbb7b6e052
vulkan/wsi/wayland: Use a single memcpy in the SW path
...
The strides match. There's no reason to loop over image height.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 10:21:27 -05:00
Jason Ekstrand
ca6bd57e76
vulkan/wsi: Pass the size to MapMemory in the SW path
...
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17388 >
2022-07-07 10:21:24 -05:00
Chia-I Wu
3831079fdf
vulkan/device_select: remove get_pdevice_proc_addr
...
It is optional and is needed only when a layer has physical device
extensions that may be unknown to the loader.
This simplifies the layer a bit, but more importantly, it works around a
bug in the loader when there is another layer in the layer chain that
wraps VkInstance.
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16307 >
2022-07-06 23:53:25 +00:00
Hans-Kristian Arntzen
0119de08f2
vulkan: Add common code for VK_EXT_shader_module_identifier.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17332 >
2022-07-06 16:27:21 +00:00
Hans-Kristian Arntzen
6d66a43a70
vulkan: Update Vulkan XML and headers to 1.3.219.
...
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17332 >
2022-07-06 16:27:21 +00:00
Jordan Justen
d5884a716f
vulkan/wsi: Disable dma-buf sync file if ENOSYS is returned
...
ENOSYS is commented as "Invalid system call number". This is returned
by qemu-user for unbridged ioctls.
Fixes: 30b57f10b3 ("vulkan/wsi: Signal semaphores and fences from the dma-buf")
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17325 >
2022-07-01 10:28:34 +00:00
Jason Ekstrand
d06335ed76
vulkan: Depend on vk_pipeline_layout in vk_cmd_enqueue
...
Now that we have a common pipeline layout with reference counting, we
don't need these driver hooks for reference counting anymore.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17286 >
2022-06-29 20:31:58 +00:00
Jason Ekstrand
e6c75bcd9c
vulkan: Add a common implementation of pipeline layouts
...
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17286 >
2022-06-29 20:31:57 +00:00
Jason Ekstrand
949ce92f05
vulkan: Add a base struct for descriptor set layouts
...
There's some tricky stuff in here with properly handling Vulkan
allocation scopes and reference counting. Probably best to do it once.
Also, this means that common code can now take references to descriptor
set layouts which seems useful.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17286 >
2022-06-29 20:31:57 +00:00
Jason Ekstrand
d46db2e5a6
vulkan: Fix a comment
...
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17286 >
2022-06-29 20:31:57 +00:00
Jesse Natalie
d4f7f21fa5
vulkan_entrypoints_gen: For Windows ARM64EC, prefix symbols with '#'
...
Acked-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17267 >
2022-06-29 01:18:19 +00:00
Boris Brezillon
542538cf02
vulkan: Add a vk_pipeline_hash_shader_stage() helper
...
All drivers implement some sort of shader hashing, but each of
them does it slightly differently. Let's provide a generic helper
to avoid new copies of the same logic and encourage new drivers
to use one of the already implemented function.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17186 >
2022-06-28 09:07:32 +00:00
Jason Ekstrand
21374eb777
vulkan/render_pass: Support VkAttachmentSampleCountInfoAMD
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16953 >
2022-06-24 22:37:53 +00:00
Jason Ekstrand
541819b2d6
vulkan/render_pass: Allow for mixed sample counts
...
RADV supports VK_AMD_mixed_attachment_samples which does exactly what it
sounds like.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16953 >
2022-06-24 22:37:53 +00:00
Jason Ekstrand
7e11cdc77a
vulkan/render_pass: Pass sample locations to barriers
...
This is required for depth/stencil images created with
VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16953 >
2022-06-24 22:37:53 +00:00
Jason Ekstrand
6216c59dbb
vulkan/render_pass: Use a special layout for self-dependencies
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16953 >
2022-06-24 22:37:53 +00:00
Jason Ekstrand
3a204d5cf3
vulkan/render_pass: Add a better helper for render pass inheritance
...
Instead of making drivers dive into the render pass and framebuffer
themselves, provide a helper that constructs a VkRenderingInfo for a
render pass resume that they can use instead. This should reduce code
duplication between driver implementations of BeginRendering and
BeginCommandBuffer.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16953 >
2022-06-24 22:37:53 +00:00
Jason Ekstrand
8ce7faab47
vulkan: Add a vk_pipeline_shader_stage_to_nir helper
...
This is similar to vk_shader_module_to_nir only it takes a
VkPipelineShaderStageCreateInfo and handles
VK_KHR_graphics_pipeline_library semantics for when a
VkShaderModuleCreateInfo is provided instead of an actual module.
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17196 >
2022-06-23 15:41:00 +00:00
Jason Ekstrand
288c1c29fb
vulkan/nir: Make spirv_data const in vk_spirv_to_nir
...
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17196 >
2022-06-23 15:41:00 +00:00
Jason Ekstrand
981cf8a41d
vulkan: Add some border color helpers
...
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15359 >
2022-06-23 00:01:41 +00:00
Dave Airlie
d3e723fb77
wsi/x11: add xcb_put_image support for larger transfers.
...
This was noticed as a problem in the EGL code, just fixup wsi.
Cc: mesa-stable
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17155 >
2022-06-22 03:28:21 +00:00
Jason Ekstrand
64d074879b
vulkan/wsi: Use HAVE_LIBDRM to detect DRM instead of !_WIN32
...
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com >
Acked-by: Danylo Piliaiev <dpiliaiev@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17170 >
2022-06-22 01:15:20 +00:00
Lionel Landwerlin
efc398c722
vulkan/wsi: fix crash with debug names on swapchain
...
If you set a name of on a swapchain object, because the base object
struct has not been initialized with a VkDevice,
vk_object_base_finish() will segfault when trying to free the object
name.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Fixes: cb1e0db23e ("vulkan/wsi: Make wsi_swapchain inherit from vk_object_base")
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17165 >
2022-06-21 17:05:10 +00:00
Yonggang Luo
1173c0f33a
meson: Using get_argument_syntax as the --compiler_id option for gen_vs_module_defs.py
...
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com >
Reviewed-by: Dylan Baker <dylan@pnwbakers.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17065 >
2022-06-16 19:59:58 +00:00
Jan Beich
78523eea2f
vulkan/wsi: treat EBADF as missing DMA_BUF_IOCTL_{EXPORT,IMPORT}_SYNC_FILE
...
FreeBSD supports DMA-BUF but not DMA_BUF_IOCTL_SYNC and similar yet.
As it returns EBADF instead of ENOTTY all consumers fail due to
VK_ERROR_OUT_OF_HOST_MEMORY.
Fixes: 30b57f10b3 ("vulkan/wsi: Signal semaphores and fences from the dma-buf")
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17070 >
2022-06-16 02:33:23 +00:00
Boris Brezillon
b78d3ebe72
vulkan/util: Fill VkPhysicalDeviceIDProperties::deviceNodeMask
...
This field copy was missing in
vk_get_physical_device_core_1_1_property_ext().
Fixes: 19ff5019b7 ("vulkan: Add helpers for filling exts for core features and properties.")
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16926 >
2022-06-14 22:44:42 +00:00
Erik Faye-Lund
2c43044507
vulkan/util: assume c11
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16908 >
2022-06-14 15:08:37 +00:00
Renato Pereyra
2ef6b0aab1
Revert "wsi/x11: Avoid using xcb_wait_for_special_event in FIFO modes"
...
This reverts commit 44a20baeb8 .
Signed-off-by: Renato Pereyra <renatopereyra@chromium.org >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16954 >
2022-06-13 17:58:46 +00:00
Renato Pereyra
ee587f202e
Revert "wsi/x11: Don't leak xcb_get_geometry_reply_t."
...
This reverts commit 24049b8771 .
Signed-off-by: Renato Pereyra <renatopereyra@chromium.org >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16954 >
2022-06-13 17:58:46 +00:00
Jason Ekstrand
30b57f10b3
vulkan/wsi: Signal semaphores and fences from the dma-buf
...
Instead of attempting to signal based on the memory object, use the new
DMA_BUF_IOCTL_EXPORT_SYNC_FILE to get a sync_file for the dma-buf and
use that to signal the semaphore or fence. Because this happens before
we transfer ownership back to the driver, the resulting sync_file should
only contain dma_fences from the compositor and/or display and shouldn't
be mixed up with the driver in any way. This gives us a real semaphore
and fence (as opposed to the dummy objects we've used int the past)
without over-synchronization.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4037 >
2022-06-10 01:33:12 +00:00
Jason Ekstrand
18bd05827d
vulkan/wsi: Set memory ownership after signaling fences and semaphores
...
This isn't a functional change today because the set of drivers which
use set_ownership and those that use signal_fence/semaphore_for_memory
are mutually exclusive. It's important for the next commit, though.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4037 >
2022-06-10 01:33:12 +00:00
Jason Ekstrand
6930f08860
vulkan/wsi: Re-arrange QueueSubmit code in wsi_common_queue_present
...
Instead of treating the blit submit specially in the buffer_blit_queue
case, treat the dummy submit as special. This lets us keep all the
handling of special-queue blits together. It also means that the
wsi_memory_signal_submit_info gets chained into the final submit which
is what we want if we're to rely on it for implicit sync. If we chain
it into the dummy submit, we'll implicit sync on all work previous to
the blit but not the blit. This won't work if X11 or a Wayland
compositor is depending on that to synchronize the linear copy.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4037 >
2022-06-10 01:33:12 +00:00
Jason Ekstrand
bee3d2e156
vulkan/wsi: Reset fences earlier in wsi_common_queue_present
...
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4037 >
2022-06-10 01:33:12 +00:00
Jason Ekstrand
d211f4891a
vulkan/wsi: Use a STACK_ARRAY for stage_flags
...
This avoids the heap allocation in the common case.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4037 >
2022-06-10 01:33:12 +00:00