mesa/st: handle running nir lower passes for ucp and psiz in tess stage

if tess is the last shader program to run then we need to perform these
lowering passes at that time rather than during the vs

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5885>
This commit is contained in:
Mike Blumenkrantz 2020-07-16 09:39:16 -04:00 committed by Marge Bot
parent db165e9db3
commit 7eb5fd98fd
2 changed files with 7 additions and 16 deletions

View file

@ -225,16 +225,16 @@ st_update_vp( struct st_context *st )
key.clip_negative_one_to_one =
st->ctx->Transform.ClipDepthMode == GL_NEGATIVE_ONE_TO_ONE;
if (!st->ctx->GeometryProgram._Current) {
if (!st->ctx->GeometryProgram._Current &&
!st->ctx->TessEvalProgram._Current) {
/* _NEW_POINT */
key.lower_point_size = st->lower_point_size &&
!st_point_size_per_vertex(st->ctx);
}
/* _NEW_TRANSFORM */
if (st->lower_ucp && st_user_clip_planes_enabled(st->ctx) &&
!st->ctx->GeometryProgram._Current)
key.lower_ucp = st->ctx->Transform.ClipPlanesEnabled;
/* _NEW_TRANSFORM */
if (st->lower_ucp && st_user_clip_planes_enabled(st->ctx))
key.lower_ucp = st->ctx->Transform.ClipPlanesEnabled;
}
simple_mtx_lock(&st->ctx->Shared->Mutex);
st->vp_variant = st_get_vp_variant(st, stvp, &key);

View file

@ -260,7 +260,7 @@ st_invalidate_state(struct gl_context *ctx)
/* Update the vertex shader if ctx->Point was changed. */
if (st->lower_point_size && new_state & _NEW_POINT)
st->dirty |= ST_NEW_VS_STATE | ST_NEW_GS_STATE;
st->dirty |= ST_NEW_VS_STATE | ST_NEW_TES_STATE | ST_NEW_GS_STATE;
/* Which shaders are dirty will be determined manually. */
if (new_state & _NEW_PROGRAM) {
@ -724,15 +724,6 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe,
st_init_extensions(screen, &ctx->Const,
&ctx->Extensions, &st->options, ctx->API);
/* FIXME: add support for geometry and tessellation shaders for
* lower_point_size
*/
assert(!ctx->Extensions.OES_geometry_shader || !st->lower_point_size);
assert(!ctx->Extensions.ARB_tessellation_shader || !st->lower_point_size);
/* FIXME: add support for tessellation shaders for lower_ucp */
assert(!ctx->Extensions.ARB_tessellation_shader || !st->lower_ucp);
if (st_have_perfmon(st)) {
ctx->Extensions.AMD_performance_monitor = GL_TRUE;
}