Jason Ekstrand
9c2a11430e
spirv: Rewrite CFG construction
...
This commit completely rewrites the way we extract a structured CFG from
SPIR-V. The new approach is different in a few ways:
1. It does a breadth-first search instead of depth-first. This means
that we've visited the merge node for a construct before we visit
any of the nodes inside the construct. This makes it easier to
validate things like loop and switch nesting.
2. We record more information in the CFG. Earlier commits added a
parent pointer to vtn_cf_node but we now record all of the merge and
other special blocks for each CFG node. This lets us validate
things more precisely.
3. It makes heavy use of merge blocks for walking the CFG. Previously,
we sort of used them as hints for trying to guess the CFG structure
but things got dicey whenever a merge was missing. We had some
heuristics for how to handle short-circuiting if statements but it
was a bunch of special cases.
Now, we make them a fundamental part of walking the CFG. When we
encounter a control-flow construct, we add the body components of
the construct to the BFS work list and then jump to the merge block
if one exists to continue scanning the current CFG nesting level.
If no merge block exists, we assume that means that control-flow
never re-converges in a normal way and that the only way to get back
to normality is with a direct jump such as a loop break or continue.
This should make things far more robust when trying to deal with the
more creative placement (or lack thereof) of merge instructions.
Reviewed-by: Alan Baker <alanbaker@google.com >
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820 >
Closes : #2760
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4446 >
2020-04-24 16:29:24 +00:00
Jason Ekstrand
bc5c438289
spirv: Fix passing combined image/samplers through function calls
...
Fixes dEQP-VK.spirv_assembly.instruction.function_params.sampler_param
cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4684 >
2020-04-24 09:43:21 +00:00
Jason Ekstrand
f4addfdde3
spirv: Use nir_const_value for spec constants
...
When we originally wrote spirv_to_nir we didn't have a good scalar value
union to handily use so we rolled our own thing for spec constants. Now
that we have nir_const_value, we can use that and simplify a bunch of
the spec constant logic.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4675 >
2020-04-24 09:23:59 +00:00
Jason Ekstrand
64e4297629
spirv: Allow constants and NULLs in SpvOpConvertUToPtr
...
We were accidentally asserting that the value had to be a vtn_ssa_value
which isn't true if it, for instance, comes from a spec constant.
Fixes: fb282a68bc "spirv: Implement OpConvertPtrToU and OpConvertUToPtr"
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4675 >
2020-04-24 09:23:59 +00:00
Caio Marcelo de Oliveira Filho
7ee9f851e2
spirv: Update the headers from latest Khronos master
...
This corresponds to 2ad0492fb00919d99500f1da74abf5ad3c870e4e ("Discuss
generator magic number reservations.") in
https://github.com/KhronosGroup/SPIRV-Headers .
Acked-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4682 >
2020-04-24 05:56:05 +00:00
Caio Marcelo de Oliveira Filho
5620c3efd8
spirv: Handle instruction aliases in vtn_gather_types
...
Same solution as done in spirv_info generation.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4682 >
2020-04-24 05:56:05 +00:00
Danylo Piliaiev
66229aa169
spirv: Expand workaround for OpControlBarrier on old GLSLang
...
In SPIRV of compute shader in Aztec Ruins benchmark there is:
OpControlBarrier %uint_1 %uint_1 %uint_0
// ControlBarrier(Device, Device, rdcspv::MemorySemantics(0));
which is an incorrect translation of glsl barrier().
GLSLang, prior to c3f1cdfa, emitted the OpControlBarrier with
Device instead of Workgroup for execution scope.
2365520c covers similar case but isn't applied when execution_scope
is SpvScopeDevice.
Cc: <mesa-stable@lists.freedesktop.org >
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2742
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com >
Tested-by: Rafael Antognolli <rafael.antognolli@intel.com >
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4660 >
2020-04-22 08:46:12 +00:00
Caio Marcelo de Oliveira Filho
a1f6ae4744
spirv: Fix propagation of OpVariable access flags
...
After the decorations of a variable are evaluated, propagate the
access flag to the associated vtn_pointer. This was done when
creating the pointer but at that point there was no access flags for
the variable.
Inline the pointer creation to make this point clearer, in isolation
the helper made the impression that the value was being propagated.
Issue found by Ken.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org >
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4620 >
2020-04-20 16:46:06 +00:00
Jason Ekstrand
f5deed138a
spirv,nir: Move the SPIR-V vector insert code to NIR
...
This also makes spirv_to_nir a bit simpler because the new
nir_vector_insert helper automatically handles a constant component
selector like nir_vector_extract does.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4495 >
2020-04-17 19:21:44 +00:00
Jason Ekstrand
feca439697
spirv: Call nir_builder directly for vector_extract
...
The nir_builder helper already handles checking if the component
selector is an immediate and returns an undef in the OOB case.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4495 >
2020-04-17 19:21:44 +00:00
Jason Ekstrand
4b160c6776
spirv: Error if OpCompositeInsert/Extract has OOB indices
...
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4495 >
2020-04-17 19:21:44 +00:00
Jason Ekstrand
c478f8ad6c
spirv,nir: Add a better vector_insert
...
The old one in spirv_to_nir was besel'ing the whole vector for every
component. If we think about this as a vector operation, we can do it
way more efficiently.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4495 >
2020-04-17 19:21:44 +00:00
Jason Ekstrand
380bf556bf
spirv: Handle OOB vector extract operations
...
We use vtn_vector_extract to handle vector component level derefs. This
makes us gracefully handle the case where your vector component is OOB
and give you an undef. The SPIR-V working group is still working out
whether or not this is technically legal but it's very little code for
us to handle it so we may as well.
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4495 >
2020-04-17 19:21:44 +00:00
Jason Ekstrand
a0a4df7e4f
Revert "spirv: Rewrite CFG construction"
...
This reverts commit fa5a36dbd4 .
2020-04-04 09:47:00 -05:00
Jason Ekstrand
fa5a36dbd4
spirv: Rewrite CFG construction
...
This commit completely rewrites the way we extract a structured CFG from
SPIR-V. The new approach is different in a few ways:
1. It does a breadth-first search instead of depth-first. This means
that we've visited the merge node for a construct before we visit
any of the nodes inside the construct. This makes it easier to
validate things like loop and switch nesting.
2. We record more information in the CFG. Earlier commits added a
parent pointer to vtn_cf_node but we now record all of the merge and
other special blocks for each CFG node. This lets us validate
things more precisely.
3. It makes heavy use of merge blocks for walking the CFG. Previously,
we sort of used them as hints for trying to guess the CFG structure
but things got dicey whenever a merge was missing. We had some
heuristics for how to handle short-circuiting if statements but it
was a bunch of special cases.
Now, we make them a fundamental part of walking the CFG. When we
encounter a control-flow construct, we add the body components of
the construct to the BFS work list and then jump to the merge block
if one exists to continue scanning the current CFG nesting level.
If no merge block exists, we assume that means that control-flow
never re-converges in a normal way and that the only way to get back
to normality is with a direct jump such as a loop break or continue.
This should make things far more robust when trying to deal with the
more creative placement (or lack thereof) of merge instructions.
Reviewed-by: Alan Baker <alanbaker@google.com >
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820 >
2020-04-03 20:54:00 +00:00
Jason Ekstrand
2de5a41595
spirv: Add a parent field to vtn_cf_node
...
This makes it easier to crawl up the CF tree when trying to validate the
incoming SPIR-V control-flow.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820 >
2020-04-03 20:54:00 +00:00
Jason Ekstrand
d94e464a9f
spirv: Make vtn_function a vtn_cf_node
...
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820 >
2020-04-03 20:54:00 +00:00
Jason Ekstrand
255aacbec1
spirv: Make vtn_case a vtn_cf_node
...
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820 >
2020-04-03 20:54:00 +00:00
Jason Ekstrand
9d7fcf1de0
spirv: Add cast and loop helpers for vtn_cf_node
...
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820 >
2020-04-03 20:54:00 +00:00
Jason Ekstrand
8c5c65d0d6
spirv: Add a vtn_block() helper
...
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820 >
2020-04-03 20:54:00 +00:00
Jason Ekstrand
68f325b256
Revert "spirv: Implement OpCopyObject and OpCopyLogical as blind copies"
...
This reverts commit 7a53e67816 .
2020-04-01 12:40:34 -05:00
Jason Ekstrand
7a53e67816
spirv: Implement OpCopyObject and OpCopyLogical as blind copies
...
Because the types etc. are required to logically match, we can just
copy-propagate the guts of the vtn_value. This was causing issues with
some new CTS tests that are doing an OpCopyObject of a sampler which is
a special-cased type in spirv_to_nir. Of course, this is only a partial
solution. Ideally, we've got a bit of work to do to make all the
composite stuff able to handle all types including images, sampler, and
combined image/samplers but this gets some CTS tests passing.
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com >
Acked-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4375 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4375 >
2020-03-31 17:55:30 +00:00
Boris Brezillon
efdce97e4b
vtn/opencl: add rint-support
...
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4318 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4318 >
2020-03-26 10:14:22 +00:00
Erik Faye-Lund
6d69ed88f8
vtn/opencl: add native exp2/log2-support
...
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4318 >
2020-03-26 10:14:22 +00:00
Erik Faye-Lund
7b2bfb6bc4
vtn/opencl: add native exp10/log10-support
...
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4318 >
2020-03-26 10:14:22 +00:00
Erik Faye-Lund
25cb87bcdd
vtn/opencl: add native exp/log-support
...
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4318 >
2020-03-26 10:14:22 +00:00
Erik Faye-Lund
c98e745e78
compiler/nir: move build_log helper into builtin-builder
...
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4318 >
2020-03-26 10:14:22 +00:00
Erik Faye-Lund
f59ae68838
compiler/nir: move build_exp helper into builtin-builder
...
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4318 >
2020-03-26 10:14:22 +00:00
Erik Faye-Lund
4821ec6d8f
vtn/opencl: fully enable OpenCLstd_Clz
...
Fixes: 7325f6ac98 ("vtn/opencl: add clz support")
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4318 >
2020-03-26 10:14:22 +00:00
Kristian H. Kristensen
9f9432d56c
Revert "spirv: Use a simpler and more correct implementaiton of tanh()"
...
This reverts commit da1c49171d .
The reduced formula has precision problems on fp16 around 0. Bring
back the old formula, but make sure to keep the clamping.
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4054 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4054 >
2020-03-05 15:23:31 +00:00
Rhys Perry
8b361df9cf
spirv: fix memory_barrier_tcs_patch emission
...
Shouldn't affect any driver, since all currently implement
memory_barrier_tcs_patch as a no-op. It also looks like optimizations are
fine
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4003 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4003 >
2020-03-03 11:49:40 +00:00
Rhys Perry
6d839addf9
spirv: improve creation of memory_barrier
...
It shouldn't check for atomic counters or return in case we also need to
create a TCS output barrier.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4003 >
2020-03-03 11:49:40 +00:00
Marek Olšák
6d7b076166
nir: fix 5 warnings
...
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3970 >
2020-02-27 22:53:12 -05:00
Caio Marcelo de Oliveira Filho
956e4b2d37
nir, intel: Move use_scoped_memory_barrier to nir_options
...
This option will be used later by GLSL, so move to a common struct.
Because nir_options is filled in the compiler instead of the Vulkan
driver, fix that up. GLSL will ignore that for now.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3913 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3913 >
2020-02-24 19:12:11 +00:00
Eric Anholt
d37c6ebd3c
spirv_to_nir: Reuse glsl_sampler_dim_coordinate_components().
...
We just needed to move the SUBPASS_MS case in, and the rest of the cases
match up.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3728 >
2020-02-24 18:25:02 +00:00
Caio Marcelo de Oliveira Filho
f58b384fbe
spirv: Be consistent when checking for Shader/Kernel
...
Use == and != instead of the ordered comparisons.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3911 >
2020-02-21 13:09:44 -08:00
Arcady Goldmints-Orlov
5f3cbbd958
spirv: Remove outdated SPIR-V decoration warnings
...
spirv_to_nir warns if it encounters XFB decorations and errors if
it encounters a Stream decoration with value other than 0, despite
the fact that these decorations are in fact handled correctly.
Fixes dEQP-VK.transform_feedback.simple.query_1_*
Fixes: cd4a14be06 "spirv: Handle XFB variable decorations"
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3910 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3910 >
2020-02-21 20:34:03 +00:00
Elie Tournier
efda2cfcf9
spirv2nir: Add kernel spirv support
...
Signed-off-by: Elie Tournier <elie.tournier@collabora.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3678 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3678 >
2020-02-14 11:14:58 +00:00
Elie Tournier
eeb6d61128
spirv2nir: print nir shader if translation succed
...
Signed-off-by: Elie Tournier <elie.tournier@collabora.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3678 >
2020-02-14 11:14:58 +00:00
Arcady Goldmints-Orlov
e9f83185a2
Rename nir_lower_constant_initializers to nir_lower_variable_initalizers
...
This is naming is more clear as nir_variables can be initializes not
just with a nir_constant but with a pointer to another nir_variable.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3047 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3047 >
2020-02-12 15:41:49 +00:00
Arcady Goldmints-Orlov
e459c7f0a1
compiler/spirv: Add support for non-constant initializers
...
This adds support for OpVariable having an initializer that points to
another variable, rather than a constant. In this case, the variable is
initialized to a pointer to the other variable.
Fixes Vulkan CTS tests:
dEQP-VK.spirv_assembly.instruction.compute.variable_init.private.*
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3047 >
2020-02-12 15:41:49 +00:00
Eric Anholt
8d07d66180
glsl,nir: Switch the enum representing shader image formats to PIPE_FORMAT.
...
This means you can directly use format utils on it without having to have
your own GL enum to number-of-components switch statement (or whatever) in
your vulkan backend.
Thanks to imirkin for fixing up the nouveau driver (and a couple of core
details).
This fixes the computed qualifiers for EXT_shader_image_load_store's
non-integer sizeNxM qualifiers, which we don't have tests for.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com > (v3d)
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3355 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3355 >
2020-02-05 10:31:14 -08:00
Kristian H. Kristensen
0bc516fceb
spirv/opencl: Cast opcode up front to avoid warnings
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3686 >
2020-02-04 06:03:52 +00:00
Samuel Pitoiset
531a26d5aa
spirv: implement SPV_AMD_shader_explicit_vertex_parameter
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3578 >
2020-01-29 09:49:50 +00:00
Samuel Pitoiset
df8dd12e5b
spirv: add support for SpvBuiltInBaryCoord*
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3578 >
2020-01-29 09:49:50 +00:00
Samuel Pitoiset
5c053cc6ec
spirv: add support for SpvDecorationExplicitInterpAMD
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3578 >
2020-01-29 09:49:50 +00:00
Samuel Pitoiset
76a34f5d3f
spirv: add support for SpvOpFragment{Mask}FetchAMD operations
...
nir_tex_src_ms_index is re-used for the fragment index with
nir_texop_fragment_fetch to avoid introducing a new texture source type.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3304 >
2020-01-23 10:48:02 +00:00
Samuel Pitoiset
dea29b3818
spirv: add SpvCapabilityFragmentMaskAMD
...
This new capability is for SPV_AMD_shader_fragment_mask.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3304 >
2020-01-23 10:48:02 +00:00
Ian Romanick
4fcddb55f2
spirv: Add support for IntegerFunctions2INTEL capability
...
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/767 >
2020-01-23 00:18:57 +00:00
Ian Romanick
aa56934e2a
spirv: Silence a bunch of unused parameter warnings
...
The change to get_uniform_nir_atomic_op make it look like the other
get_*_nir_atomic_op functions. The rest just add UNUSED or ASSERTED
to parameters required for some of the interfaces.
src/compiler/spirv/spirv_to_nir.c: In function ‘struct_member_decoration_cb’:
src/compiler/spirv/spirv_to_nir.c:673:47: warning: unused parameter ‘val’ [-Wunused-parameter]
struct vtn_value *val, int member,
^~~
src/compiler/spirv/spirv_to_nir.c: In function ‘struct_member_matrix_stride_cb’:
src/compiler/spirv/spirv_to_nir.c:778:50: warning: unused parameter ‘val’ [-Wunused-parameter]
struct vtn_value *val, int member,
^~~
src/compiler/spirv/spirv_to_nir.c: In function ‘type_decoration_cb’:
src/compiler/spirv/spirv_to_nir.c:805:61: warning: unused parameter ‘ctx’ [-Wunused-parameter]
const struct vtn_decoration *dec, void *ctx)
^~~
src/compiler/spirv/spirv_to_nir.c: In function ‘spec_constant_decoration_cb’:
src/compiler/spirv/spirv_to_nir.c:1359:70: warning: unused parameter ‘v’ [-Wunused-parameter]
spec_constant_decoration_cb(struct vtn_builder *b, struct vtn_value *v,
^
src/compiler/spirv/spirv_to_nir.c: In function ‘handle_workgroup_size_decoration_cb’:
src/compiler/spirv/spirv_to_nir.c:1407:43: warning: unused parameter ‘data’ [-Wunused-parameter]
void *data)
^~~~
src/compiler/spirv/spirv_to_nir.c: In function ‘vtn_handle_function_call’:
src/compiler/spirv/spirv_to_nir.c:1806:55: warning: unused parameter ‘opcode’ [-Wunused-parameter]
vtn_handle_function_call(struct vtn_builder *b, SpvOp opcode,
^~~~~~
src/compiler/spirv/spirv_to_nir.c:1807:54: warning: unused parameter ‘count’ [-Wunused-parameter]
const uint32_t *w, unsigned count)
^~~~~
src/compiler/spirv/spirv_to_nir.c: In function ‘get_uniform_nir_atomic_op’:
src/compiler/spirv/spirv_to_nir.c:2548:47: warning: unused parameter ‘b’ [-Wunused-parameter]
get_uniform_nir_atomic_op(struct vtn_builder *b, SpvOp opcode)
^
src/compiler/spirv/spirv_to_nir.c: In function ‘vtn_handle_atomics’:
src/compiler/spirv/spirv_to_nir.c:2633:48: warning: unused parameter ‘count’ [-Wunused-parameter]
const uint32_t *w, unsigned count)
^~~~~
src/compiler/spirv/spirv_to_nir.c: In function ‘vtn_handle_barrier’:
src/compiler/spirv/spirv_to_nir.c:3197:48: warning: unused parameter ‘count’ [-Wunused-parameter]
const uint32_t *w, unsigned count)
^~~~~
src/compiler/spirv/spirv_to_nir.c: In function ‘vtn_handle_execution_mode’:
src/compiler/spirv/spirv_to_nir.c:3618:68: warning: unused parameter ‘data’ [-Wunused-parameter]
const struct vtn_decoration *mode, void *data)
^~~~
Acked-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/767 >
2020-01-23 00:18:57 +00:00