etnaviv: wire up missing gl_VertexID bits
While some bits for gl_VertexID were already present in the compiler, it was still missing in lots of cases. Wire those up to make gl_VertexID usable. Fixes piglit spec@!opengl es 3.0@gl_vertexid. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30604>
This commit is contained in:
@@ -51,7 +51,6 @@ etna_compiler_create(const char *renderer, const struct etna_core_info *info)
|
||||
.lower_mul_high = true,
|
||||
.lower_bitops = true,
|
||||
.lower_all_io_to_temps = true,
|
||||
.vertex_id_zero_based = true,
|
||||
.lower_flrp32 = true,
|
||||
.lower_fmod = true,
|
||||
.lower_vector_cmp = true,
|
||||
|
@@ -365,6 +365,7 @@ get_src(struct etna_compile *c, nir_src *src)
|
||||
switch (intr->intrinsic) {
|
||||
case nir_intrinsic_load_input:
|
||||
case nir_intrinsic_load_instance_id:
|
||||
case nir_intrinsic_load_vertex_id:
|
||||
case nir_intrinsic_load_uniform:
|
||||
case nir_intrinsic_load_ubo:
|
||||
case nir_intrinsic_load_reg:
|
||||
@@ -608,6 +609,7 @@ emit_intrinsic(struct etna_compile *c, nir_intrinsic_instr * intr)
|
||||
break;
|
||||
case nir_intrinsic_load_input:
|
||||
case nir_intrinsic_load_instance_id:
|
||||
case nir_intrinsic_load_vertex_id:
|
||||
case nir_intrinsic_load_texture_scale:
|
||||
case nir_intrinsic_load_texture_size_etna:
|
||||
case nir_intrinsic_decl_reg:
|
||||
|
@@ -294,6 +294,7 @@ def_for_instr(nir_instr *instr)
|
||||
intr->intrinsic == nir_intrinsic_load_ubo ||
|
||||
intr->intrinsic == nir_intrinsic_load_input ||
|
||||
intr->intrinsic == nir_intrinsic_load_instance_id ||
|
||||
intr->intrinsic == nir_intrinsic_load_vertex_id ||
|
||||
intr->intrinsic == nir_intrinsic_load_texture_scale ||
|
||||
intr->intrinsic == nir_intrinsic_load_texture_size_etna)
|
||||
def = &intr->def;
|
||||
|
@@ -145,7 +145,8 @@ etna_live_defs(nir_function_impl *impl, struct live_def *defs, unsigned *live_ma
|
||||
if (instr->type == nir_instr_type_intrinsic) {
|
||||
nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
|
||||
if (intr->intrinsic == nir_intrinsic_load_input ||
|
||||
intr->intrinsic == nir_intrinsic_load_instance_id)
|
||||
intr->intrinsic == nir_intrinsic_load_instance_id ||
|
||||
intr->intrinsic == nir_intrinsic_load_vertex_id)
|
||||
defs[state.num_defs].live_start = 0;
|
||||
}
|
||||
|
||||
|
@@ -215,6 +215,9 @@ etna_ra_assign(struct etna_compile *c, nir_shader *shader)
|
||||
case nir_intrinsic_load_instance_id:
|
||||
reg = c->variant->infile.num_reg * NUM_REG_TYPES + REG_TYPE_VIRT_SCALAR_Y;
|
||||
break;
|
||||
case nir_intrinsic_load_vertex_id:
|
||||
reg = c->variant->infile.num_reg * NUM_REG_TYPES + REG_TYPE_VIRT_SCALAR_X;
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
Reference in New Issue
Block a user