Erik Faye-Lund
a012b21964
microsoft: Initial vulkan-on-12 driver
...
This is Dozen, the Vulkan on DirectX 12 driver. Not to be confused with
DirectEggs.
This is an early prototype, and not meant to be upstreamed as-is.
Co-Authored-by: Boris Brezillon <boris.brezillon@collabora.com >
Co-Authored-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Co-Authored-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com >
Co-Authored-by: Jesse Natalie <jenatali@microsoft.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Acked-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
Enrico Galli
6635d011cb
microsoft/spirv_to_dxil: Add missing ralloc_free
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Acked-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
04d812b2d0
Revert "ci: Disable windows-vs2019"
...
This reverts commit 04b80489d5 .
Acked-by: Daniel Stone <daniels@collabora.com >
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Acked-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15518 >
2022-03-24 09:11:13 +00:00
Erik Faye-Lund
f7e92c8869
microsoft/compiler: remove phi-value limit
...
There's no guarantee that we don't have more than 128 PHI values either,
so let's stop asuming so.
We do this by changing dxil_phi_set_incoming to dxil_phi_add_incoming,
which lets us add more incoming phi-values to the current one instead of
setting a new set of them.
This also lets us reduce these stack-arrays a bit, down to something
much more reasonable.
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15519 >
2022-03-23 16:33:21 +00:00
Erik Faye-Lund
d752c4bc7c
microsoft/compiler: ralloc incoming phi-values
...
Reserving 127 incoming values for every phi instruction is neither
robust nor memory efficient.
Let's ralloc this array instead when filling it. This way, we only pay
for what we use here.
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15519 >
2022-03-23 16:33:21 +00:00
Alyssa Rosenzweig
04b80489d5
ci: Disable windows-vs2019
...
Currently down.
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15148 >
2022-02-23 15:12:41 +00:00
Ian Romanick
a01b262990
nir: Add missing dependency on nir_opcodes.py
...
Commit 38800b38 changed nir_opcodes.py, but that doesn't seem to have
triggered nir_opt_algebraic.py. The change in 75ef5991 depends on
opt_algebraic lowering 16-bit versions of slt, but if opt_algebraic is
not rebuilt, this may not happen. This resulted in some people seeing
assertion failures in, for example,
dEQP-VK.spirv_assembly.instruction.compute.float16.arithmetic_3.step,
due to the backend seeing nir_op_slt that it didn't know how to handle.
v2: Add nir_opcodes.py to nir_algebraic_py so that all the per-driver
algebraic passes pick up the dependency too. Rename it to
nir_algebraic_depends. Suggested by Emma.
Closes : #6047
Fixes: d1992255bb ("meson: Add build Intel "anv" vulkan driver")
Reviewed-by: Emma Anholt <emma@anholt.net >
Acked-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15050 >
2022-02-17 22:57:33 +00:00
Jesse Natalie
31e2c3f550
microsoft/compiler: Fill interpolation for sysval inputs to non-vertex shader
...
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5483
Reviewed-by: Michael Tang <tangm@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14984 >
2022-02-11 00:19:17 +00:00
Daniel Stone
7a0ace7d4e
Revert "ci: Disable Windows for now"
...
This reverts commit be385ab5bc .
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14975 >
2022-02-10 16:44:16 +00:00
Daniel Stone
be385ab5bc
ci: Disable Windows for now
...
Docker on Windows is broken for some reason, so just disable it for now.
Signed-off-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14970 >
2022-02-10 12:51:06 +00:00
Jesse Natalie
918647000f
microsoft/compiler: Set flag for VP/RT array index from VS/DS
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14881 >
2022-02-04 20:49:23 +00:00
Jesse Natalie
5954c8e524
microsoft/compiler: Handle SV_ViewportArrayIndex
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14881 >
2022-02-04 20:49:23 +00:00
Jesse Natalie
0044e80b82
microsoft/compiler: Handle structs in I/O signatures
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
eb0cefae6d
microsoft/compiler: Map I/O base locations to input IDs
...
When dealing with a vertex input that takes multiple rows, the value of
nir_intrinsic_base points to a driver-location-based index, but we need
to emit a location-based index (or more specifically, an index that
increments once per input, not once per register). Add a mapping to
the module of base -> ID.
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
efe5c2d6f3
microsoft/compiler: Process signatures before the shader code
...
This lets us set up some metadata based on I/O vars without having
to do multiple passes over them.
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
c154d403d3
microsoft/compiler: Handle I/O vars larger than a vec4
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
cdc49fb605
microsoft/compiler: Lower 64bit I/O to 32 and then run lower_pack
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
b24cfd0d40
microsoft/compiler: Handle b2f64
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
4d17393ba0
microsoft/compiler: Set dx11_1_double_extensions flag for dfma/ddiv
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
4c8935d325
microsoft/compiler: Fix dxil_nir_lower_double_math_instr pass for vectors
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
c8bd830dfb
microsoft/compiler: Fix make_double and split_double to respect swizzles
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
92191349e9
microsoft/compiler: Fix splitdouble struct name
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
dde3b04d44
microsoft/compiler: It's possible to have doubles without int64
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
3b9483e89d
microsoft/compiler: Add never-supported double ops to lower_doubles bitmask
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
ce6dbbabf9
microsoft/compiler: Only treat tess level location as special if it's a patch constant
...
Fixes: a550c059 ("microsoft/compiler: For load_input from DS, use loadPatchConstant")
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
0c711dc823
microsoft/compiler: Only prep phis for the current function
...
Fixes: 41af9620 ("microsoft/compiler: Emit all NIR functions into the DXIL module")
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
87d22c2465
microsoft/compiler: Lower mul_2x32_64
...
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Reviewed-By: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14837 >
2022-02-04 00:07:53 +00:00
Jesse Natalie
36add3d002
microsoft/compiler: Support multiple GS output streams
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:34:27 -08:00
Jesse Natalie
895cdbd6f0
microsoft/compiler: Correctly support I/O on variables with location_frac
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:34:27 -08:00
Jesse Natalie
1d43e75228
d3d12: Add UAV barriers for UAVs that are being used by compute transforms
...
If an indirect arg buffer is being produced by a compute shader, then when
we go to consume it as an SSBO in a compute transform pass, we need to insert
a UAV barrier to prevent the two dispatches from overlapping. For app dispatches,
this is the app's responsibility via explicit barrier APIs, and if they don't,
then they're allowed to overlap.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:13:33 -08:00
Jesse Natalie
2d4ee41df0
microsoft/compiler: Fix UAV resource ID counting for static indexed handles
...
Skip resource space 2 after computing the ID it would've used.
Fixes: e5f353f2 ("microsoft/compiler: Emit statically-indexed resource handles and scratch later")
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:13:12 -08:00
Boris Brezillon
11e2c4b502
microsoft/spirv_to_dxil: Define idep_libspirv_to_dxil
...
So we can re-use it when we need to define a dependency on spirv_to_dxil.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
ef47a6800b
microsoft/spirv_to_dxil: Make sure the SampleMask is a uint
...
DXIL doesn't like when SV_Coverage (AKA SampleMask in DXIL) is a
signed integer. Fix the type while we're in the NIR domain.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
7e56d8c393
microsoft/spirv_to_dxil: Lower atomics to their dxil variants
...
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
c2eeba04c3
microsoft/spirv_to_dxil: Discard PSIZ accesses
...
D3D12 doesn't support gl_PointSize, so let's consider PointSize is
always 1.0 and discard any PointSize access.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Louis-Francis Ratté-Boulianne
5cd2bf837d
microsoft/spirv_to_dxil: Allow passing a vulkan -> d3d12 binding mapping table
...
Vulkan bindings take only one slot per variable, but d3d12 ones take one
slot per entry when the variable is an array. This forces us to pass
an explicit vulkan -> d3d12 mapping table when dealing with vulkan
shaders.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Louis-Francis Ratté-Boulianne
de1e941c59
microsoft/spirv_to_dxil: Lower push constant loads to UBO loads
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Louis-Francis Ratté-Boulianne
d11a417ded
microsoft/spirv_to_dxil: lower input attachments
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Louis-Francis Ratté-Boulianne
e65303c6e6
microsoft/spirv_to_dxil: check for variables r/w access
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
39592f8ad4
microsoft/spirv_to_dxil: Support [un]conditional YZ-flip
...
The unconditional Y-flip is needed for Vulkan 1.0 since D3D12 and
Vulkan coordinate systems differ. Conditional YZ-flip is needed if
we want to support negative viewport height/depth.
Prepare spirv_to_dxil() to support that, and while at it, prepare
things for multi-viewport: the Y/Z flips are per-viewport and encoded
in a 32bit bitmask, with the upper 16bits reserved for Z flips, and the
lower 16bits reserved for Y flips.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
225867684a
microsoft/spirv_to_dxil: Allow dumping NIR
...
Dumping NIR shaders is a useful debug feature. Let's tweak the
spirv_to_nir() helper so we can pass debugging options and
add one to allow dumping NIR.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
27790c4a7a
microsoft/spirv_to_dxil: Remove dead variables after the struct split pass
...
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
a4c8508c37
microsoft/compiler: textureLoad() doesn't take a LOD on MS textures
...
Make sure the LOD is zero in that case.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13993 >
2022-01-31 16:37:47 +00:00
Boris Brezillon
951fd35012
microsoft/compiler: Skip images in redirect_texture_derefs()
...
The input attachment lowering pass turns input attachment loads into
texel fetch operation, and insert an image -> texture deref cast along
the way. In this situation, we can end up with a texture deref chain
pointing to an image variable, which is not a combined sampler+texture
object. Bail out when an image type is found, like we do for bare
textures.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Acked-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13993 >
2022-01-31 16:37:47 +00:00
Boris Brezillon
678b94c2d8
microsoft/compiler: Fix sampler/texture array emission
...
Those need to be declared as sampler/SRV arrays, as we do for UAVs and
CBVs.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13993 >
2022-01-31 16:37:47 +00:00
Louis-Francis Ratté-Boulianne
54c32aeba6
microsoft/compiler: Use SRVs for read-only images
...
Acked-by: Enrico Galli <enrico.galli@intel.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13993 >
2022-01-31 16:37:47 +00:00
Louis-Francis Ratté-Boulianne
8507afbd06
microsoft/compiler: Add subpass input types
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13993 >
2022-01-31 16:37:47 +00:00
Louis-Francis Ratté-Boulianne
ef5283d37d
microsoft/compiler: add support for load_layer_id
...
We simply return 0 for now as we don't support multi-view yet.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13993 >
2022-01-31 16:37:47 +00:00
Thomas H.P. Andersen
37989670b9
microsoft/compiler: fix -Wbitwise-instead-of-logical warning
...
Replace the bitwise operation with a more explicit do-while
loop. This fixes a warning with clang, and ensures that
nir_opt_dead_cf and nir_opt_dce are called in the right
order.
Suggested-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14742 >
2022-01-30 05:05:38 +00:00
Jesse Natalie
973bff335f
microsoft/compiler: Handle clip/cull distance as an input to tess shaders
...
In order to get the semantics right, we need to know how many of the clip/
cull fields are designated for which purpose. In the case of a shader that
can receive these fields as both input and output, the shader_info property
is reserved to store the output info. We could add a dedicated input field
to shader_info, but since it'd probably only be useful for us, just send
it through a side channel during shader linking.
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14399 >
2022-01-26 01:31:35 +00:00