0

im using C# and Opentk to render voxels, i used display list which were fine but slow, so i switched to VBO, since then every time im rendering something with vbo, there are wierd sounds and beeping from my computer (very low volume). sounds like from the gpu i think.

  • when im switching back to display list or direct calls, the beeps stop.
Nicol Bolas
  • 449,505
  • 63
  • 781
  • 982
SharkDX
  • 86
  • 1
  • 5
  • That's electrons having an orgy down thar! – user1095108 Mar 06 '13 at 14:12
  • I don't know why it got down voted (+1 from me anyway), but it's actually a valid question. I'm having the same issue myself - my laptop starts squeaking an beeping like mad as soon as I start my OpenGL process. It's not loud at all but since I can't stop it, it's very annoying. I read somewhere that limiting the FPS to 60 helps, but don't believe that - the sound is just a bit lower and harder to hear, but it's still there. Any definitive solutions, anyone? – Piotr Justyna Apr 05 '13 at 09:56

1 Answers1

2

What you're hearing are the switching voltage regulators working hard to keep the GPUs power supply stable. Everytime you send a command to the GPU it's power requirements increase. Using immediate mode the duty cycle between high demand and low demand is low, so the short impulses of power can be satisfied by the decoupling and filter capacitors. Display lists keep the power requirement up so that the voltage regulators have to switch up, then keep a "steady" high power output until the list is done.

Now when you are rendering VBOs and you can hear the regulators working, this means that you use about 50% of the GPUs capabilities and the regulators are constantly varying between power requirements. Your best course of action would be to increase the number of primitives processed with a single glDraw… call. Right now the GPUs finishes drawing before the next glDraw… comes in, so you're sort of starving it.

datenwolf
  • 159,371
  • 13
  • 185
  • 298
  • +1 Interesting explanation. However, I already display ~1M triangles per frame - are you sure it's about starving the GPU? (Btw, I use flat shading, so the fragment shader has mostly nothing to do) – Piotr Justyna Apr 05 '13 at 10:05
  • @PiotrJustyna: Modern GPUs execute all shader stages in the same circurity. Also you don't hear the individual triangles/fragments being processed, but the intermittent intervals in which the load on the GPU changes. This can be, because the GPU is waiting for V-Sync, or because the CPU can't keep up with feeding it or making it process data, or similar. Also 1M triangles per frame isn't that much. At 60 Hz framerate that would be only 60M triangles, while modern GPUs can easily process up to 500M triangles per frame, if utilized optimally. – datenwolf Apr 05 '13 at 11:00
  • Interesting. What do you mean by "*circurity*"? It happens with and without V-Sync, CPU definitely keeps up as it's only running the main loop feeding the GPU with never-changing vertices. The only thing I observed is, the more triangles I use, the lower the noise - it indicates lower frequency, but frequency of *what* exactly? – Piotr Justyna Apr 05 '13 at 11:31
  • @PiotrJustyna: By circurity I mean the parts on the GPU that do the calculations. In older GPU generations there were different circuits for vertex and fragment shader processing. Ever since Shader Model 3 (circa 2006) this is no longer the case. Also it's not so much the frequency that changes (that's about the framerate), but the duty cycle between high and low loads. – datenwolf Apr 05 '13 at 16:46