nir: add gathering passes that gather which inputs affect specific outputs
The first pass computes which shader instructions contribute to each output. It can be used to query how data flows within shaders towards outputs. The second pass computes which shader input components and which types of memory loads are used to compute shader outputs. The third pass uses the second pass to gather which input components are used to compute pos and clip dist outputs, which input components are used to compute all other outputs, and which input components are used to compute both. This will be used by compaction in nir_opt_varyings for drivers that split TES into a separate position cull shader and varying shader to make it less likely that the same vec4 inputs are needed in both. Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32262>
This commit is contained in:
@@ -221,6 +221,7 @@ util_dynarray_append_dynarray(struct util_dynarray *buf,
|
||||
#define util_dynarray_top(buf, type) *util_dynarray_top_ptr(buf, type)
|
||||
#define util_dynarray_pop_ptr(buf, type) ((type*)((char*)(buf)->data + ((buf)->size -= sizeof(type))))
|
||||
#define util_dynarray_pop(buf, type) *util_dynarray_pop_ptr(buf, type)
|
||||
#define util_dynarray_last_ptr(buf, type) ((type*)((char*)(buf)->data + ((buf)->size - sizeof(type))))
|
||||
#define util_dynarray_contains(buf, type) ((buf)->size >= sizeof(type))
|
||||
#define util_dynarray_element(buf, type, idx) ((type*)(buf)->data + (idx))
|
||||
#define util_dynarray_begin(buf) ((buf)->data)
|
||||
|
||||
Reference in New Issue
Block a user