diff --git a/src/transform/emit_vertex_point_size.cc b/src/transform/emit_vertex_point_size.cc index 67267e0ab4..319d14434a 100644 --- a/src/transform/emit_vertex_point_size.cc +++ b/src/transform/emit_vertex_point_size.cc @@ -64,14 +64,6 @@ Transform::Output EmitVertexPointSize::Run(const Program* in) { }); out.AST().AddGlobalVariable(pointsize_var); - // Build the AST expression & statement for assigning pointsize one. - auto* one = out.create( - Source{}, out.create(Source{}, f32, 1.0f)); - auto* pointsize_ident = out.create( - Source{}, out.Symbols().Register(kPointSizeVar)); - auto* pointsize_assign = - out.create(Source{}, pointsize_ident, one); - // Add the pointsize assignment statement to the front of all vertex stages. CloneContext(&out, in) .ReplaceAll( @@ -79,6 +71,15 @@ Transform::Output EmitVertexPointSize::Run(const Program* in) { if (func->pipeline_stage() != ast::PipelineStage::kVertex) { return nullptr; // Just clone func } + + // Build the AST expression & statement for assigning pointsize one. + auto* one = out.create( + Source{}, out.create(Source{}, f32, 1.0f)); + auto* pointsize_ident = out.create( + Source{}, out.Symbols().Register(kPointSizeVar)); + auto* pointsize_assign = out.create( + Source{}, pointsize_ident, one); + return CloneWithStatementsAtStart(ctx, func, {pointsize_assign}); }) .Clone();