Module: Mesa
Branch: master
Commit: 5f7c7c9a7f7e1ce44261ca292de2bb3dc767d0ec
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5f7c7c9a7f7e1ce44261ca292de2bb3dc767d0ec

Author: Marek Olšák <marek.ol...@amd.com>
Date:   Tue Feb  9 11:08:11 2021 -0500

nir: add src and dest types to all IO loads and stores for mediump

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzw...@collabora.com>
Reviewed-by: Eric Anholt <e...@anholt.net>
Reviewed-by: Matt Turner <matts...@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9050>

---

 src/compiler/nir/nir_intrinsics.py | 10 +++++-----
 src/compiler/nir/nir_lower_io.c    |  7 ++++++-
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/compiler/nir/nir_intrinsics.py 
b/src/compiler/nir/nir_intrinsics.py
index 527285d10ce..4e393bfc7ac 100644
--- a/src/compiler/nir/nir_intrinsics.py
+++ b/src/compiler/nir/nir_intrinsics.py
@@ -868,18 +868,18 @@ load("input", [1], [BASE, COMPONENT, DEST_TYPE, 
IO_SEMANTICS], [CAN_ELIMINATE, C
 # src[] = { vertex_id, offset }.
 load("input_vertex", [1, 1], [BASE, COMPONENT, DEST_TYPE, IO_SEMANTICS], 
[CAN_ELIMINATE, CAN_REORDER])
 # src[] = { vertex, offset }.
-load("per_vertex_input", [1, 1], [BASE, COMPONENT, IO_SEMANTICS], 
[CAN_ELIMINATE, CAN_REORDER])
+load("per_vertex_input", [1, 1], [BASE, COMPONENT, DEST_TYPE, IO_SEMANTICS], 
[CAN_ELIMINATE, CAN_REORDER])
 # src[] = { barycoord, offset }.
-load("interpolated_input", [2, 1], [BASE, COMPONENT, IO_SEMANTICS], 
[CAN_ELIMINATE, CAN_REORDER])
+load("interpolated_input", [2, 1], [BASE, COMPONENT, DEST_TYPE, IO_SEMANTICS], 
[CAN_ELIMINATE, CAN_REORDER])
 
 # src[] = { buffer_index, offset }.
 load("ssbo", [-1, 1], [ACCESS, ALIGN_MUL, ALIGN_OFFSET], [CAN_ELIMINATE])
 # src[] = { buffer_index }
 load("ssbo_address", [1], [], [CAN_ELIMINATE, CAN_REORDER])
 # src[] = { offset }.
-load("output", [1], [BASE, COMPONENT, IO_SEMANTICS], flags=[CAN_ELIMINATE])
+load("output", [1], [BASE, COMPONENT, DEST_TYPE, IO_SEMANTICS], 
flags=[CAN_ELIMINATE])
 # src[] = { vertex, offset }.
-load("per_vertex_output", [1, 1], [BASE, COMPONENT, IO_SEMANTICS], 
[CAN_ELIMINATE])
+load("per_vertex_output", [1, 1], [BASE, COMPONENT, DEST_TYPE, IO_SEMANTICS], 
[CAN_ELIMINATE])
 # src[] = { offset }.
 load("shared", [1], [BASE, ALIGN_MUL, ALIGN_OFFSET], [CAN_ELIMINATE])
 # src[] = { offset }.
@@ -914,7 +914,7 @@ def store(name, srcs, indices=[], flags=[]):
 # src[] = { value, offset }.
 store("output", [1], [BASE, WRITE_MASK, COMPONENT, SRC_TYPE, IO_SEMANTICS])
 # src[] = { value, vertex, offset }.
-store("per_vertex_output", [1, 1], [BASE, WRITE_MASK, COMPONENT, IO_SEMANTICS])
+store("per_vertex_output", [1, 1], [BASE, WRITE_MASK, COMPONENT, SRC_TYPE, 
IO_SEMANTICS])
 # src[] = { value, block_index, offset }
 store("ssbo", [-1, 1], [WRITE_MASK, ACCESS, ALIGN_MUL, ALIGN_OFFSET])
 # src[] = { value, offset }.
diff --git a/src/compiler/nir/nir_lower_io.c b/src/compiler/nir/nir_lower_io.c
index bbf8d61fb79..fe4ad0b5987 100644
--- a/src/compiler/nir/nir_lower_io.c
+++ b/src/compiler/nir/nir_lower_io.c
@@ -301,6 +301,10 @@ emit_load(struct lower_io_state *state,
 
    if (load->intrinsic == nir_intrinsic_load_input ||
        load->intrinsic == nir_intrinsic_load_input_vertex ||
+       load->intrinsic == nir_intrinsic_load_interpolated_input ||
+       load->intrinsic == nir_intrinsic_load_per_vertex_input ||
+       load->intrinsic == nir_intrinsic_load_output ||
+       load->intrinsic == nir_intrinsic_load_per_vertex_output ||
        load->intrinsic == nir_intrinsic_load_uniform)
       nir_intrinsic_set_dest_type(load, dest_type);
 
@@ -407,7 +411,8 @@ emit_store(struct lower_io_state *state, nir_ssa_def *data,
    if (mode == nir_var_shader_out)
       nir_intrinsic_set_component(store, component);
 
-   if (store->intrinsic == nir_intrinsic_store_output)
+   if (store->intrinsic == nir_intrinsic_store_output ||
+       store->intrinsic == nir_intrinsic_store_per_vertex_output)
       nir_intrinsic_set_src_type(store, src_type);
 
    nir_intrinsic_set_write_mask(store, write_mask);

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to