Mike Blumenkrantz
3e28ce374e
lavapipe: run some shader passes for demote handling
...
pipe internals already support discard, so as long as everything is
rewritten to use discard, we don't need any further changes
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15402 >
2022-03-21 03:20:33 +00:00
Mike Blumenkrantz
b7fbaf924d
lavapipe: EXT_pipeline_creation_cache_control
...
again, technically passing is still passing
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15379 >
2022-03-16 04:46:06 +00:00
Mike Blumenkrantz
9bce878490
lavapipe: EXT_pipeline_creation_feedback
...
cts passes with mostly quality warnings, but it does pass
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15379 >
2022-03-16 04:46:06 +00:00
Mike Blumenkrantz
40fcd8ef83
lavapipe: enable KHR_memory_model support
...
lavapipe's memory is always coherent, so this is already supported
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15377 >
2022-03-15 22:17:43 +00:00
Mike Blumenkrantz
e3e3186855
lavapipe: strip unneeded scoped barriers
...
most of these do nothing and can't be emitted without breaking shaders
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15377 >
2022-03-15 22:17:43 +00:00
Mike Blumenkrantz
49cac7b33d
lavapipe: ref/unref pipeline layouts for pipeline creation
...
required by maintenance4
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15378 >
2022-03-14 21:30:13 -04:00
Mike Blumenkrantz
2f9976debc
lavapipe: always clone shader nir for shader states
...
these become owned and freed by llvmpipe, so ensure that freeing
them there won't cause crashes
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15281 >
2022-03-15 00:58:22 +00:00
Mike Blumenkrantz
cf5c32a4b2
lavapipe: run nir_opt_copy_prop_vars during optimization loop
...
this enables better elimination of operations
fixes:
dEQP-VK.graphicsfuzz.spv-stable-mergesort-flatten-selection-dead-continues
fixes #5458
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15322 >
2022-03-10 20:40:56 +00:00
Mike Blumenkrantz
204ea77b06
lavapipe: fix pipeline creation for blend and zs states
...
these values are read based on the specified subpass containing the
required attachments, not on the overall renderpass
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15282 >
2022-03-09 01:13:42 +00:00
Mike Blumenkrantz
bfae16ca34
lavapipe: scan shaders for image/ssbo access and generate per-stage masks
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15233 >
2022-03-07 03:56:46 +00:00
Mike Blumenkrantz
07c0801e60
lavapipe: EXT_depth_clip_control
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15126 >
2022-02-25 05:27:27 +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
Dave Airlie
d54c07b4c4
mesa/*: use an internal enum for tessellation primitive types.
...
To avoid dragging gl.h into places it has no business being,
defined tessellation primitive mode to an enum.
This has a lot of fallout all over the place.
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
Mike Blumenkrantz
8a6160a354
lavapipe: VK_KHR_dynamic_rendering
...
this is a conformant implementation
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13627 >
2021-11-04 03:22:09 +00:00
Mike Blumenkrantz
d103d5bb5d
lavapipe: stop reading renderpass during pipeline creation
...
this is unnecessary and is going to be annoying in the future
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13349 >
2021-10-19 01:18:24 +00:00
Jason Ekstrand
956199e870
nir: s/nir_var_mem_image/nir_var_image/g
...
We typically use nir_var_mem_* for stuff that has an explicit byte-based
memory layout. Images are opaque.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13386 >
2021-10-16 03:47:10 +00:00
Jason Ekstrand
225caf537a
llvmpipe: Support image variables living in nir_var_mem_image
...
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4743 >
2021-10-15 14:58:56 +00:00
Jason Ekstrand
47adb11143
lavapipe: Switch to the new vk_error helpers
...
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13045 >
2021-10-07 20:51:36 +00:00
Boris Brezillon
b47090c5b3
spirv: Always declare FragCoord as a sysval
...
Now that all spirv_to_nir() users take care of converting sysvals to
varyings, we can unconditionally declare FragCoord as a sysval.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13017 >
2021-10-07 19:45:35 +00:00
Boris Brezillon
4b62e90e71
spirv: Let spirv_to_nir() users turn sysvals into input varyings
...
This is an attempt at simplifying the spirv_to_nir() backend when it
comes to choosing between system values and input varyings. Let's patch
drivers to do the sysval to input varying conversion on their own so we
can get rid of the frag_coord_is_varying field in spirv_to_nir_options
and unconditionally create create sysvals for FragCoord, FrontFacing and
PointCoord inputs instead of adding new xxx_is_{sysval,varying} flags.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Suggested-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com >
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Hyunjun Ko <zzoon@igalia.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13017 >
2021-10-07 19:45:35 +00:00
Mike Blumenkrantz
a8e123cd1c
lavapipe: add support for KHR_shader_float_controls
...
These pass all the CTS tests, though not sure how useful they are.
[airlied: these may need some work in the future depending on app expectations]
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12953 >
2021-09-27 16:34:34 +10:00
Dave Airlie
b7bfba5983
lavapipe: don't access pColorBlendState when not legal
...
This state isn't valid unless some conditions are met.
Fixes VK-GL-CTS
dEQP-VK.api.pipeline.pipeline_invalid_pointers_unused_structs.graphics
Fixes: 578190c0fe
("lavapipe: implement VK_EXT_color_write_enable")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12984 >
2021-09-23 07:50:21 +00:00
Dave Airlie
3a27e406ed
lavapipe: enable KHR_shader_float16_int8
...
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11816 >
2021-09-16 04:15:41 +00:00
Roland Scheidegger
1a554fd610
lavapipe: implement VK_EXT_depth_clip_enable
...
v2: fix pipeline creation, need a deep copy for rasterization state now
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12260 >
2021-09-09 18:29:26 +00:00
Ian Romanick
5f2dbd45f2
gallium: Remove "optimize" parameter from pipe_screen::finalize_nir
...
As part of adding support for inline uniforms in Iris, I was going to
add a finalize_nir hook. I went looking to see how other drivers use
the "optimize" parameter, and I discovered that *nobody* uses it at all.
v2: Fix typo in commit message. Noticed by Mike.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12317 >
2021-08-13 15:45:29 -07:00
Alejandro Piñeiro
476dc3c050
vulkan: add vk_spec_info_to_nir_spirv util method
...
All vulkan drivers have been copying anv's code to convert
VkSpecializationInfo into nir_spirv_specialization.
Recently there was a Vulkan spec change on allowed values for
VkSpecializationInfo, and all drivers got affected.
This commits creates a new helper, and uses it on all Vulkan Mesa
drivers.
v2: use (uint8_t*) castings, instead of void*, to avoid C2036 with
MSVC (detected by the CI, inspired on what radv was doing)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Juan A. Suarez <jasuarez@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12047 >
2021-07-29 03:28:52 +00:00
Mike Blumenkrantz
578190c0fe
lavapipe: implement VK_EXT_color_write_enable
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11961 >
2021-07-19 21:21:59 +00:00
Mike Blumenkrantz
59e923e5a1
lavapipe: don't read line stipple info in pipeline creation if stipple is disabled
...
otherwise these values may be (harmlessly) garbage
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11933 >
2021-07-16 22:13:49 +00:00
Erik Faye-Lund
1ac29863a9
lavapipe: expose strict-lines feature
...
The strictLines-feature requires lines to be rasterized as rectangles
by default instead of using the parallelograms you get from extending
bresenham lines along their minor axis.
Now that we can specify the line mode fully we can actually express
this, so let's do so.
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11782 >
2021-07-12 22:05:10 +00:00
Erik Faye-Lund
1c2690ec20
gallium: explicitly specify line rasterization mode
...
Currently, drivers infer the line rasterization mode from the
multisampling and line_smooth rasterization state. This is always
correct for OpenGL, but is subtly incorrect for DirectX 9, 10 and
Vulkan (when VK_EXT_line_rasterization is supported).
So let's allow front-ends to choose freely between rectangle and
paralellogram rendering.
The reason why there's no added cap for this, is that the implicit
selection that drivers currently do will work just as well (or more
correclty, just as subtly wrong) as before. And there's nothing
reasonable the front-ends can do to get the correct behavior, so
there's really no fall-back code to write either.
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11782 >
2021-07-12 22:05:10 +00:00
Erik Faye-Lund
e0472217b0
lavapipe: fix disable_multisample condition
...
There's two of the line-modes that warrants disabling multisampling,
and that's bresenham and smooth lines.
The reason we need this for the smooth lines case, is that multisampling
overrides the smooth-flag.
Fixes: 9fbf6b2abf
("lavapipe: implement VK_EXT_line_rasterization")
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11782 >
2021-07-12 22:05:10 +00:00
Erik Faye-Lund
e555e2b001
lavapipe: do not disable multisampling for smooth lines
...
Smooth lines are also rasterized with rectangles instead of using
bresenham-style lines, so let's make sure we exclude those as well
from this test.
Fixes: 9fbf6b2abf
("lavapipe: implement VK_EXT_line_rasterization")
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11782 >
2021-07-12 22:05:10 +00:00
Mike Blumenkrantz
6741e4be31
lavapipe: implement EXT_extended_dynamic_state2
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11736 >
2021-07-07 02:13:20 +00:00
Thomas H.P. Andersen
8795501cef
lavapipe: remove initialization override
...
These are duplicates from a few lines up
Reviewed-by: Dave Airlie <airlied@redhat.com >
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11703 >
2021-07-05 19:49:32 +00:00
Mike Blumenkrantz
9fbf6b2abf
lavapipe: implement VK_EXT_line_rasterization
...
rectangular and strict lines aren't supported in this, and multisampling
must be disabled for correct line rasterization
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11066 >
2021-07-05 07:14:29 +00:00
Mike Blumenkrantz
fba6dafb9f
lavapipe: store whether the geometry shader outputs GL_LINES
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11066 >
2021-07-05 07:14:29 +00:00
Mike Blumenkrantz
5951d2abac
lavapipe: implement EXT_vertex_input_dynamic_state
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11231 >
2021-07-01 00:37:08 +00:00
Mike Blumenkrantz
614fcdc8c7
lavapipe: moar @optimize
...
without enough nir optimizing, some shaders fail to reduce as they should,
resulting in the wrong output
fixes dEQP-VK.graphicsfuzz.spv-stable-mergesort-flatten-selection-dead-continues
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11019 >
2021-05-26 23:21:07 +00:00
Jose Fonseca
24043d215f
lavapipe: Fix lvp_pipeline_compile's nir_xfb_info leak.
...
v2: Cleanup, as suggested by Mike Blumenkrantz.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10688 >
2021-05-08 07:17:49 +01:00
Mike Blumenkrantz
4dc17b898b
lavapipe: don't access pipeline blend state when it should be ignored
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10625 >
2021-05-06 14:59:32 +00:00
Mike Blumenkrantz
636a3903be
lavapipe: don't access pipeline dsa state when it should be ignored
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10625 >
2021-05-06 14:59:32 +00:00
Mike Blumenkrantz
6bacd2a325
lavapipe: don't access pipeline viewport state when it should be ignored
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10625 >
2021-05-06 14:59:32 +00:00
Mike Blumenkrantz
11261d2189
lavapipe: ignore tess pipeline info if no tess shaders in pipeline
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10625 >
2021-05-06 14:59:32 +00:00
Erik Faye-Lund
301ceab7ce
lavapipe: consistently use nir macros
...
NIR provides two helper macros to run transformation passes correctly,
NIR_PASS() and NIR_PASS_V(). So far we've seemingly been a bit haphazard
about when to use them.
Let's correct that, and consistently use the NIR helpers here. This
helps us in two ways:
1. We now run nir_validate_shader after each pass, ensuring we didn't
break the shader
2. We now respect the NIR_PRINT environment variable for all NIR passes,
making debugging much less surprising.
In addition, we had an OPT()-macro that doesn't seem to provide much
help other than to hiding some trivial details. But they make our code
different to other users of NIR, which doesn't seem ideal. So let's drop
that macro while we're at it.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10585 >
2021-05-04 07:18:55 +00:00
Mike Blumenkrantz
0e439541a5
lavapipe: implement VK_EXT_provoking_vertex
...
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10458 >
2021-04-26 20:19:48 +00:00
Bas Nieuwenhuizen
580f1ac473
nir: Extract shader_info->cs.shared_size out of union.
...
It is valid for all stages, just 0 for most of them. In particular
mesh/task shaders might be using it.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10094 >
2021-04-08 14:39:28 +00:00
Dave Airlie
34525bb088
lavapipe: enable subgroups features
...
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9645 >
2021-04-07 19:56:17 +00:00
Rhys Perry
8731a1beb7
lavapipe: fix initialization of pipe_stream_output with unwritten outputs
...
nir_assign_io_var_locations() does not use outputs_written when assigning
driver locations. Use driver_location to avoid incorrectly guessing what
locations it assigned.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8364 >
2021-04-01 10:15:44 +00:00
Dave Airlie
d62bb8bc0d
lavapipe: fail out if spirv->nir fails
...
Just fail out earlier and assume a feature is missing.
Fixes a crash in validation layer tests
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9937 >
2021-03-31 05:23:57 +00:00
Dave Airlie
115ba959dc
lavapipe: enable KHR_shader_atomic_int64
...
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9591 >
2021-03-29 20:32:09 +00:00