Boris Brezillon
f0667be8b5
vulkan/util: Make STACK_ARRAY() C++-friendly
...
C++ doesn't like the {0} initializer pattern when the first
field is not an integer, let's use the {} when __cplusplus is
defined.
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15698 >
2022-04-08 11:54:44 +00:00
Jason Ekstrand
dd340ce1a1
vulkan,docs: Document vk_device
...
Acked-by: Iago Toral Quiroga <itoral@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15472 >
2022-04-07 16:32:21 +00:00
Jason Ekstrand
6073610d7a
vulkan,docs: Document vk_physical_device
...
Acked-by: Iago Toral Quiroga <itoral@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15472 >
2022-04-07 16:32:21 +00:00
Jason Ekstrand
f6d4641433
vulkan,docs: Document vk_instance
...
Acked-by: Iago Toral Quiroga <itoral@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15472 >
2022-04-07 16:32:21 +00:00
Jason Ekstrand
f06fa8f7e0
vulkan,docs: Document vk_object_base
...
Acked-by: Iago Toral Quiroga <itoral@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15472 >
2022-04-07 16:32:21 +00:00
Jason Ekstrand
0ca8b95824
vulkan: vk_object_base_init/finish have no unused parameters
...
Acked-by: Iago Toral Quiroga <itoral@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15472 >
2022-04-07 16:32:21 +00:00
Jason Ekstrand
2f6bca6a74
vulkan: Use timespec_add_nsec in vk_sync_timeline
...
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15651 >
2022-04-06 00:38:22 +00:00
Mike Blumenkrantz
9a6ea51388
vulkan: check 3D image type for VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
...
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15754 >
2022-04-05 20:30:31 +00:00
Mike Blumenkrantz
b591409b6c
vulkan: spec update to 1.3.211
...
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15752 >
2022-04-05 12:55:21 +00:00
Benjamin Cheng
4489933842
vulkan/queue: Destroy wait temps if they are skipped
...
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6223
Fixes: 8a11d2a31b ("vulkan: Add a dummy sync type")
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Tested-by: Jakob Bornecrantz <jakob@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15727 >
2022-04-04 20:52:46 +00:00
Rajnesh Kanwal
d5405c1608
vulkan: Move common format function to vulkan/util/vk_format.h
...
Moving duplicate vk_format helper functions to common
vulkan/util/vk_format.h and also renaming
vk_format_get_component_size_in_bits to match how amd and
freedreno name the same function. Not moving this function
to common code as freedreno's implementation is a bit different.
Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15696 >
2022-03-31 17:18:22 +00:00
Jason Ekstrand
51077e821a
vulkan: Allow the driver to manually enable threaded submit
...
This is useful for drivers that wish to be able to block inside their
vk_queue::driver_submit hook.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15566 >
2022-03-30 23:17:56 +00:00
Jason Ekstrand
08512aea09
vulkan: Replace various uses of device->timeline_mode
...
What we really care about is if we're DEFERRED so we need to do a flush
and if there can be any other threads we might race against. We don't
really care about the timeline mode itself.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15566 >
2022-03-30 23:17:56 +00:00
Jason Ekstrand
8e51778acf
vulkan/queue: Rework vk_queue_submit()
...
Instead of basing everything on the timeline mode, base it on the submit
mode of the queue. This makes a lot more sense since it's what we
really care about anyway.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15566 >
2022-03-30 23:17:56 +00:00
Jason Ekstrand
e0ffdc8ce0
vulkan/queue: Rework submit thread enabling
...
Now that we have a threading mode in the device, we can set that based
on the environment variable instead of delaying it to submit time. This
allows us to avoid the static variable trickery we use to avoid reading
environment variables over and over again. We also move the enabling of
the submit thread up a level or two and give it a bit more obvious
condition.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15566 >
2022-03-30 23:17:56 +00:00
Jason Ekstrand
9ddab162b7
vulkan/queue: Add a submit mode enum
...
This encapsulates all three possible submit modes: immediate, deferred,
and threaded. It's more clear than the has_thread boolean combined with
device-level checks.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15566 >
2022-03-30 23:17:56 +00:00
Jason Ekstrand
dc2c9bae25
vulkan: Add more VU comments to justify framebuffer asserts
...
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15674 >
2022-03-30 20:43:12 +00:00
Mike Blumenkrantz
8c3b4dd996
vulkan: update spec to 1.3.210
...
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15635 >
2022-03-29 07:59:23 -04:00
Jakob Bornecrantz
9e31991c6e
vulkan-device-select: Don't leak xcb_query_extension_reply_t
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15600 >
2022-03-28 11:06:11 +00:00
Adam Jackson
8006179cfd
wsi/x11: xcb_wait_for_special_event failure is an error
...
The only ways that function can return NULL are:
- the xcb connection was closed
- the window for the swapchain was destroyed
- the special event listener was unregistered from another thread
- malloc failure
All of these are permanent errors, the swapchain is no longer in a
usable state, so we should treat this as VK_ERROR_SURFACE_LOST_KHR.
Acked-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15558 >
2022-03-25 19:31:13 +00:00
Boris Brezillon
7e0ab29cfd
vulkan/util: Make STACK_ARRAY() work for arrays of pointers
...
And add an explicit cast on the pointer returned by malloc() to
make C++ happy.
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14766 >
2022-03-25 16:21:45 +00:00
Boris Brezillon
bb1fb07ecd
vulkan/image: Make MSVC C++ compiler happy
...
Fix 'error C4576: a parenthesized type followed by an initializer
list is a non-standard explicit type conversion syntax' errors by
declaring an actual variable and returning it in
vk_image_view_subresource_range().
All those MSVC/c++ related-constraints are quite annoying to be honest,
but it looks like the D3D12 headers have been updated to plain C
recently, which will allow us to write the driver in C, and hopefully
get all this sort of issues behind us.
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14766 >
2022-03-25 16:21:45 +00:00
Boris Brezillon
b000abbe7f
vulkan/util: Get rid of VK_OUTARRAY_MAKE()
...
Get rid of VK_OUTARRAY_MAKE() so people don't get tempted to
use it and produce code that doesn't compile with MSVC, which
doesn't support typeof().
Suggested-by: Daniel Stone <daniels@collabora.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15522 >
2022-03-25 11:00:03 +00:00
Boris Brezillon
5f309da5e4
vulkan/wsi: Stop using VK_OUTARRAY_MAKE()
...
We're trying to replace VK_OUTARRAY_MAKE() by VK_OUTARRAY_MAKE_TYPED()
so people don't get tempted to use it and make things incompatible with
MSVC (which doesn't support typeof()).
Suggested-by: Daniel Stone <daniels@collabora.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15522 >
2022-03-25 11:00:03 +00:00
Boris Brezillon
52a2aa44f3
vulkan/device_select: Stop using VK_OUTARRAY_MAKE()
...
We're trying to replace VK_OUTARRAY_MAKE() by VK_OUTARRAY_MAKE_TYPED()
so people don't get tempted to use it and make things incompatible with
MSVC (which doesn't support typeof()).
Suggested-by: Daniel Stone <daniels@collabora.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15522 >
2022-03-25 11:00:03 +00:00
Jason Ekstrand
e500faebc2
vulkan: Add a vk_image_view_subresource_range helper
...
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15535 >
2022-03-24 21:21:10 +00:00
Boris Brezillon
5b12a498f5
vulkan/runtime: Add vk_cmd_queue.h to idep_vulkan_runtime_headers
...
If we don't do that, meson might start compiling source files
including vk_command_buffer.h which in turn includes vk_cmd_queue.h
before this file is even generated, and we end up with errors like
that https://gitlab.freedesktop.org/mesa/mesa/-/jobs/20157936#L1119 .
Fixes: 6bd8a3c7e4 ("vulkan/runtime: Add a vk_cmd_queue object to vk_command_buffer")
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15546 >
2022-03-24 19:43:02 +00:00
Lionel Landwerlin
3889dda1f1
vulkan: move EXT_tooling_info implementation to runtime
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15491 >
2022-03-23 09:51:57 +00:00
Brian Paul
03d342e4b2
vulkan/wsi/x11: add null pointer check for the has_dri3_v1_2 test
...
This fixes a crash (ver_reply is NULL) when DISPLAY points to
a remote display.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6040
Signed-off-by: Brian Paul <brianp@vmware.com >
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15469 >
2022-03-23 03:19:40 +00:00
Jason Ekstrand
df92f56d8d
vulkan/runtime: Add emulated secondary command buffer support
...
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14406 >
2022-03-18 17:29:16 +00:00
Boris Brezillon
25542f12d7
vulkan/cmd_queue: Fix the allocation scope
...
VK_SYSTEM_ALLOCATION_SCOPE_COMMAND is used for transient allocations that
are not expected to live outside the vkXxx(). Use
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT for cmd_entry allocations.
v2 (Jason Ekstrand):
- Also fix the manually typed entrypoints in vk_cmd_enqueue.c
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14406 >
2022-03-18 17:29:16 +00:00
Boris Brezillon
1437ee749b
vulkan/cmd_queue: Track allocation errors in vk_cmd_queue
...
Needed to report allocation failures when vkEndCommandBuffer() is
called.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14406 >
2022-03-18 17:29:16 +00:00
Jason Ekstrand
6cb95877b5
vulkan/cmd_queue: Auto-generate more vk_cmd_enqueue_unless_primary_Cmd*
...
Instead of one MANUAL_COMMANDS, we now have two deny-lists:
MANUAL_COMMANDS and NO_ENQUEUE_COMMANDS. The former is for things which
have a manually typed implementation in vk_cmd_enqueue.c and the later
is for things we want to ignore entirely. This lets us auto-generate
vk_cmd_enqueue_unless_primary_Cmd* entrypoints for the manually typed
vk_cmd_enqueue_Cmd* entrypoints.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14406 >
2022-03-18 17:29:16 +00:00
Jason Ekstrand
3cffffc441
vulkan/cmd_queue: Generate enqueue_if_not_primary entrypoints
...
These check the command buffer level and enqueue the command if it's not
a primary but uses vk_device::command_dispatch_table for primaries.
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14406 >
2022-03-18 17:29:16 +00:00
Jason Ekstrand
8f29c833da
vulkan/cmd_queue: Add a vk_cmd_queue_execute() helper
...
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14406 >
2022-03-18 17:29:16 +00:00
Jason Ekstrand
25664c6194
vulkan: Add a 2 wrapper for vkGetPhysicalDeviceQueueFamilyProperties
...
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15459 >
2022-03-18 10:10:33 -05:00
Emma Anholt
da834a12cf
vulkan: Make sure we've loaded our connectors when querying plane props.
...
If you hadn't already called wsi_GetPhysicalDeviceDisplayProperties2KHR or
wsi_GetDrmDisplayEXT before calling
GetPhysicalDeviceDisplayPlaneProperties2KHR, then the connectors list
wouldn't be populated and you'd get no plane properties. Fixes failure of
dEQP-VK.wsi.display.get_display_plane_capabilities when run on its own.
Fixes : #4575
Cc: mesa-stable
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15353 >
2022-03-16 21:43:46 +00:00
Jason Ekstrand
030b231ba9
vulkan/framebuffer: Add a flags field
...
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14961 >
2022-03-16 12:51:15 -05:00
Jason Ekstrand
c3d8ca9300
vulkan/render_pass: Add an optimization for UNDEFINED+LOAD_OP_CLEAR
...
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14961 >
2022-03-16 12:51:15 -05:00
Jason Ekstrand
17395d395a
vulkan/render_pass: Support fragment shading rate
...
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14961 >
2022-03-16 12:51:15 -05:00
Jason Ekstrand
6b61953684
vulkan/render_pass: Provide self-dependeny information
...
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14961 >
2022-03-16 12:51:15 -05:00
Jason Ekstrand
ca5ad9cbee
vulkan: Add helpers for getting rendering info from a renderpass
...
These helpers are used by vkCreateGraphicsPipelines to get the
VkPipelineRenderingCreateInfo and in vkCmdBeginCommandBuffer to get the
VkCommandBufferInheritanceRenderingInfo. This is required because the
Vulkan runtime code can't yet hook and modify calls made to driver-
provided functions. Instead, we just provide a helper to be used in leu
of vk_find_struct_const(). The structs themselves are stored in the
render pass so we can pass back a pointer and there's no need to
construct one on the stack or stuff it in the pipeline.
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14961 >
2022-03-16 12:51:15 -05:00
Jason Ekstrand
1d726940d2
vulkan: Add a common CmdBegin/EndRederPass implementation
...
This implements vkCmdBeginRenderPass, vkCmdEndRenderPass, and
vkCmdNextSubpass in terms of the new vkCmdBegin/EndRendering included in
VK_KHR_dynamic_rendering and Vulkan 1.3. All subpass dependencies and
implicit layout transitions are turned into actual barriers. It does
require VK_KHR_synchronization2 because it always uses the 64-bit
version of the pipeline stage and access bitfields.
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14961 >
2022-03-16 12:51:15 -05:00
Jason Ekstrand
874aeb8743
vulkan: Add a common vk_render_pass struct
...
This basically contains everything in pCreateInfo plus one or two extra
bits that might be useful.
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14961 >
2022-03-16 12:51:15 -05:00
Jason Ekstrand
d84e6b8f22
vulkan: Add a common vk_framebuffer struct
...
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14961 >
2022-03-16 12:51:15 -05:00
Jason Ekstrand
21b405fbbc
vulkan: Add a vk_shader_module_to_nir() helper
...
This encapsulates all the little bits needed to turn a shader module
into some mostly reasonable NIR. It handles inlining functions,
lowering variable initializers, handling per-member structs and other
trickiness that is needed for consuming the output of spirv_to_nir.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15305 >
2022-03-15 23:13:16 +00:00
Bas Nieuwenhuizen
6c0bc7eb07
vk: Update xml and headers to 1.3.207.
...
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15363 >
2022-03-15 18:52:41 +00:00
Jason Ekstrand
95a44a5b09
lavapipe: Use the auto-generated vk_enqueue_BeginRendering
...
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15325 >
2022-03-11 11:40:41 -06:00
Jason Ekstrand
f76621f719
vulkan/cmd_queue: Properly support non-array pointer members
...
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5440
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15325 >
2022-03-11 11:36:53 -06:00
Jason Ekstrand
94ea3b9c03
vulkan/cmd_queue: Add a common vk_cmd_enqueue_CmdBindDescriptorSets
...
In order for this to work, the driver must reference-count pipeline
layouts so we can take a reference while the command is in the queue.
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15329 >
2022-03-10 21:08:36 +00:00