mesa/st: precompile with API pointsize only if the shader doesn't have pointsize
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 3 Mar 2022 02:47:22 +0000 (21:47 -0500)
committerMarge Bot <emma+marge@anholt.net>
Wed, 9 Mar 2022 05:10:21 +0000 (05:10 +0000)
this is a more accurate hint, and maintains the existing behavior given
subsequent changes to this area

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15228>

src/mesa/state_tracker/st_program.c

index 6dc58ae..0b3adea 100644 (file)
@@ -2022,7 +2022,8 @@ st_precompile_shader_variant(struct st_context *st,
           prog->Target == GL_TESS_EVALUATION_PROGRAM_NV ||
           prog->Target == GL_GEOMETRY_PROGRAM_NV) {
          if (st->lower_point_size && !st->ctx->VertexProgram.PointSizeEnabled)
-            key.export_point_size = is_last_vertex_stage(st->ctx, prog);
+            key.export_point_size = is_last_vertex_stage(st->ctx, prog) &&
+                                    !nir_find_variable_with_location(prog->nir, nir_var_shader_out, VARYING_SLOT_PSIZ);
       }
       key.st = st->has_shareable_shaders ? NULL : st;
       st_get_common_variant(st, prog, &key);