Nintendo 3DS hardware thread

Fixed Function Brains

Given that Nintendo have gone for a bunch of fixed function effects with some parametrised knobs for developers to tweak does this mean that devs stop faffing around trying to re-invent the wheel when implementing effects and instead just focus on creating great titles? Or, are we going to end up with DS titles all looking the same or there being a limited sub-set of "looks" that titles can go for?

Either way, it's an interesting move, and I can't help but look at the number of times I've argued with devs about the insanity of the inexorable move towards completely unnecessary degrees of programmability. Given how big a role power consumption plays in limiting mobile performance you have to wonder...

Mumble..mumble..mutter....

John.
 
Given that Nintendo have gone for a bunch of fixed function effects with some parametrised knobs for developers to tweak does this mean that devs stop faffing around trying to re-invent the wheel when implementing effects and instead just focus on creating great titles? Or, are we going to end up with DS titles all looking the same or there being a limited sub-set of "looks" that titles can go for?

Either way, it's an interesting move, and I can't help but look at the number of times I've argued with devs about the insanity of the inexorable move towards completely unnecessary degrees of programmability. Given how big a role power consumption plays in limiting mobile performance you have to wonder...

Mumble..mumble..mutter....

John.
Did you watch the interview between T.Sweeney and A.Richard (@semiaccurate)? Because you would find it interesting, at some point Richard speak about it and especially about its advantage in regard to power consumption.
Sweeney didn't agree. Overall it was power considerations and dealing with more pixels vs doing more and cleverer things to the pixels you can compute. Sweeney thinks that IQ would have been now without the fixed function pipeline enforce to GPUs by dominating API (most likely at the cost of lower resolution).

But I'm willing to have more informations about the 3DS as it will be the only valid comparison will be able to do between up-to-date fixed function hardware and programmable hardware (both in perfs/Watts and Perfs/mm²).
 
IMO the Japanese have atrocious taste in what makes a pleasing image ... their love of 60 Hz is not nearly enough to offset their love of aliasing in my view.

They were late doing decent texture filtering, they are late doing decent edge AA.
 
IMO the Japanese have atrocious taste in what makes a pleasing image ... their love of 60 Hz is not nearly enough to offset their love of aliasing in my view.

They were late doing decent texture filtering, they are late doing decent edge AA.

Funny you say that given that Nintendo DS had free edge AA...
 
Okay they aren't late ... they are schizophrenic.

Nah, just the consequence of going with completely different IP this time, presumably one they had little real input in designing.

While we're on the topic, I've never heard of any other architecture that does edge-AA that's draw order independent. The form that does require depth sorting hasn't been very popular in consumer gaming - I hear it's a feature that was present in hardware but made inaccessible on older nVidia GPUs, in order to give the professional variants more of a selling point.

The DS approach is fairly interesting... instead of keeping a framebuffer of the top pixel it keeps the top two pixels, which I suppose means that the depth of both must be kept too, and a depth fail would repeat against the back-pixel depth. Coverage would be stored in a buffer as well, and a post-pass on the pixels would blend the top two based on the top coverage value. It's basically a form of hardware depth pruning with two layers - technically it fails where edges overlap, but that happens infrequently enough and is a subtle enough error for it to look not look very bad.

All of this really can only work for a tiler, or in DS's case, scanline renderer. And not a TBDR or early-z either (or at least not very well), since you're relying on overdraw towards one level. I'm not sure how much overdraw is typically caught at that first level... would be interesting to see a histogram.

This method is actually very similar to the blending done in 2D on the GBA (and by inheritance DS's 2D).. not surprising, since apparently they were both designed by ARM.

So anyway, point of long rambling post in case it wasn't clear: I'm not sure a practical edge-AA implementation is really very feasible under most designs. Hence why the industry has focused on FSAA instead. I'm guessing bandwidth is a concern for MSAA in this design.. but I don't really know what the exact bottlenecks would be.
 
I too think the move to a more restrained pipeline (by today's standards) in the 3DS while still allowing for contemporary appearance ™ could turn out overall beneficial to the user experience on the platform.

That said, the PICA design still features vertex shaders and texture combiners, so people could still knock themselves silly with pipeline bending.
 
Did you watch the interview between T.Sweeney and A.Richard (@semiaccurate)? Because you would find it interesting, at some point Richard speak about it and especially about its advantage in regard to power consumption.
Sweeney didn't agree. .
I think you'll find John has been in sufficient meetings with at least one of those developers to know their views.
 
MfA said:
IMO the Japanese have atrocious taste in what makes a pleasing image ... their love of 60 Hz is not nearly enough to offset their love of aliasing in my view.
Here's a philosophical question though - are things like "pleasing" image actually objectively quantifiable?
Aliasing is bad because it's opposite from film/eye reality, which is usual CG objective. But clearly that's not enough to make it aesthetically displeasing to everyone.
Sarcasm aside, I've worked with people who expressed strong preference to sharp/aliased images over properly filtered stuff(and indeed, many from Japan), and there were also cases of using sharp-lines as visual direction on offline generated content (hence completely unrelated to hw restrictions).
 
The origin of the word explains why alaising is displeasing: it's a visual effect that takes the place of what was intended.

I'm not sure I'd call it "sharp" either (jagged is more like it.) What it is, though, is representative of less detail than an anti-alaised image: lesser definition.
 
So can any comparisons be made between this device's GPU and the Hollywood GPU in the Wii?

Or the Xbox(1) Nvidia gpu? I know that the original box' had only 2 shaders...

At the very least we can say that so far it looks to be ahead of the last generation in terms of capable effects right?


Edit: for that matter.. What will the real world results be from the Pica 200 GPU? Won't it be hampered with constantly rendering the 3D effect? I know that messes with poly output..
Will there be visual benefits for turning the "3D mode" off? Resolution jump (as it's only rendering once), AA, more polys etc?

All of this stuff about the GPU is neat on paper, but when the thing has to render the images twice for each eye and double up the polys.. I just wonder how much mileage we're really going to get out of it.
 
Last edited by a moderator:
Before we try to look at real world performance we'd have to know the clock speed. It could be anything from 100Mhz to 400Mhz+ which is a massive variance in performance.
 
According to IGN's 3DS Q&A, it's possible to have better graphics for the 3DS games if it's not built for 3D. I was wondering, is it possible for a console game to have PC like setting where you can op for better graphics/frame rate by disabling 3D, and another setting for 3D?
 
So would this apply to the 3DS as well? A developer opting out of the "3D" setting?

Although I guess this wouldn't be very common.
 
Either way, it's an interesting move, and I can't help but look at the number of times I've argued with devs about the insanity of the inexorable move towards completely unnecessary degrees of programmability. Given how big a role power consumption plays in limiting mobile performance you have to wonder...

I have often wondered where we would have been today if desktop graphics had remained within the 25W limit imposed by the AGP socket, and/or not have evolved completely at odds with consumer trends towards mobile computing.

The point of an Application Specific Integrated Circuit is to improve efficiency by being, well, application specific. As someone who has followed the evolution of CPUs, it is remarkable that after the flop of iAPX 432 back in 1981, and definitely after Hennessy and Patterson published their work on computer architecture, CPU design has been very aware of the tradeoff of complexity vs. efficiency at a level which I haven't seen even today in GPU architectural discussion. (Probably due to my limited perspective, to be honest.) Power efficiency concerns only serves to drive home the point all the more.

Even at this forum, where the general level of discourse is relatively high, it is remarkable how little has been made of the drastic improvements in battery life (and thus, real life usability) that Apple has made with the iPhone 4 vs. its predecessor and competitors, and that Apple obviously chose to reduce the performance they could get from their A4 in order to optimise for power consumption, demonstrating their view of the order of priorities for mobile devices.

If using some fixed functionality lets the 3DS do the job at lower cost and and lower battery drain, those are very compelling arguments. After all, those kinds of arguments are what justifies having dedicated logic in the first place.
 
I'm sorry to ask such a basic question- but what is the primary difference between a programmable logic vs fixed logic? Furthermore, how does it (positively) effect power drain?

Is that like having a particular part of the GPU do nothing but apply AA? So more features are "Fixed" and "guaranteed" (so to speak) and leaves the developers with little in the way of wiggle room?
 
I'm sorry to ask such a basic question- but what is the primary difference between a programmable logic vs fixed logic? Furthermore, how does it (positively) effect power drain?
I'm sure the b3d audience with rich hw design background could pile you up with facts here, but in the broadest, perhaps philosophical perspective, the difference is the same as between potential and accomplishness. You can think of it all as a spectrum - fully programmable logic sitting at the 'potential' extreme of the spectrum, and fully fixed logic sitting at the 'accomplished' extreme of the spectrum. A fully-programmable logic hardly knows to do anything resembling a compete task from the task domain of interest, but it can do all the necessary building ops from the domain (and perhaps other domains too), and it can also acquire knowledge how to arrange those in a meaningful fashion for the domain. At the opposite end is the fully-fixed logic, which knows a-priori all the tasks of the domain and has them readily implemented as functions, or IOW, is already accomplished. Now, clearly, in that second case somebody has to draw a line somewhere re what constitutes the 'complete list of tasks from the domain' in terms of practice, ergo the fixedness of the approach.

Of course, in reality there's hardly such things as fully-programmable logic and fully-fixed logic - nether contemporary CPUs are entirely free of fixed functionality, nor GPUs were ever devoid of any programmability (here we use them as two extremes in the spectrum when it comes to graphics pipelines), as both extremes - absolute potential, and absolute accomplishness, would've been useless to us.

Now, potential implies an associated cost of effort needed to transform that into accomplishness for any give task (which is what we are ultimately after when we employ the potential). That is, if i could do just two ops - plus and multiplication, it'd take some extra effort for me, outside of those original ops, to carry out something like (a + b) * c, which happens to be my task for today. That extra something is the ability to arbitrarily arrange my two ops, and arbitrarily route intermediate results, so that i could accomplish today's task. Remember that i'm an entity full of potential and not much a-priori knowledge of the task at hand.

On the other hand, if i were somebody who could only do f(a, b, c) = (a + b) * c, and that was all i could do, then there would be no associated extra cost for me to carry out my task today - i don't need extra effort to arrange or route anything arbitrary - the required function is already what i do, and i do it well! Of course, tomorrow the task might be a * (b + c) + d, in which case my second form would be totally screwed. Luckily, my first form would be able to do that, but it would cost it a bit more effort to 'reconfigure' itself for each new day's task.

Now, replace in the above 'me' with 'functional block', 'effort' with 'electricity', and 'days' with any meaningful IC time quanta (say, clocks), and you'd be getting the picture.

Is that like having a particular part of the GPU do nothing but apply AA? So more features are "Fixed" and "guaranteed" (so to speak) and leaves the developers with little in the way of wiggle room?
More or less. Apropos, it was only quite recently that the parts of the modern GPU responsible for AA acquired any programmable value worth speaking of.
 
Back
Top