nir: Split NIR_INTRINSIC_TYPE into separate src/dest indices
We're about to introduce conversion ops which are going to want two different types. We may as well just split the one we have rather than end up with three. There are a couple places where this is mildly inconvenient but most of the time I find it to actually be nicer. Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6945>
This commit is contained in:

committed by
Marge Bot

parent
4c70f1ba2f
commit
0aa08ae2f6
@@ -124,8 +124,10 @@ ALIGN_MUL = "NIR_INTRINSIC_ALIGN_MUL"
|
||||
ALIGN_OFFSET = "NIR_INTRINSIC_ALIGN_OFFSET"
|
||||
# The vulkan descriptor type for vulkan_resource_index
|
||||
DESC_TYPE = "NIR_INTRINSIC_DESC_TYPE"
|
||||
# The nir_alu_type of a uniform/input/output
|
||||
TYPE = "NIR_INTRINSIC_TYPE"
|
||||
# The nir_alu_type of input data to a store
|
||||
SRC_TYPE = "NIR_INTRINSIC_SRC_TYPE"
|
||||
# The nir_alu_type of the data output from a load
|
||||
DEST_TYPE = "NIR_INTRINSIC_DEST_TYPE"
|
||||
# The swizzle mask for quad_swizzle_amd & masked_swizzle_amd
|
||||
SWIZZLE_MASK = "NIR_INTRINSIC_SWIZZLE_MASK"
|
||||
# Driver location of attribute
|
||||
@@ -399,8 +401,8 @@ def image(name, src_comp=[], extra_indices=[], **kwargs):
|
||||
intrinsic("bindless_image_" + name, src_comp=[1] + src_comp,
|
||||
indices=[IMAGE_DIM, IMAGE_ARRAY, FORMAT, ACCESS] + extra_indices, **kwargs)
|
||||
|
||||
image("load", src_comp=[4, 1, 1], extra_indices=[TYPE], dest_comp=0, flags=[CAN_ELIMINATE])
|
||||
image("store", src_comp=[4, 1, 0, 1], extra_indices=[TYPE])
|
||||
image("load", src_comp=[4, 1, 1], extra_indices=[DEST_TYPE], dest_comp=0, flags=[CAN_ELIMINATE])
|
||||
image("store", src_comp=[4, 1, 0, 1], extra_indices=[SRC_TYPE])
|
||||
image("atomic_add", src_comp=[4, 1, 1], dest_comp=1)
|
||||
image("atomic_imin", src_comp=[4, 1, 1], dest_comp=1)
|
||||
image("atomic_umin", src_comp=[4, 1, 1], dest_comp=1)
|
||||
@@ -746,15 +748,15 @@ def load(name, src_comp, indices=[], flags=[]):
|
||||
flags=flags)
|
||||
|
||||
# src[] = { offset }.
|
||||
load("uniform", [1], [BASE, RANGE, TYPE], [CAN_ELIMINATE, CAN_REORDER])
|
||||
load("uniform", [1], [BASE, RANGE, DEST_TYPE], [CAN_ELIMINATE, CAN_REORDER])
|
||||
# src[] = { buffer_index, offset }.
|
||||
load("ubo", [-1, 1], [ACCESS, ALIGN_MUL, ALIGN_OFFSET, RANGE_BASE, RANGE], flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
# src[] = { buffer_index, offset in vec4 units }
|
||||
load("ubo_vec4", [-1, 1], [ACCESS, COMPONENT], flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
# src[] = { offset }.
|
||||
load("input", [1], [BASE, COMPONENT, TYPE, IO_SEMANTICS], [CAN_ELIMINATE, CAN_REORDER])
|
||||
load("input", [1], [BASE, COMPONENT, DEST_TYPE, IO_SEMANTICS], [CAN_ELIMINATE, CAN_REORDER])
|
||||
# src[] = { vertex_id, offset }.
|
||||
load("input_vertex", [1, 1], [BASE, COMPONENT, TYPE, IO_SEMANTICS], [CAN_ELIMINATE, CAN_REORDER])
|
||||
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])
|
||||
# src[] = { barycoord, offset }.
|
||||
@@ -794,7 +796,7 @@ def store(name, srcs, indices=[], flags=[]):
|
||||
intrinsic("store_" + name, [0] + srcs, indices=indices, flags=flags)
|
||||
|
||||
# src[] = { value, offset }.
|
||||
store("output", [1], [BASE, WRMASK, COMPONENT, TYPE, IO_SEMANTICS])
|
||||
store("output", [1], [BASE, WRMASK, COMPONENT, SRC_TYPE, IO_SEMANTICS])
|
||||
# src[] = { value, vertex, offset }.
|
||||
store("per_vertex_output", [1, 1], [BASE, WRMASK, COMPONENT, IO_SEMANTICS])
|
||||
# src[] = { value, block_index, offset }
|
||||
@@ -928,7 +930,7 @@ load("tlb_color_v3d", [1], [BASE, COMPONENT], [])
|
||||
#
|
||||
# src[] = { value, render_target }
|
||||
# BASE = sample index
|
||||
store("tlb_sample_color_v3d", [1], [BASE, COMPONENT, TYPE], [])
|
||||
store("tlb_sample_color_v3d", [1], [BASE, COMPONENT, SRC_TYPE], [])
|
||||
|
||||
# V3D-specific intrinsic to load the number of layers attached to
|
||||
# the target framebuffer
|
||||
|
Reference in New Issue
Block a user