iris: handle PatchVerticesIn as a system value.

This commit is contained in:
Kenneth Graunke
2018-12-04 14:11:51 -08:00
parent 96bb328e9b
commit 286b8b8f99
4 changed files with 32 additions and 2 deletions
+15 -2
View File
@@ -47,11 +47,24 @@ static void
iris_update_draw_info(struct iris_context *ice,
const struct pipe_draw_info *info)
{
if (ice->state.prim_mode != info->mode ||
ice->state.vertices_per_patch != info->vertices_per_patch) {
if (ice->state.prim_mode != info->mode) {
ice->state.prim_mode = info->mode;
ice->state.dirty |= IRIS_DIRTY_VF_TOPOLOGY;
}
if (info->mode == PIPE_PRIM_PATCHES &&
ice->state.vertices_per_patch != info->vertices_per_patch) {
ice->state.vertices_per_patch = info->vertices_per_patch;
ice->state.dirty |= IRIS_DIRTY_VF_TOPOLOGY;
/* Flag constants dirty for gl_PatchVerticesIn if needed. */
const struct shader_info *tcs_info =
iris_get_shader_info(ice, MESA_SHADER_TESS_CTRL);
if (tcs_info &&
tcs_info->system_values_read & (1ull << SYSTEM_VALUE_VERTICES_IN)) {
ice->state.dirty |= IRIS_DIRTY_CONSTANTS_TCS;
ice->state.shaders[MESA_SHADER_TESS_CTRL].cbuf0_needs_upload = true;
}
}
if (ice->state.primitive_restart != info->primitive_restart ||
+4
View File
@@ -628,6 +628,10 @@ iris_setup_uniforms(const struct brw_compiler *compiler,
}
break;
}
case nir_intrinsic_load_patch_vertices_in:
system_values[num_system_values++] =
BRW_PARAM_BUILTIN_PATCH_VERTICES_IN;
break;
default:
continue;
}
+11
View File
@@ -2245,6 +2245,17 @@ upload_uniforms(struct iris_context *ice,
int plane = BRW_PARAM_BUILTIN_CLIP_PLANE_IDX(sysval);
int comp = BRW_PARAM_BUILTIN_CLIP_PLANE_COMP(sysval);
value = fui(ice->state.clip_planes.ucp[plane][comp]);
} else if (sysval == BRW_PARAM_BUILTIN_PATCH_VERTICES_IN) {
if (stage == MESA_SHADER_TESS_CTRL) {
value = ice->state.vertices_per_patch;
} else {
assert(stage == MESA_SHADER_TESS_EVAL);
const struct shader_info *tcs_info =
iris_get_shader_info(ice, MESA_SHADER_TESS_CTRL);
assert(tcs_info);
value = tcs_info->tess.tcs_vertices_out;
}
} else {
assert(!"unhandled system value");
}
+2
View File
@@ -567,6 +567,8 @@ enum brw_param_builtin {
BRW_PARAM_BUILTIN_TESS_LEVEL_INNER_X,
BRW_PARAM_BUILTIN_TESS_LEVEL_INNER_Y,
BRW_PARAM_BUILTIN_PATCH_VERTICES_IN,
BRW_PARAM_BUILTIN_BASE_WORK_GROUP_ID_X,
BRW_PARAM_BUILTIN_BASE_WORK_GROUP_ID_Y,
BRW_PARAM_BUILTIN_BASE_WORK_GROUP_ID_Z,