PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATI Xenos - 1080p im eDRAM der X360 möglich?


Riptor
2007-01-09, 22:21:39
Vor einiger Zeit hat ja Beyond3D den Xenon in der X360 auseinandergenommen und es gab da einen sehr informativen wie auch komplizierten Artikel zur GPU:

ATI Xenos: XBOX 360 Graphics Demystified (http://www.beyond3d.com/articles/xenos/index.php?p=05)

Sie kamen da zu folgender Schlussfolgerung:

"With the eDRAM being the primary rendering target for Xenos there looks to be a potential issue with rendering FSAA at High Definition TV (HDTV) resolutions: space. With only 10MB of rendering space available, the resolutions and FSAA depths that can be natively supported by the eDRAM could be limited. If we look back to our 512MB Radeon X800 XL review we see that the calculation for the size of frame-buffer requirements with FSAA goes along the following lines:

Back-Buffer = Pixels * FSAA Depth * (Pixel Colour Depth + Z Buffer Depth)
Front-Buffer = Pixels * (Pixel Colour Depth + Z Buffer Depth)
Total = Back-Buffer + Front-Buffer

Now, in the case Xenos the front-buffer only exists in UMA memory, so only the back-buffer size is of concern for the eDRAM space.

At the moment XBOX 360 is supporting 720p (progressive scan) and 1080i (interlaced) resolutions - 720p equates to 1280x720 pixels and 1080i equates to 1920x1080 pixels, however interlacing means that only the odd horizontal lines are refreshed on one cycle and the even lives on the next, which means that the frame buffer is only ever needing to handle 1920x540 pixels per refresh.

Here are the frame-buffer sizes for these HDTV resolutions and 640x480 with a colour depth of 32-bit (which will cover both the standard integer 32-bit format and the FP10) and a 32-bit Z/stencil buffer. Naturally, the sizes will increase if a higher Z-Buffer depth or a higher bit colour depth is used:

(MB) || No FSAA || 2x FSAA || 4x FSAA
640x480: 2.3 || 4.7 || 9.4
1280x720: 7.0 || 14.0 || 28.1
1920x540: 7.9 || 15.8 || 31.6"

Hier sind jetzt einige Sachen, die ich immer noch nicht richtig verstanden habe:

1. Die Rechnung! Kann mir das jemand mal am Beispiel 640x480 vorrechnen? Verstehe das nicht bzw. komme nicht zum selben Ergebnis!

2. 1080i wird mit 1920x540 gleichgesetzt, jedenfalls in Bezug auf den Speicher im Framebuffer. Wie siehts dann aber bei 1080p aus?

Bruce Dawson, Software Design Engineer von Microsoft sagt dazu folgendes:

"1080p is a higher bandwidth connection from the frame buffer to the TV than 1080i. However the frame buffer itself is identical. 1080p will look better than 1080i--interlaced flicker is not a good thing--but it makes precisely zero difference to the game developer. Just as most Xbox 1 games let users choose 480i or 480p, because it was no extra work, 1080p versus 1080i is no extra work. It's just different settings on the display chip.

Inevitably somebody will ask about field rendering. Since interlaced formats display the even lines on one refresh pass and then the odd lines on the next refresh pass, can't games just render half of the lines each time? Probably not, and even if you could you wouldn't want to. You probably can't do field rendering because it requires that you maintain a rock solid 60 fps. If you ever miss a frame it will look horrible, as the odd lines are displayed in place of the even, or vice-versa."

Quelle (http://www.1up.com/do/userFeedbackDetail?cId=3154537&r=7558951&ct=NEWS)

Gilt das jetzt nur, wenn konstante 60 FPS erzielt werden und somit jedes zweite Frame fallen gelassen werden kann? Anders kann ich mir seinen Satz "1080p versus 1080i is no extra work" erklären...

3. Wäre die X360 also in der Lage, 1080p-Games mit Hilfe des eDRAMs zu rendern?

Coda
2007-01-09, 22:22:33
1080i sollt eigentlich auch 1920x1080 sein. Das bezieht sich ja nur auf die Übertragung in Halbbildern statt Ganzen.

3. Wäre die X360 also in der Lage, 1080p-Games mit Hilfe des eDRAMs zu rendern?

So wie die Idee geht müsste man das Scanout und die Bilderstellung exakt synchronisieren. Ich glaube nicht dass die Hardware dazu fähig ist.

Was natürlich geht ist dass man das Bild im eDRAM in Tiles berechnet.

Riptor
2007-01-09, 22:33:18
Aber warum ist 1080i auch 1920x1080??? Ich mein, effektiv werden ja nur Halbbilder produziert, also müsste doch 1920x540 weniger Speicher benötigen, als ein "echtes" 1080p Bild? Liegt halt daran, dass ich deren Rechnung nicht verstehe.

Wenn man das Bild exakt synchronisieren könnte, dann würde das ja auch nur mit jedem zweiten Bild gehen, oder? Also könnte man höchstens 30 FPS schaffen, oder?

Das mit den Tiles ist ja interessant, damit beschäftigt sich ja Beyond3D in Bezug auf FSAA... Würde das Prinzip ebenso mit einem 1080p-Bild ohne FSAA funktionieren? Sprich: Tiling benötigt etwas mehr Rechenleistung, aber sprengt damit nicht den begrenzten eDRAM-Speicher?

Gast
2007-01-09, 22:33:36
1080i sollt eigentlich auch 1920x1080 sein. Das bezieht sich ja nur auf die Übertragung in Halbbildern statt Ganzen.



So wie die Idee geht müsste man das Scanout und die Bilderstellung exakt synchronisieren. Ich glaube nicht dass die Hardware dazu fähig ist.

Was natürlich geht ist dass man das Bild im eDRAM in Tiles berechnet.


Was sollen denn bitte Halbbilder bringen wenn es nicht die Halbbilder von unterschiedlichen Bildern sind?!

Coda
2007-01-09, 22:39:37
Hast recht. Brainfart... Es wird echt nur 1920x540 benötigt. Trotzdem bleibt die Frage ob die Hardware es dann auch so ausgeben kann (Interleaced).

Das Tiling kostet immer Performance, außerdem muss die App dafür einiges an Aufwand treiben.

Riptor
2007-01-10, 16:36:08
Noch jemand ein paar Antworten auf meine Fragen? Ist nicht wirklich klarer geworden...

Ailuros
2007-01-10, 16:40:22
ATI have been quoted as suggesting that 720p resolutions with 4x FSAA, which would require three tiles, has about 95% of the performance of 2x FSAA.

Wobei es mir schwer faellt es zu glauben; ebenso wie NV eben gerade behauptet dass 16x coverage in etwa so schnell ist wie 4xMSAA :rolleyes:

Coda
2007-01-10, 16:45:50
Kommt halt drauf an wie groß der Tiling-Overhead ist und wieviel zusätzliche Vertexleistung dafür aufgebracht werden muss. Theoretisch haben sie ja recht ;)

Ailuros
2007-01-10, 17:03:34
Best case scenarios sind langweilig :P

Coda
2007-01-10, 17:08:16
Ich weiß. Aber es liegt dabei am Programmierer und nicht an der GPU wie gut das funktioniert.

Riptor
2007-01-10, 17:09:46
Keine ne Antwort für mich? :( Ich blicks nicht...

Coda
2007-01-10, 17:12:26
Was denn genau nicht?

Gast
2007-01-10, 17:12:27
Die Antwort auf die Eingangsfrage ist: Nein, sie kann nicht 1080p rendern. Jedenfalls nicht in ausreichenden fps. Es wird auch erklärt, warum 1080*540 nach nichts aussieht, aber nur das möglich ist.
Vielleicht ist allerdings mal 1080p24 für Rollenspiele oder ähnlich lahmen Content möglich?

Ailuros
2007-01-10, 17:13:46
Keine ne Antwort für mich? :( Ich blicks nicht...

Die Entwickler haben so wie es sich herumspricht keine Lust das tiling weitgehend zu benutzen hauptsaechlich wegen dem hoeheren Aufwand, was Dir Coda aber schon gesagt hat.

Die Antwort zum Thread-Titel ist ja wenn ohne MSAA; mit MSAA liegt es dann eher an dem was sich jeder Entwickler fuer sein Spiel vorgestellt hat.

Gast
2007-01-10, 17:15:38
Insgesamt allerdings eh fraglich, ob via VGA an den meisten Fernseher überhaupt 1080p unterstüzt wird. Meist geht das nur über HDMI. Also wahrscheinlich eher eine akademische Diskussion.

Riptor
2007-01-10, 17:17:23
Ok. Was ich noch nicht verstehe, ist die Rechnung. Ansonsten fasse ich mal zusammen:

1080i ist nicht gleich 1080p (warum sagt der MS Mensch dann, es gäbe keinen Unterschied???), weil nicht genug FPS produziert werden können... Soweit, so gut, nur warum geht das nicht? Ist das Bild in 1080p zu groß für den Speicher?

@ Gast: 2048x1536 gehen über VGA. Zumindest bei Röhrengeräten. Aber hast natürlich recht, die Anzahl an Geräten, die 1080p via VGA unterstützen, dürfte verschwindend gering sein. Es tauchen aber immer wieder Bilder von einer X360 mit integriertem HDMI-Port auf... Da wäre die Diskussion ja dann wieder interessant!

Ridge Racer 7 z.B. läuft auf der PS3 in 1080p und 60 FPS (!!!), RR6 (X360), was quasi nur ein weniger umfangreiches RR7 ist, läuft ebenfalls in 60 FPS, aber eben nur 720p/1080i...

Gast
2007-01-10, 17:25:52
Er sagt: es kommt darauf an. Wenn die Fields nur sich unterscheiden zwischen ungeraden und geraden Zeilen, dann kann man sauber deinterlacen und 1080i ist von 1080p nicht zu unterscheiden. Problem: für 1080p60 braucht man irre Bandbreite und Ram. Nicht da.

Unterscheiden sich beide Fields, siehts Mist aus und man bekommt Artefakte. Dafür würde aber die Bandbreite eventuell reichen. Aber kein empfehlenswerter Weg. Dann lieber 720p.

Riptor
2007-01-10, 17:32:18
Ahhh... :) Ok, so verstehe ich es auch. Vielen Dank!

Coda
2007-01-10, 17:33:33
1080i ist nicht gleich 1080p (warum sagt der MS Mensch dann, es gäbe keinen Unterschied???)

Mmhmm. Der Gast hat mich doch durcheinander gebracht. Das Problem ist folgendes: Wenn man wirklich nur 1920x540 rendert und das interleaced ausgibt, dann hat man in y-Richtung nur die halbe Auflösung, weil man RAMDAC und Framebuffer niemals synchron bekommt, man kann die "Verschiebung" also nicht mit einkalkulieren.

Es muss also für i und p die gleiche Auflösung gerechnet werden. Nur übertragen wird halt in Halbbildern bei i.

Deshalb ist es auf der Xbox auch egal ob 480i oder 480p. Es wird immer 640x480 gerechnet.

Riptor
2007-01-10, 17:35:59
Aha... Ok, das macht die Sache wieder komplizierter, denn dann müsste man ja doch für 1080i ein komplettes 1920x1080-Frame rendern und ich dachte, das wäre wieder zu groß für den eDRAM!

Coda
2007-01-10, 17:53:00
Ja ist es auch. Der Front-Buffer liegt übrigens nicht im eDRAM...

Riptor
2007-01-10, 18:00:36
Ah! Liegt dann nur der Back-Buffer im eDRAM?

Coda
2007-01-10, 18:10:57
Ja der eDRAM ist der Backbuffer.

Riptor
2007-01-10, 18:12:09
Ja danke. Sorry, wenn ich so blöd gefragt habe, aber das war mir nicht ganz klar! Euch vielen Dank, das bringt mich weiter.

Pitman
2007-01-10, 21:45:53
Heißt das denn auch, dass mit der 360er, durch den begrenzten 10MB edram FSAA im 720p Modus gar nicht möglich ist ?

Grüße
Pitman

Coda
2007-01-10, 21:52:34
Möglich schon, aber nur wenn das Programm das Bild passend unterteilt und diese Teile dann jeweils separat rendert.

Gast
2007-01-10, 22:04:28
Wie macht die UE3 das eigentlich mit den MRTs für das Deferred Shading?
Die müssen das Bild doch eigentlich für jedes Rendertarget nochmal rendern.
Irgendwie klingt das nicht mehr effektiv...

Ailuros
2007-01-11, 06:04:35
Möglich schon, aber nur wenn das Programm das Bild passend unterteilt und diese Teile dann jeweils separat rendert.

Separat aber hoechstwahrscheinlich parallel zur gleichen Zeit. Mag zwar Haarspalterei sein, aber diesem ist sich auch nicht jeder bewusst.

Ailuros
2007-01-11, 06:06:24
Wie macht die UE3 das eigentlich mit den MRTs für das Deferred Shading?
Die müssen das Bild doch eigentlich für jedes Rendertarget nochmal rendern.
Irgendwie klingt das nicht mehr effektiv...

Deferred shading oder deferred shadowing? (einen falschen Eindruck hatte ich ueber das Ganze selber).

icemanemp
2007-01-11, 07:49:35
Möglich schon, aber nur wenn das Programm das Bild passend unterteilt und diese Teile dann jeweils separat rendert.
Muss das ganze alleine die Engine bewerkstelligen? Kann das sein das MS mit XNA da vielleicht unter die Arme greift, d.h. die Programmierung von einer Engine, welche das Bild in Teile rendert vereinfacht?
Hätten auch andere Plattformen wie der PC etwas davon, wenn in Teilen gerendert wird (ok, der PC hat kein eDRAM on Die, aber mit Direct X 10 soll ja Multi-GPU unterstützung drin sein, d.h. jedes Teil des Bildes welches die Engine im eDRAM gespeichert/gerendert hat könnte auf der PC-Plattform von verschiedenen GPUs ausgeführt werden...). Oder bringt das nichts bzw. Performancenachteile?

Gast
2007-01-11, 11:40:16
Deferred shading oder deferred shadowing? (einen falschen Eindruck hatte ich ueber das Ganze selber).
Die Bedeutung von Deferred Shadowing, die ich kenne, macht da irgendwie keinen Sinn. Aber erklaere mal was du damit meinst.

Hvoralek
2007-02-03, 18:00:58
Hier sind jetzt einige Sachen, die ich immer noch nicht richtig verstanden habe:

1. Die Rechnung! Kann mir das jemand mal am Beispiel 640x480 vorrechnen? Verstehe das nicht bzw. komme nicht zum selben Ergebnis!
Ohne AA (in FX8): 640*480 * 1 * (4+4) = 2457600 Byte = 2,34 MiB.
Mit AA steigt die Größe des Backbuffers entsprechend. Das ergibt bei 2x AA 4,68 MiB und bei 4x AA 9,38 MiB. Verwendet man statt FX8 FX16, verdoppelt sich der Verbrauch, bei FP10 bleibt er gleich.

3. Wäre die X360 also in der Lage, 1080p-Games mit Hilfe des eDRAMs zu rendern?1920*1080 * (4+4) = 15,8 MiB. Das passt selbst ohne AA nur in Tiles in den eDRAM. Ganz abgesehen davon, dass man bei der Rechenleistung von Xenos wohl mehr von 720p mit den dort möglichen Details hat als von 1080p und entsprechend reduzierten Details.