Jesse Natalie
4d48fc6fe5
dzn: Use mesa_loge for DXIL validation errors
...
This allows them to be printed to OutputDebugString
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
7750e23c7f
dzn: Enable variable size bindings
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
19818ecc37
dzn: Support descriptor indexing via bindless
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
c93dda6bee
dzn: Add a debug option for enabling bindless mode
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
ebc8a86df1
dzn: Apply bindless lowering when compiling pipelines
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
35a789dbb7
dzn: Only bind descriptor sets up to the used amount of the current layout
...
Prevents setting a root SRV into a slot that's not declared as an SRV
in the root signature if a set is bound into a higher slot from a previous
draw/dispatch op.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
a227ef2983
dzn: Ensure root signatures are re-bound after a meta op
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
7edff267cc
dzn: When binding a bindless root signature, bind descriptor heaps first
...
The D3D spec says it must be so, and not doing this causes problems
on some hardware.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
8d52a480fe
dzn: Add a binding classification in the pipeline layout remapping
...
This is needed so that we can handle two special cases:
* Dynamic buffer data is allocated out of a command-buffer-owned buffer,
rather than a descriptor-set-owned buffer, so the remapping puts them
in their own register space.
* Static samplers should be left alone and not converted to bindless.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
8bd5fbf8ed
dzn: Bind buffers for bindless descriptor sets
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
5f61e66024
dzn: Use separate dirty bits for descriptor sets/dynamic buffers
...
We'll be able to take advantage of this granularity in bindless mode
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
1846426195
dzn: Don't dirty bindings if root signature doesn't change
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
5d2b4ee4f4
dzn: Allocate descriptor sets in buffers for bindless mode
...
Modify the root signature stored in the pipeline layout too.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
a1881bc7ee
dzn: Delete unused function
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
ac0b0731ea
dzn: Remove defragmenting of descriptor pools
...
Rather than trying to perfectly defrag, let's just allow re-use.
When a set is allocated for the first time, it locks in its range of
the heap that it'll use. If the last set in the heap is used, then
those descriptors go back to being free, but if a set in the middle
of the heap is freed, those descriptors remain assigned to that set.
A later allocation attempt can reclaim them, as long as the new set
fits.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
079f3deafb
dzn: When bindless, only allocate one descriptor per layout entry
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
4c4431b674
dzn: Add initial bindless infrastructure
...
When operating in "bindless" mode, the device will own 2 descriptor
heaps, one for views, and one for samplers. Every time a view is
created (image view, buffer view), a slot is allocated for it out
of the device view heap for each usage type (sampled vs storage).
Then, in a future change, descriptor sets will just contain view/
sampler indices instead of actual descriptors. Instead of copying
these to a cmdbuf-owned descriptor heap, we can directly bind the
descriptor set as a buffer. We'll also modify shaders to perform
an indirection and index into the device heap.
Buffers also get views set up on creation. In a perfect world, we
could just put addresses/sizes in the descriptor set, but DXIL
doesn't support loading from addresses, we need descriptors. When
robust buffer access is disabled *or* descriptor set buffer views
reference the remainder of the buffer, we can just re-use a view
from the buffer and use an offset.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
f977c10f3c
dzn: Skip setting up UAVs for depth resources
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
60b3637e76
dzn: Set up SRV descs for 3D textures correctly
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
0bf1a43601
dzn: Don't use plane slice 1 for depth+stencil SRVs
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:44 +00:00
Jesse Natalie
442d456b28
dzn: Consistently order depth formats before stencil
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
4c5100f94a
dzn: Put UAVs first for storage images/buffers in descriptor tables
...
When running in a bindless mode, we won't ever be using SRVs for these.
Change terminology for determining descriptor offsets from "writable"
to "alt" to match naming already used elsewhere.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
8887852d20
dzn: Add some docs around descriptor sets and remove redundant/unused data
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
492d61cfbb
dzn: Fix a leak in descriptor set layout creation
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
3f2e13eaf8
dzn: Remove descriptor heap type from descriptor heap wrapper
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
599abf5b1a
dzn: Remove device pointers from descriptor heaps
...
A future change is going to add descriptor heaps *to* the dzn_device,
and having 3x ID3D12Device pointers in a single object just seems
wrong. All of the callers already had a device, so just pass it
along where needed.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
79ef6e4e8f
spirv2dxil: Support descriptor indexing capabilities
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
e0a090adfd
spirv2dxil: Only lower readonly images to SRVs when the option is set
...
This handles the case where readonly is explicitly marked in the shader,
rather than just inferred based on opt_access.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
b125575f95
spirv2dxil: Add a pass to lower deref tex/image and vulkan ubo/ssbo to bindless
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
4f31d1a7e0
microsoft/compiler: Update header docs for binding modes supported by compiler
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
4fc7d2480a
microsoft/compiler: Use store_dest instead of store_dest_value more
...
The 16bit SSBO load support missed setting the 16bit shader flag.
Make it harder to miss that by only using store_dest_value for things
that don't have a type.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
ce004e6391
microsoft/compiler: Support descriptor heap indexing for UBO/SSBO
...
Treat load_vulkan_descriptor on an input that didn't come from
vulkan_resource_index as a descriptor heap index instead of a
binding index.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
88e4edeb2b
microsoft/compiler: Handle "bindless" image/tex sources as heap indices
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
068f1ada9a
microsoft/compiler: Split handle annotation into two parts
...
The first part gets the resource props struct, and the second
actually emits the annotate instruction. Later changes will
get the resource props struct from different sources.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
6220fb454f
microsoft/compiler: Add helpers for getting res_props structs
...
Currently we can get one by looking up already-emitted resource
metadata, but in the future we'll want to be able to get this
info from a call site alone. Depending on the type of call site,
we'll have different sets of info, so add helpers for the
various different kinds of call sites we can support.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
abc2412ccc
microsoft/compiler: Refactor type -> resource kind helper
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
a838f095ef
microsoft/compiler: Only set typed UAV load feature bit for multi-comp loads
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
273a7cf0e2
microsoft/compiler: Fix setting bit 31 in feature flags
...
Fixes: a84208ee ("microsoft/compiler: Fill out and sort the shader/module flags")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913 >
2023-03-23 21:48:43 +00:00
Jesse Natalie
78fc1197eb
microsoft/compiler: Handle writable buffer UAV size queries
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22093 >
2023-03-23 18:34:52 +00:00
Jesse Natalie
24d5bdbb6e
ci/windows: Update warp to 1.0.5
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22034 >
2023-03-23 07:07:29 +00:00
Jesse Natalie
3ce2b71193
dzn: Claim the arithmetic subgroup bit
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21996 >
2023-03-18 02:33:42 +00:00
Jesse Natalie
b4de74165d
spirv2dxil: Handle arithmetic subgroup ops
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21996 >
2023-03-18 02:33:42 +00:00
Jesse Natalie
ccc9540dae
microsoft/compiler: Add a lowering pass for scan ops that aren't supported
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21996 >
2023-03-18 02:33:42 +00:00
Jesse Natalie
981fe2bf42
microsoft/compiler: Implement wave reduce/exclusive scan ops that are supported
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21996 >
2023-03-18 02:33:42 +00:00
Eric Engestrom
f5d3d1e7ed
meson: inline gtest_test_protocol now that it's always 'gtest'
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21485 >
2023-03-10 07:20:29 +00:00
Caio Oliveira
e411e0afd3
microsoft/compiler: Handle scoped barrier in Tess splitting
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3339 >
2023-02-27 20:24:01 +00:00
Mike Blumenkrantz
7c8a5f6e37
vulkan/wsi: switch to using an options struct for last param
...
this makes adding values easier since the drivers won't need to be updated
Acked-by: Daniel Stone <daniels@collabora.com >
Reviewed-by: Gert Wollny <gert.wollny@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21447 >
2023-02-27 13:21:21 +00:00
Faith Ekstrand
96c832c47e
spirv: Always emit deref_buffer_array_length intrinsics
...
All the drivers have been converted to setting this option now except
imagination and they don't support SSBOs yet.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3993
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21446 >
2023-02-24 20:37:10 +00:00
Eric Engestrom
fbd644c59d
meson: replace vk_wsi_args with dependencies to let meson take care of transitivity
...
Signed-off-by: Eric Engestrom <eric@igalia.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Reviewed-by: Yonggang Luo <luoyonggang@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19497 >
2023-02-23 09:42:46 +00:00
Daniel Schürmann
2bb369dd8d
nir: add assertions that loops don't have a Continue Construct
...
Hoping that I didn't miss any, this *should* add assertions
to all functions and passes which explicitly handle 'nir_loop'.
Acked-by: Faith Ekstrand <faith.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13962 >
2023-02-21 10:41:11 +00:00