Skip to content

60%+ FPS loss in Forward+ rendering performance compared to 4.6.3 #119963

@Image-unavailable

Description

@Image-unavailable

Tested versions

  • reproducible in: 4.7 beta 4, possibly earlier betas
  • not reproducible in: 4.6.3 and earlier

I have bisected the issue down to commit 7b7bd1dceab61b7a5e6b6da10dd091d73549dd50, from PR #108219.

System information

Godot v4.7.beta4.mono - Linux Mint 22.2 (Zara) on X11 - X11 display driver, Multi-window, 1 monitor - Vulkan (Forward+) - dedicated AMD Radeon RX 570 Series (RADV POLARIS10)

Issue description

I noticed a severe (60%+) FPS loss in the Bistro demo with Forward+, from 189 in 4.6.3 to 75 in 4.7 beta 4. This is without any enviroment node postprocessing and default shadow settings. Mobile and Compatibility renderers are unaffected.

The scene, as seen in 4.7 beta 4:
Image

Running the visual profiler shows significantly increased opaque render times compared to 4.6.3.

4.6.3:
Image

4.7 beta 4:
Image

Radeon Developer tools point at a significant increase in the standard material's fragment shader VGPR usage between 4.6.3 and 4.7 beta 4 (84 to 256), causing a drop in occupancy from 3 to 1.

4.6.3:
Image

4.7 beta 4:
Image

I do not know for sure whether the reason for the performance loss is solely due to occupancy or if there's something else going on in the shader, but it feels like such low occupancy on its own could be a plausible cause of the problem.

Steps to reproduce

This assumes the MRP being set up with Godot 4.6.3.

Testing:

  • if Godot is open, close it (to ensure VRAM is freed if on <=4GB VRAM card)
  • open 4.6.3, launch project through "Run", and not "Edit"
  • see the FPS counter in the top left
  • exit
  • open 4.7 beta 4, launch the same project trough "Run" and not "Edit"
  • see the FPS counter in the top left
  • observe the drop in performance between 4.6.3 and 4.7 beta 4

Minimal reproduction project (MRP)

Setup:

  • download Bistro scene from here: Lumberyard Bistro Reference Scene #74965
  • extract as new project
  • open project with 4.6.3 and not 4.7 beta 4
  • add these two files to the project root:
  • remove the .txt suffix from the two files since otherwise GitHub won't let me upload them
  • set MainScene-lite.tscn as default scene
  • configure game to run in fullscreen, disable vsync
  • see "Steps to reproduce" section

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

Status
Release Blocker
Status
Done

Relationships

None yet

Development

No branches or pull requests

Issue actions