Is DirectX throttling Xbox 360 performance?

romiced

Newcomer
It's often been said that one of the many advantages of working on console is that you have a fixed set of hardware to work with, that you can "write to the metal" and code to the "bleeding edge" of the spec. However, our sources suggest that this simply isn't an optionfor Xbox 360 developers. Microsoft doesn't allow it.

Suspicions were first aroused by a tweet by EA Vancouver's Jim Hejl who revealed that addressing the Xenos GPU on 360 involves using the DirectX APIs, which in turn incurs a cost on CPU resources. Hejl later wrote in a further message that he'd written his own API for manual control of the GPU ring, incurring little or no hit to the main CPU.

"Cert would hate it tho," he added mysteriously.

http://www.eurogamer.net/articles/digitalfoundry-directx-360-performance-blog-entry
 
As odd as this sounds, I think this is a smart move ...

It makes BC much easier moving forward and I don't see many games suffering in comparison to the competition.
 
Let's just say that while the statements about libgcm in that blog post are pretty much accurate, the statements about the XDK are not.

I have to agree with Jim on the relative expensiveness of the API, though. Compared to libgcm it's pretty slow, but the two of them are very different beasts.
Case in point, I wrote a D3D in libgcm and it was lighter on the CPU than the XDK in my test scenes. If I had written specialized rendering code directly in gcm, I think the overall cost would have gone down by a lot. On the other hand that leaves you with very hard-coded rendering paths, which makes development a pain.
 
As odd as this sounds, I think this is a smart move ...

It makes BC much easier moving forward and I don't see many games suffering in comparison to the competition.

Bingo, they are setting themselves up brilliantly for the next generation of hardware. I'd wager that some of the major 360 games will run on the 720 at launch. On the other hand I pity the folk that have to get PS3 games working on PS4 hardware.

Incidentally, the "forest" example given in that article isn't really correct. You can draw thousands of trees with a single call if you want on 360, it just depends how you have set things up.
 
I guess that when he stated Cert he is speaking of people at microsoft in charge of certification, right?

As TheChefO says as far as games are not suffering from the comparison with others platforms it's OK for MS. That adds ( as stated in the article ) a lot of ease in the development as games are often developed on PC. It will also help for BC thus that's why people in charge of certification must dislike developers that go to close to the metal.

Ms is doing a lot of work to make Pc and 360 on parity, I've read presentations (2 actually) about multi threaded rendering.
A Detailed Overview of Xbox 360 Direct3D Synchronization and Multithreading.pptx
and
Multi-Threaded Rendering for Games.odp
Directx11 put the 360 and Pc on parity (actually the 360 was ahead).
I hope that the parity in the pc and console realms in regard to those feats will have a synergic effect making best practices "standard.

I don't have enough knowledge to dismiss this person's point but from reading Ms presentation they make clear that the API should not be considered as a burden but something that helps you.
It especially seems to help you with tricky synchronization issues between threads, or deadlock problems.
And MS seems to be seriously working on it, Ms try to please developers as much as they can while keeping the development environment on Pc and 36O as alike as possible. For me this somehow explains the difference in progress on the 360 and the ps3, on the ps3 you see jump in quality whereas on the 360 it looks like a more progressive process.

Other than that it would be really interesting to have that person on board so it could discuss his point with other devs.
 
Incidentally, the "forest" example given in that article isn't really correct. You can draw thousands of trees with a single call if you want on 360, it just depends how you have set things up.

You can use SM3-style instancing or XPS (does anyone actually do that?) to render thousands of trees in a single draw call - but can you reuse the setup cost for these draw calls across frames?
 
Bingo, they are setting themselves up brilliantly for the next generation of hardware. I'd wager that some of the major 360 games will run on the 720 at launch. On the other hand I pity the folk that have to get PS3 games working on PS4 hardware.

Incidentally, the "forest" example given in that article isn't really correct. You can draw thousands of trees with a single call if you want on 360, it just depends how you have set things up.

Isn´t the PS4 just meant to have the next Cell and another Nvidia GPU and "we" are close to the goal?
 
Isn´t the PS4 just meant to have the next Cell and another Nvidia GPU and "we" are close to the goal?

Another NVIDIA GPU, unless it's from the Geforce 6/7 generation (which is unlikely, to put it mildly), will probably have very different command buffer format and semantics.

GPUs evolve under the umbrella of the graphics APIs, and thus don't have to spend silicon on instruction stream-level backwards compatibility like CPUs; this cost is born by the driver.
 
You can use SM3-style instancing or XPS (does anyone actually do that?) to render thousands of trees in a single draw call - but can you reuse the setup cost for these draw calls across frames?

You do still have to setup the textures and (maybe) render states before you are about to render the forest, and there is probably a single d3d "setup" call prior to the draw call. But the overhead still isn't all that much considering that a single call might draw a few thousand objects.

So while he may be right that D3D will have more cpu overhead than doing it without D3D, I don't think it's such a major hit in the grand scheme of things compared to other performance issues like stalls that occur in heavily multi threaded code, etc. Plus the payoff for sticking to the rules I think will be big. Microsoft will get very heavily into digital distribution of games in the future, meaning our games today will be sell-able again in the future not just on the 720 but on their future portable gaming system which I'm sure they will try to make one day when the time is right.


archie4oz said:
Pshaw.., that's cake compared to PS2 support...

True :) But look at it this way. We're 3 to 4 years into this gen and there still is no PS2 support on current PS3's, which from a business point of view isn't ideal. On the other hand, I think the next Xbox hardware will be able to rapidly have backward compatible support, possibly right at launch for major titles. That will make it easy for people to migrate from 360->720 since they can sell the old box and keep playing their games on the new box.
 
Hmmm, I wonder if concern for backwards compatability and enforcing rendering guidelines is what's holding devs back from really pushing the console ala KZ2?

Regards,
SB
 
No. There's no business case for it. As far as we know, Microsoft haven't told any studio "take all the time you need, have all the help you need, hire all the people you need, just show the world the power of the 360" - which is what the KZ2 development looked like from the sofa of a popcorn-eating console warrior.
 
joker454 said:
On the other hand, I think the next Xbox hardware will be able to rapidly have backward compatible support, possibly right at launch for major titles.
If it does, that won't have anything to do with APIs and their associated overheads. IIRC 360 allows people to write stuff pretty damn close to hw (and at least in the past, it allowed you to go closer to hw then PS3 did).

And let's face it - unlike XBox(support for which has been shoddy at best to date) 360 actually has a reasonably sized game library to support.
I also bet full software PS2 would have worked on PS3 ages ago if they didn't change to NVidia GPU. :p
 
Damn! It is the Nvidia GPU again. I am thinking JSH must have pulled all stops to dupe Sony into signing with them at the last moment. If there is one bad move by Kutaragi, it was sleeping in bed with JSH, remember how lovey they were at the 05 conference. I want to see the end of Nvidia in consoles after PS3. Their self serving attitude sucks! BTW how has RSX 45nm transition taking? Nvidia has their own GT200b GPUs out for many months and you can buy GTX 260 at really cheap prices now, still dont understand how come consoles are sold at a loss presently.
 
If it does, that won't have anything to do with APIs and their associated overheads. IIRC 360 allows people to write stuff pretty damn close to hw (and at least in the past, it allowed you to go closer to hw then PS3 did).

Does anyone actually do that on 360? As far as I know the 360 is treated as a PC with d3d used as the default abstraction layer. Do you know of any games that go their own way? I'd be curious to know. I didn't think that was encouraged or even commonly done this gen on 360. In fact, some studios will even have an additional layer (their own in house engine) that layers d3d, which in turn layers the hardware.


And let's face it - unlike XBox(support for which has been shoddy at best to date) 360 actually has a reasonably sized game library to support.
I also bet full software PS2 would have worked on PS3 ages ago if they didn't change to NVidia GPU. :p

The first Xbox was a poor seller so there was no real need to support its games except for the really important ones. I'm actually surprised they got as many Xbox games working on the 360 as they did, but maybe they wanted to test the waters to see how they would sell on Live. The situation is significantly different this gen though where backwards compatibility would be much more beneficial on the next set of hardware.
 
Last edited by a moderator:
joker454 said:
Do you know of any games that go their own way?
I don't know of specific titles but I do remember people starting with PS3 crying about how much more lowlevel access/documentation they had on 360 in the early days. I've been away from consoles for awhile now so I really don't know how much landscape changed since - but honestly, most people I know in this industry are always looking for ways around limitations of default dev environment, regardless of what that might be.
Hell on XBox1, among other things, some went to such lengths as reverse engineering pushbuffers because it allowed them to bypass some API overhead, and I won't even go into what has been done on PS2 that had nothing to do with the way HW was engineered to work (let alone APIs).

The situation is significantly different this gen though where backwards compatibility would be much more beneficial on the next set of hardware.
I think that remains to be seen - anyway, my point was just that future hw design will still be an important factor in what kind of BC we see and how quickly.
 
Suspicions were first aroused by a tweet by EA Vancouver's Jim Hejl who revealed that addressing the Xenos GPU on 360 involves using the DirectX APIs, which in turn incurs a cost on CPU resources.

DirectX on PC is a very heavy framework compared to the console version (very thin close to metal wrapper). And you can write your shaders on microcode (http://msdn.microsoft.com/en-us/library/bb313877.aspx) instead of hlsl if you think you can optimize better than the compiler (or need some console only features). I'd say the performance cost is neglible, if you are using the API correctly. But if you are doing something silly like rendering each plant using a separate render call you might disagree (but coding practices like these are even slower on PC).
 
I hear over and over again from developers, even in interviews, that on the 360 they can code much closer to the hardware than they can do on PC. Which would suggest that they do. Also, considering that the 360 features EDRAM, that's the main bottleneck for PS2 software compatibility on the PS3 right now.

I'm thinking that if the PS4 features a Cell in some form or other (not unlikely) then PS3 software compatibility will be signfiicantly easier on PS4 than PS2 software compatibility on PS3.
 
True :) But look at it this way. We're 3 to 4 years into this gen and there still is no PS2 support on current PS3's, which from a business point of view isn't ideal. On the other hand, I think the next Xbox hardware will be able to rapidly have backward compatible support, possibly right at launch for major titles. That will make it easy for people to migrate from 360->720 since they can sell the old box and keep playing their games on the new box.

Won't games that rely on the 360's EDRAM run into problems, or are you assuming that they're going to dedicate the same amount of EDRAM to the next console?
 
Just how different do you expect the GPU to be?

at the end of the day nvidia offer a single driver for all their gpus so I doubt they are that radically different as stuff that works on RSX won't work on a new GPU.

Are we also expecting the next xbox to include a PowerPC CPU too?
 
Back
Top