Alyssa Rosenzweig
2b09ab4bad
nir/passthrough_gs: Drop unused array_size_for_prim
...
../src/compiler/nir/nir_passthrough_gs.c:96:1: warning: ‘array_size_for_prim’ defined but not used [-Wunused-function]
96 | array_size_for_prim(enum mesa_prim prim)
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Reviewed-by: Italo Nicola <italonicola@collabora.com >
Acked-by: Faith Ekstrand <faith.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24428 >
2023-08-01 23:18:28 +00:00
Erik Faye-Lund
6d142078bc
nir: use generated immediate comparison helpers
...
This makes the code a bit less verbose, so let's use the helpers.
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23393 >
2023-06-05 13:40:08 +00:00
Yonggang Luo
12256136e0
compiler: Rename shader_prim to mesa_prim and replace all usage of pipe_prim_type with mesa_prim
...
This is a prepare step to remove depends on p_defines.h in src/util/*
This is done by:
replace pipe_prim_type with mesa_prim
replace shader_prim with mesa_prim
replace PIPE_PRIM_MAX with MESA_PRIM_COUNT
replace SHADER_PRIM_ with MESA_PRIM_
replace PIPE_PRIM_ with MESA_PRIM_
This patch only replace code only
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com >
Acked-by: Marek Olšák <marek.olsak@amd.com >
Acked-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23369 >
2023-06-03 03:29:03 +00:00
antonino
b5818e2e4f
nir: make var arrays large enough in nir_create_passthrough_gs
...
Because each location has 4 possible different values for location_frac
the arrays need to br 4x the size.
Fixes: d0342e28
("nir: Add helper to create passthrough GS shader")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22871 >
2023-05-15 11:04:41 +00:00
antonino
8f22669f9b
nir: handle interface blocks in copy_vars
...
Fixes: 99121c9b77
("nir/gs: fix array type copying for passthrough gs")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22871 >
2023-05-15 11:04:41 +00:00
antonino
83692bfe30
nir: don't create invalid inputs in nir_create_passthrough_gs
...
The helper was creating input locations for some builtin bariables.
This caused validation errors in zink because those builtins can't be
used as input.
Fixes: d0342e28b3
("nir: Add helper to create passthrough GS shader")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22871 >
2023-05-15 11:04:41 +00:00
antonino
78d59ef4b1
nir: use nir_variable_clone
in nir_create_passthrough_gs
...
Some stream out properties where not being copied causing problems in
zink.
Use the appropiate helper instead of copying fields by hand.
Fixes: d0342e28b3
("nir: Add helper to create passthrough GS shader")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22871 >
2023-05-15 11:04:41 +00:00
antonino
a0645e3383
nir/zink: use sysvals in nir_create_passthrough_gs
...
Previously the passthrough gs shader loaded some values with uniform
loads using sevaral hardcoded values.
This was not flexible for other drivers and started becoming too
unflexible for zink itself.
Use system values instead and use a lowering pass in zink.
Acked-by: Faith Ekstrand <faith.ekstrand@collabora.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22667 >
2023-04-25 13:11:59 +00:00
Mike Blumenkrantz
99121c9b77
nir/gs: fix array type copying for passthrough gs
...
same mechanics as in zink passes
Fixes: d0342e28b3
("nir: Add helper to create passthrough GS shader")
Reviewed-by: Antonino Maniscalco <antonino.maniscalco@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22669 >
2023-04-24 18:00:20 +00:00
antonino
15b3d77b40
nir: only handle flat interpolation when needed in nir_create_passthrough_gs
...
When turning primitives into line strips this function needs to move
attributes around, but this is not needed in other cases.
Fixes: 1a5bdca2dd
("zink: implement flat shading using inlined uniforms")
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22162 >
2023-03-31 11:03:48 +00:00
antonino
2bd72a4101
nir: keep xfb properties in nir_create_passthrough_gs
...
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21238 >
2023-03-29 19:18:40 +00:00
antonino
0b65514775
nir/zink: handle provoking vertex mode in nir_create_passthrough_gs
...
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21238 >
2023-03-29 19:18:40 +00:00
antonino
1a5bdca2dd
zink: implement flat shading using inlined uniforms
...
Zink will now handle flat interpolation correctly when line loops
are generated from primitives.
The flat shading information is passed to the emulation gs using constant
uniforms which get inlined.
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21238 >
2023-03-29 19:18:40 +00:00
antonino
3b5fb8b060
nir: allow to force line strip out in nir_create_passthrough_gs
...
`nir_create_passthrough_gs` now allows the user to force the generated GS
to always output a line strip from the primitive
regardless of whether edgeflags are present.
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21238 >
2023-03-29 19:18:40 +00:00
antonino
24535ffb3d
nir: handle edge flags in nir_create_passthrough_gs
...
`nir_create_passthrough_gs` will now take a boolean argument to decide
whether it needs to handle edgeflags.
When true is passed it will output a line strip where edges that
shouldn't be visible are not emitted.
This is usefull because geometry shaders will generally throw away
edgeflags so for a passthrough GS to act transparently it needs to emulate them.
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21238 >
2023-03-29 19:18:40 +00:00
antonino
a0751e8088
nir: calculate number of vertices in nir_create_passthrough_gs
...
`nir_create_passthrough_gs` has been changed to take the type of primitive
as opposed to the number of vertices as an argument.
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21238 >
2023-03-29 19:18:40 +00:00
antonino
edecb66b01
nir: avoid generating conflicting output variables
...
Because not all vertex outputs can have corresponding fragment inputs
(eg. edgeflags) some logic is needed to correctly generate variables in
a passthough gs.
Before this change some output variables ened up with the same location.
Fixes: d0342e28b3
("nir: Add helper to create passthrough GS shader")
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21238 >
2023-03-29 19:18:39 +00:00
antonino
ea14579f3d
nir: handle primitives with adjacency
...
`nir_create_passthrough_gs` can now handle primitives with adjacency where some
vertices need to be skipped.
Fixes: d0342e28b3
("nir: Add helper to create passthrough GS shader")
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21238 >
2023-03-29 19:18:39 +00:00
Erik Faye-Lund
d0342e28b3
nir: Add helper to create passthrough GS shader
...
Based on nir_create_passthrough_tcs and d3d12_make_passthrough_gs, this
creates a passthrough geometry shader that can be used by drivers that
needs to emulate some graphics features in the geometry shader.
Reviewed-by: Rob Clark <robclark@freedesktop.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19987 >
2022-11-30 08:08:25 +00:00