nir: add src and dest types to all IO loads and stores for mediump
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Matt Turner <mattst88@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9050>
This commit is contained in:
parent
e06cbff50e
commit
5f7c7c9a7f
|
@ -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 }.
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue