mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
radeonsi/nir: gather tess properties
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
9e1a3caf32
commit
91f3c4ec1b
1 changed files with 29 additions and 0 deletions
|
|
@ -83,6 +83,9 @@ static void scan_instruction(struct tgsi_shader_info *info,
|
|||
case nir_intrinsic_load_instance_id:
|
||||
info->uses_instanceid = 1;
|
||||
break;
|
||||
case nir_intrinsic_load_invocation_id:
|
||||
info->uses_invocationid = true;
|
||||
break;
|
||||
case nir_intrinsic_load_vertex_id:
|
||||
info->uses_vertexid = 1;
|
||||
break;
|
||||
|
|
@ -95,6 +98,10 @@ static void scan_instruction(struct tgsi_shader_info *info,
|
|||
case nir_intrinsic_load_primitive_id:
|
||||
info->uses_primid = 1;
|
||||
break;
|
||||
case nir_intrinsic_load_tess_level_inner:
|
||||
case nir_intrinsic_load_tess_level_outer:
|
||||
info->reads_tess_factors = true;
|
||||
break;
|
||||
case nir_intrinsic_image_store:
|
||||
case nir_intrinsic_image_atomic_add:
|
||||
case nir_intrinsic_image_atomic_min:
|
||||
|
|
@ -137,6 +144,28 @@ void si_nir_scan_shader(const struct nir_shader *nir,
|
|||
info->num_tokens = 2; /* indicate that the shader is non-empty */
|
||||
info->num_instructions = 2;
|
||||
|
||||
if (nir->info.stage == MESA_SHADER_TESS_CTRL) {
|
||||
info->properties[TGSI_PROPERTY_TCS_VERTICES_OUT] =
|
||||
nir->info.tess.tcs_vertices_out;
|
||||
}
|
||||
|
||||
if (nir->info.stage == MESA_SHADER_TESS_EVAL) {
|
||||
if (nir->info.tess.primitive_mode == GL_ISOLINES)
|
||||
info->properties[TGSI_PROPERTY_TES_PRIM_MODE] = PIPE_PRIM_LINES;
|
||||
else
|
||||
info->properties[TGSI_PROPERTY_TES_PRIM_MODE] = nir->info.tess.primitive_mode;
|
||||
|
||||
STATIC_ASSERT((TESS_SPACING_EQUAL + 1) % 3 == PIPE_TESS_SPACING_EQUAL);
|
||||
STATIC_ASSERT((TESS_SPACING_FRACTIONAL_ODD + 1) % 3 ==
|
||||
PIPE_TESS_SPACING_FRACTIONAL_ODD);
|
||||
STATIC_ASSERT((TESS_SPACING_FRACTIONAL_EVEN + 1) % 3 ==
|
||||
PIPE_TESS_SPACING_FRACTIONAL_EVEN);
|
||||
|
||||
info->properties[TGSI_PROPERTY_TES_SPACING] = (nir->info.tess.spacing + 1) % 3;
|
||||
info->properties[TGSI_PROPERTY_TES_VERTEX_ORDER_CW] = !nir->info.tess.ccw;
|
||||
info->properties[TGSI_PROPERTY_TES_POINT_MODE] = nir->info.tess.point_mode;
|
||||
}
|
||||
|
||||
if (nir->info.stage == MESA_SHADER_GEOMETRY) {
|
||||
info->properties[TGSI_PROPERTY_GS_INPUT_PRIM] = nir->info.gs.input_primitive;
|
||||
info->properties[TGSI_PROPERTY_GS_OUTPUT_PRIM] = nir->info.gs.output_primitive;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue