xenoglyph, on 12 November 2012 - 09:34 PM, said:
Have you even looked or are you just spouting off? The game client makes -extensive- use of multithreading and utilizes all 4 of my cores equally. I'm not sure if you're familiar with software engineering at all, but deciding on a multithreaded approach is a major design decision that's made at the beginning.
He's referring to an optimization in DX11 where the API itself is multithreaded. This can be a large improvement in CPU bound areas.
Basically, your CPU is going to build a command buffer for your GPU (CPU translates draw calls into a series of GPU commands, then stored in memory). Your GPU can execute these draw calls at the same time that the CPU is issueing new ones. This means, however, if you are CPU bound, your GPU will be waiting for your CPU to issue new commands. DX11 allows all of your cores to allocate extra resources to building your buffer. In the end, DX11 can help alleviate CPU bottlenecks, in situations where your GPU is waiting on commands from your CPU.
It's difficult to give a straight answer to someone if they ask, "What runs better? DX9 or 11?" So to help, I'll explain to you all a few key differences
First, before getting into a few more technical aspects, I just want to say that there are MANY areas in DX11 which boost performance over DX9. However, there are also many areas of DX11 (many of which stem from DX10) that improve graphics (which, as most things that improve graphics, are detrimental to your framerates). In the end, whether DX11 will dip framerates, or increase them, is really up to what features the developers of the game you are playing decide to implement. Many developers try to go with a kind of balanced approach, squeezing the largest graphical increase out with the smallest hit to your FPS (that's actually overall what tessellation itself was meant to do, but I'll get to that).
I'm not going to get very technical here, but here's the gist of DX9 vs DX11 (11 also including what was added in 10)
Tessellation:
Surfaces in games are made up of polygons, that is, lots of little 2D shapes, making nice little wire frames. You can then imagine these wire frames are covered in fabric, making all of your textures. Imagine a flat surface, like a wall. It can be made with two giant triangles. But if you have something complicated, like a circle, you need MANY more than two triangles. If you don't, it's going to be very bumpy and ugly. To get around this problem in the past, developers use artists to make 2D things look 3D. Like a painting, the artist will make fake little shadows on the ground to look like rocks and such. Tessellation is a method of vastly increasing polygon counts, without hurting your framerates too much. Well... Compared to other methods, it doesn't hurt your framerate as much. Tessellation hardware is getting better though
Compute shading:
Simply put, the DX11 API allows for use of the video card for non-graphics tasks, similar to ATI Stream, Nvidia CUDA, OpenCL, and HLSL SM5.
Texture compression:
Textures in games have to be compressed, and the algorithms used for this hadn't been updated in a VERY long time. They are updated for DX11. Allows for more efficient compression, and higher quality textures.
These are some major changes, but there are many other minor ones, and many cool things you can do with DX11, like improvements to performance with AA enabled, DX11 shadows (DX10 made shadows soft, DX11 made them softer the farther away from objects they get), parallax occlusion mapping (adds depth, without any added polygons), displacement mapping (similar to tessellation), generally there are improvements to techniques used for motion blur, and depth of field, and things like particles and leaves can cast shadows on each other. There's probably more I can't think of at the moment, but most changes are really dependent on what a developer implements. Many of these graphical improvements can be difficult for a video card to render, which may lower your FPS. This does not mean DX11 is "slow" or "buggy" however.
Also, DX11 cannot be run on DX10, or DX9 hardware, due to hardware limitations.
I hope this helps