Welcome to MSDN Blogs Sign in | Join | Help

April 2008 - Posts

(Charles - n) + (George + n) != Charles + George

Or to rephrase the title, in the land of parallel processing you can rob Peter, pay Paul, and have everybody end up richer. I once did some consulting for a game that was having performance problems. It used a sophisticated visibility system which split

Important suggestion from the MVP Summit

Once a year, a group of MVPs ( "Microsoft Valued Professionals" ) fly out to Seattle to meet with Microsoft product teams and discuss what's good, what's bad, and where things ought to go in the future. This can sometimes degenerate into a couple

Stalls part two: beware of SetData

ajmiles got it in one . This harmless looking code: vertexBuffer.SetData(particlePositions); graphicsDevice.VertexBuffer = vertexBuffer; graphicsDevice.DrawPrimitives(...); will cause a pipeline stall if the CPU reaches the SetData call for frame #2 before

Stalling the pipeline

Normally, the CPU and GPU run in parallel. Framerate = max(CPU time, GPU time) . If your code causes a pipeline stall, however, the processors must take turns to run while the other one sits idle. Yikes! Now framerate = CPU time + GPU time . In other

Shawn's Holistic Detective Agency

Ok, I admit it. I oversimplified , again . But this is the last time, I promise! To obtain maximum parallelism between different stages in a pipeline, you should ideally buffer up an entire frame of data in between each stage. This is exactly what happens

I love this time of year

Driving home from work this evening was pretty much a textbook demonstration of advanced lighting techniques as the sun set behind the mountains. Just beautiful.

Santa's production line

I oversimplified when I described the GPU as a single elf named George . In fact, a modern graphics card has a complex pipeline with hundreds of elves working in parallel. In the same way that the CPU records drawing commands into a buffer, then the GPU

How to tell if you are CPU or GPU bound

We have a game. We want to know whether it is limited by CPU or GPU performance. There are three possibilities: It could be CPU bound It could be GPU bound The CPU and GPU could be exactly balanced There is no direct way to measure this, but we can work

Lost in translation

In my previous post I skimmed over the details of exactly what I meant by translating instructions from CPU to GPU format. Here is what usually happens: Your Draw method issues graphics calls, which are recorded into a buffer Your Draw method finishes
 
Page view tracker