Boris Brezillon
cacc3f03e6
microsoft/compiler: Add a dunmmy SV_SampleIndex when needed
...
When per-sample shading is forced and all input variables have a flat
interpolation, DXIL validation detects a mismatch between the
SampleFrequency property and the fact that no variables are per-sample
and SV_SampleIndex is never read. When that happens, add a dummy
SV_SampleIndex.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15916 >
2022-04-19 08:49:50 +00:00
Enrico Galli
0c4d1762de
microsoft/compiler: Fix when using a shadow sampler more than once
...
Reusing the shadow sampler's variable causes problems when the sampler
is used more than once. The remaining `deref_var`s will be using the
wrong type.
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14988 >
2022-04-15 00:19:55 +00:00
Enrico Galli
0e91dd2f3e
microsoft/compiler: Add support for unnamed ubos
...
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/14988 >
2022-04-15 00:19:55 +00:00
Enrico Galli
6073c74bfd
microsoft/compiler: Fix for arrays of 1 element
...
The DXIL validator doesn't like dynamic indexing into resources if the
resource was not declared as an array type. This commit makes it so that
we always generate array resource types if the original type was
declared as an array instead, not just when the number of elements is
greater than 1.
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14988 >
2022-04-15 00:19:55 +00:00
Enrico Galli
0badd0547d
microsoft/spirv_to_dxil: Add pass to lower dynamic accesses on ubo[1]
...
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14988 >
2022-04-15 00:19:55 +00:00
Erik Faye-Lund
193cf76c09
microsoft/compiler: add common dxil-validator API
...
This API is only available on Windows, which is the only OS where DXIL
validation is a requirement, and where DXIL.dll (and dxcompiler.dll) are
available.
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15751 >
2022-04-07 00:00:44 +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
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
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
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
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
Jesse Natalie
1c4667bc9f
microsoft/compiler: Location_frac needs to be included in sort order
...
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
Jesse Natalie
4da51aa88f
microsoft/compiler: Primitive ID should only be added as a sysval in geometry shaders
...
Docs say that its presence in signatures as a "shadow" element (meaning it's not
accessed via load/store, but with a dedicated opcode) is legacy. It seems it
wasn't carried forward when HS/DS were added in D3D11.
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
Jesse Natalie
ec415a274e
microsoft/compiler: Emit DS PSV validation and entrypoint metadata
...
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
Jesse Natalie
9aca56b137
microsoft/compiler: Handle domain location intrinsic
...
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
Jesse Natalie
8524d04783
microsoft/compiler: Handle load_output in the HS stage as reading a previously written patch constant
...
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
Jesse Natalie
a39881b788
microsoft/compiler: Handle load_per_vertex_output as LoadOutputControlPoint
...
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
Jesse Natalie
a550c059c7
microsoft/compiler: For load_input from DS, use loadPatchConstant
...
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
Jesse Natalie
cc6104dd3f
microsoft/compiler: For store_output from HS, use storePatchConstant
...
In HS, store_per_vertex_output maps to storeOutput in DXIL. The data
that isn't per-vertex is patch constants.
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
Jesse Natalie
97b6ea71a0
microsoft/compiler: Add a pass for hull and domain shaders to shrink tess level vars
...
DXIL validation will complain if the tess factor signature entries have the
wrong number of components for the shader's domain. Make sure that both
hull and domain shaders have the right number, and drop loads and stores
from the removed components.
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
Jesse Natalie
bd2a4fb1b8
microsoft/compiler: Add patch constant signature into PSV and as container blob
...
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
Jesse Natalie
26247d506e
microsoft/compiler: Gather patch const signature and handle tess factor in it
...
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
Jesse Natalie
8e42891f69
microsoft/compiler: When sorting patch varyings, adjust location to be in normal varying range
...
This way, patch varyings come before the patch sysvals (tess levels).
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