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
Jesse Natalie
4bb4d0454d
microsoft/compiler: Overlap patch and non-patch varyings so both are separately 0-indexed
...
Also add tess factors to the list of sysvals that can cause vars to be sorted last.
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
b7da3f8647
microsoft/compiler: Fix I/O signatures for tess shaders
...
- Skip patch variables, those go into a separate patch constant signature
- Use nir_is_arrayed_io and only strip one level of array when it's true
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
b346f28453
microsoft/compiler: Emit HS PSV validation and entrypoint metadata
...
Note that this requires the shader info "tess" data to be correct.
For GLSL tess control shaders, only the output primitive count is
automatically available. The rest will need to be either guessed
or filled in from a matching tess eval (domain) shader. This is handled
by the d3d12 driver in a later patch.
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
6c58e1f448
microsoft/compiler: Delete misleading TODO comments about semantic table
...
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Bill Kristiansen <billkris@microsoft.com >
We've been writing a valid semantic table for a while now.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14399 >
2022-01-26 01:31:35 +00:00
Jesse Natalie
f511354a64
microsoft/compiler: Split hull (tess ctrl) shaders into main and patch constant funcs
...
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
ad2233616c
microsoft/compiler: Handle store_per_vertex_output for HS outputs
...
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
41af962099
microsoft/compiler: Emit all NIR functions into the DXIL module
...
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
f6a333f010
microsoft/compiler: Emit functions with actual function names
...
Once we start writing multiple functions, we can't keep calling all
of them "main"
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
72812fe9b5
microsoft/compiler: Support emitting multiple functions into a DXIL module
...
The instruction and block lists are moved into a new "function definition"
struct, and the DXIL module tracks one at a time for adding instructions
into. The NIR side still only emits the main function here though.
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
e5f353f2f2
microsoft/compiler: Emit statically-indexed resource handles and scratch later
...
The resource declarations are module-wide, but the resource handles
are function-local. A future change will add multi-function support,
but requires these handles to be potentially emitted multiple times.
The alloca used for scratch is also function-local.
This is the same pattern that the DXBC to DXIL converter uses.
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
02f46b67cd
microsoft/compiler: Fix typo in enum entry
...
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
b5cb81f8c1
microsoft/compiler: Add mapping from MESA_SHADER_* to DXIL_*_SHADER for tessellation
...
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
8ad0393abe
microsoft/compiler: Getting a builtin function with an undeclared signature should be unreachable
...
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
4ad72b152c
microsoft/compiler: Multi-row output semantics need to write multiple never_writes_masks
...
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
5e3d64d067
microsoft/compiler: Semantic table should be de-duped for multi-row semantics too
...
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
218f8302d2
microsoft/compiler: Use driver_location instead of location for inter-stage varying index in GL
...
In the case of two vars being packed into the same register / location,
they'll still get unique driver_location, which is what we need.
This does require some tweaks to stream output handling, which also needs to
produce the varying index.
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
14ed624ff3
microsoft/compiler: Force integer I/O vars to use flat/constant interpolation
...
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
7f9ac5bba2
d3d12: Support dynamic UBO/SSBO indexing
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
f915bc56a4
microsoft/compiler: Lower helper invocations
...
DXIL adds this in SM6.6, so when we get around to being able to
emit SM6.6, we can conditionally turn this off and support emitting
the new intrinsic. Until then, this is easy.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
1022435845
microsoft/compiler: Handle msb/lsb/bfrev
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
ac94bcf046
microsoft/compiler: Use ibfe/ubfe for bitfield extract instead of lowering to shifts
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
80e782d5ed
microsoft/compiler: Handle bitfield_insert
...
This *almost* matches what GLSL wants, except for the handling of
large widths. You can see this in the lowering algorithm:
(('bitfield_insert', 'base', 'insert', 'offset', 'bits'),
('bcsel', ('ult', 31, 'bits'), 'insert',
('bfi', ('bfm', 'bits', 'offset'), 'insert', 'base')),
'options->lower_bitfield_insert'),
DXIL's 'bfi' instruction is an inseparable pairing of NIR's 'bfi(bfm(...), ...)',
so we just apply the additional bcsel in the backend.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
8938c6e032
microsoft/compiler: Emit samplers as array types
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
7502b08900
microsoft/compiler: Handle load_invocation_id for GS and HS
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
fe6f7b5265
microsoft/compiler: Handle tex texture/sampler offset srcs
...
Note that these offsets are 0-based, so to make them binding IDs we
need to explicitly add the base ID to them.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
7748e4799d
microsoft/compiler: Handle input coverage
...
Note that GL requires input coverage for sample execution mode to
be only the single bit corresponding to the executing sample, so
rearrange things to understand during shader emitting if we're
executing per-sample to emit the right coverage value.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
777a42e309
microsoft/compiler: Handle textureGatherCmp
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
30a44e4c3d
microsoft/compiler: Handle 'pull model' explicit interpolation intrinsics
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
5b51842b58
microsoft/compiler: Always have at least one GS active stream
...
DXIL validation will fail if there's no stream that has a valid
primitive topology, which is what happens in the case of no
active streams.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
a8373ca8de
microsoft/compiler: Handle load_sample_pos_at_id
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
852e243cae
microsoft/compiler: Handle variables declared per-sample
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624 >
2022-01-21 23:08:26 +00:00
Jesse Natalie
413f398cff
ci/windows: Use 2 container stages
...
The first container stage ("build") is for dependencies of the build.
These are infrequently-changing things like Visual Studio, LLVM, git,
and also meson. The second container stage ("test") currently depends
on the first, and adds test dependencies like piglit.
This lets us rev piglit without having to rebuild LLVM.
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14637 >
2022-01-21 22:38:16 +00:00
Dave Airlie
1352e0ba0c
mesa/*: add a shader primitive type to get away from GL types.
...
This creates an internal shader_prim enum, I've fixed up most
users to use it instead of GL types.
don't store the enum in shader_info as it changes size, and confuses
other things.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14605 >
2022-01-19 21:54:58 +00:00
Marcin Ślusarz
f547122772
microsoft/compiler: normalize line endings
...
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11779 >
2022-01-19 15:17:17 +00:00