diff options
author | Alejandro Piñeiro <[email protected]> | 2018-07-20 13:03:05 +0200 |
---|---|---|
committer | Alejandro Piñeiro <[email protected]> | 2018-07-31 13:33:37 +0200 |
commit | 739bb9e3d4da6b46e7a076a7aad7eb4ea919e7c7 (patch) | |
tree | bd4828f8a5a5f2c04ac5ef9c1b232134cc4556db /src/mesa/main | |
parent | d69027536ca04b5270eae4c1621aded1e581a64e (diff) |
arb_gl_spirv: add calls to several nir lowerings
For now we are just adding nir lowerings that are needed/mandatory to
get things working. After everything is settled, we would start to add
good-to-have lowerings.
This patch adds the following calls:
* nir_split_var_copits and nir_split_per_member_structs: as vulkan
drivers are doing now. See commit
b0c643d8f579a3e1e45a08f6d9de099f2c45898b ("spirv: Use NIR
per-member splitting") for more info.
Without this commit, piglit tests like this crashes:
spec/arb_gl_spirv/execution/varying/block
And in general most of the shaders that includes any kind of
struct.
* nir_copy_prop: after nir_deref_instr introduction, function calls
need this. See commit "nir,spirv: Rework function calls"
(c11833ab24dcba26de1b0a5805e35a5d6761514e) for more info.
Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/mesa/main')
-rw-r--r-- | src/mesa/main/glspirv.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mesa/main/glspirv.c b/src/mesa/main/glspirv.c index ed7ff29328c..87075a547cd 100644 --- a/src/mesa/main/glspirv.c +++ b/src/mesa/main/glspirv.c @@ -238,6 +238,14 @@ _mesa_spirv_to_nir(struct gl_context *ctx, prog->Name); nir_validate_shader(nir); + NIR_PASS_V(nir, nir_copy_prop); + + /* Split member structs. We do this before lower_io_to_temporaries so that + * it doesn't lower system values to temporaries by accident. + */ + NIR_PASS_V(nir, nir_split_var_copies); + NIR_PASS_V(nir, nir_split_per_member_structs); + return nir; } |