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
Dave Airlie
b06f121fcc
lavapipe: enable 8/16-bit storage extensions
...
Acked-by: Adam Jackson <ajax@redhat.com >
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9643 >
2021-03-22 12:17:36 +10:00
Dave Airlie
a986d1ed63
lavapipe: add support for KHR_buffer_device_address.
...
Adds the missing magic lowering pass, and stores the pmem
pointer for easier returning to user.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9616 >
2021-03-16 23:05:10 +00:00
Mike Blumenkrantz
c3db26a6f6
lavapipe: use common interfaces for shader modules
...
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9508 >
2021-03-15 21:47:44 +00:00
Dave Airlie
1fb43ae9bf
lavapipe: enable KHR_multiview
...
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/9399 >
2021-03-12 05:05:51 +00:00
Dave Airlie
d061e21b7e
lavapipe: enable EXT_shader_viewport_index_layer
...
This is already implemented afaik
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9401 >
2021-03-05 21:43:59 +00:00
Dave Airlie
6bcd304278
lavapipe: fix pipeline vp/scissor mixup.
...
Not copying all the scissors caused
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.2_viewports
to fail but thah test pointlessly relies on KHR_multiview (cts issue
filed).
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Fixes: b38879f8c5
("vallium: initial import of the vulkan frontend")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9422 >
2021-03-05 03:34:47 +00:00
Dave Airlie
83c4e94196
lavapipe: handle tessellation domain winding
...
Fixes: dEQP-VK.tessellation.winding.*
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9238 >
2021-02-24 10:07:01 +10:00
Dave Airlie
368c804383
lavapipe: make OPT macro MSVC compatible
...
This macros is ugly, make it uglier but msvc compatible.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9120 >
2021-02-19 02:27:15 +00:00
Dave Airlie
c1e0249e90
lavapipe: use msvc compatible 0 init
...
trivial changes
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9120 >
2021-02-19 02:27:15 +00:00
Dave Airlie
ab42e49ea7
lavapipe: fix some void ptr arithmetic
...
msvc disagrees with it, and they are trivial to fix.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9120 >
2021-02-19 02:27:15 +00:00
Michel Zou
2ef3dca476
vulkan/lavapipe: add missing VKAPI_ATTR/CALL
...
Acked-by: Jose Fonseca <jfonsec@vmware.com >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8823 >
2021-02-09 19:21:03 +00:00
Dave Airlie
8be936f295
lavapipe: handle shader draw parameters
...
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Reviewed-by: Adam Jackson <ajax@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8219 >
2021-01-27 23:36:52 +00:00
Caio Marcelo de Oliveira Filho
9f3d5e99ea
compiler: Use util/bitset.h for system_values_read
...
It is currently a bitset on top of a uint64_t but there are already
more than 64 values. Change to use BITSET to cover all the
SYSTEM_VALUE_MAX bits.
Cc: mesa-stable
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Acked-by: Jesse Natalie <jenatali@microsoft.com >
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Acked-by: Alejandro Piñeiro <apinheiro@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8585 >
2021-01-26 20:20:47 +00:00
Dave Airlie
6af87193c4
lavapipe: add basic vulkan device group support.
...
This just add the basic for vulkan device group support, base
dispatch, and dummy funcs
Reviewed-by: Adam Jackson <ajax@redhat.com >
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Reviweed-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8154 >
2020-12-24 08:10:06 +10:00
Eric Anholt
bb4ade40e4
lvp: Fix vtn warnings about unsupported image read/write without format.
...
These are just warnings printed to the console and don't affect testcase
pass/fail, but clog up the deqp-runner job logs.
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8188 >
2020-12-21 20:33:35 +00:00
Dave Airlie
448e60314a
lavapipe: add transform feedback support
...
This adds support for EXT_transform_feedback which can be used by
zink to enable more CI
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7981 >
2020-12-21 01:12:42 +00:00
Erik Faye-Lund
3f0da800eb
lavapipe: implement VK_EXT_vertex_attribute_divisor (v2)
...
This is more or less just compile-tested, but this seems about right to
me. I see the extension being supported when running on top of Zink,
which makes me happy enough for now ;)
v2: fixed up to copy the structs on pipeline create [airlied]
gallium doesn't support the 0 divisor case yet.
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7930 >
2020-12-10 11:01:07 +10:00