mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
nir, ir3: Make ir3 GS varyings use a proper index
Use a similar technique of reusing TCS-only varyings for VS/TES/GS. This way outputs_written can be used to see whether GS lowering has already been run. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39328>
This commit is contained in:
parent
aa04692bb4
commit
c7a60fca3c
3 changed files with 33 additions and 4 deletions
|
|
@ -208,6 +208,34 @@ gl_varying_slot_name_for_stage(gl_varying_slot slot, mesa_shader_stage stage)
|
|||
}
|
||||
break;
|
||||
|
||||
case MESA_SHADER_VERTEX:
|
||||
switch (slot) {
|
||||
case VARYING_SLOT_GS_HEADER_IR3: return "VARYING_SLOT_GS_HEADER_IR3";
|
||||
default:
|
||||
/* Not an overlapping value. */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case MESA_SHADER_TESS_EVAL:
|
||||
switch (slot) {
|
||||
case VARYING_SLOT_GS_HEADER_IR3: return "VARYING_SLOT_GS_HEADER_IR3";
|
||||
default:
|
||||
/* Not an overlapping value. */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case MESA_SHADER_GEOMETRY:
|
||||
switch (slot) {
|
||||
case VARYING_SLOT_GS_HEADER_IR3: return "VARYING_SLOT_GS_HEADER_IR3";
|
||||
case VARYING_SLOT_GS_VERTEX_FLAGS_IR3: return "VARYING_SLOT_GS_VERTEX_FLAGS_IR3";
|
||||
default:
|
||||
/* Not an overlapping value. */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -374,6 +374,9 @@ typedef enum
|
|||
VARYING_SLOT_TASK_COUNT = VARYING_SLOT_BOUNDING_BOX0, /* Only appears in TASK. */
|
||||
VARYING_SLOT_CULL_PRIMITIVE = VARYING_SLOT_BOUNDING_BOX0, /* Only appears in MESH. */
|
||||
|
||||
VARYING_SLOT_GS_HEADER_IR3 = VARYING_SLOT_BOUNDING_BOX0, /* VS/TES output and GS input */
|
||||
VARYING_SLOT_GS_VERTEX_FLAGS_IR3 = VARYING_SLOT_BOUNDING_BOX1, /* GS output */
|
||||
|
||||
VARYING_SLOT_VAR0 = 32, /* First generic varying slot */
|
||||
/* the remaining are simply for the benefit of gl_varying_slot_name()
|
||||
* and not to be construed as an upper bound:
|
||||
|
|
|
|||
|
|
@ -1420,10 +1420,8 @@ void print_raw(FILE *out, const BITSET_WORD *data, size_t size);
|
|||
void ir3_link_stream_out(struct ir3_shader_linkage *l,
|
||||
const struct ir3_shader_variant *v);
|
||||
|
||||
#define VARYING_SLOT_GS_HEADER_IR3 (VARYING_SLOT_MAX + 0)
|
||||
#define VARYING_SLOT_GS_VERTEX_FLAGS_IR3 (VARYING_SLOT_MAX + 1)
|
||||
#define VARYING_SLOT_TCS_HEADER_IR3 (VARYING_SLOT_MAX + 2)
|
||||
#define VARYING_SLOT_REL_PATCH_ID_IR3 (VARYING_SLOT_MAX + 3)
|
||||
#define VARYING_SLOT_TCS_HEADER_IR3 (VARYING_SLOT_MAX + 0)
|
||||
#define VARYING_SLOT_REL_PATCH_ID_IR3 (VARYING_SLOT_MAX + 1)
|
||||
|
||||
static inline uint32_t
|
||||
ir3_find_sysval_regid(const struct ir3_shader_variant *so, unsigned slot)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue