PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GLSL: NVidia und ATi Unterschiede...


ollix
2007-03-23, 16:14:41
Hi,

ich habe gerade mal eine ATi x1950pro für 1 Woche geliehen bekommen, um eine GLSL Shader Applikation auf ATi zu testen. Und das endet gleich beim Start...

Die GLSL Shader funktionieren auf einer NV40 fehlerfrei, GLSL Validatoren haben keine Probleme und auch bei ATi werden beim Start keine Probleme gefunden - alle Shader kompilieren und linken fehlerfrei. Sobald es dann ans Zeichnen des ersten Frames geht, knallt es. Im Callstack steht nach atioglxx.dll!..() nur noch ein Zugriff auf 00000000(), wo dann natürlich Schluß ist.

Hat jemand eine Idee, wo das Problem liegen könnte bzw. was man da machen kann?
:confused:

danke

Asmodeus
2007-03-23, 17:50:24
Hmm, poste doch einfach mal den betreffenden Shader-Quellcode, vielleicht kann Dir dann jemand helfen. Ansonsten, hast Du mal probiert, nach und nach Dinge im Shader auszukommentieren, um eventuell die Stelle näher einkreisen zu können, an der das Programm aussteigt?

Gruß, Carsten.

EDIT: Was genau meinst Du mit fehlerfrei? Werden auch keine Warnings ausgegeben?

del_4901
2007-03-23, 18:20:10
EDIT: Was genau meinst Du mit fehlerfrei? Werden auch keine Warnings ausgegeben?

Er meint warscheinlich das alle Anfragen an den Ati Treiber, ob was schiefgelaufen ist, immer mit: "ist alles OK" beantwortet werden.

Das ist eine Krankheit, kenn ich aber zur genüge ... handelt es sich zufällig um ein Notebook? Da habe ich 2 nämlich zur Hand die das nur so machen ... echt arm von ATi.

ollix
2007-03-23, 19:18:13
Danke! Es handelt sich dabei um einen 4pass Shader mit 3 RenderTargets. Ich habe mehrfach versucht Teile zu entfernen, was aber keine wirklichen Erkenntnisse brachte. Bei einem 1pass Shader tritt dieses Verhalten auch auf, nachdem ich haufenweise Instruktionen auskommentiert habe, lief er aber erstmal (beim 4pass Shader bekam ich das gar nicht hin). Die Instruktionen, die dann den Unterschied zwischen "läuft" und "läuft nicht" machen, sind immer 1-Zeiler Trivialanweisungen, die eigentlich unmöglich für einen Absturz im ObenGL Treiber sorgen dürften. Vorallem sind es immer verschiedene Teile; je nachdem was ich deaktivere, sorgt dann eine andere Trivialanweisung für den Absturz. Es scheint dabei tendenziell an Zugriffen auf OpenGL Konstanten zu hängen (z.B. gl_FrontMaterial.shininess, gl_ ... etc) aber auch nicht vollständig; aktuell scheint es mir so, dass dies einfach ab einer gewissen Komplexität des Shaders passiert. Die Shader kann ich aber leider nicht posten. :(

Ein Notebook ist es zwar nicht, aber ich habe zumindest beim Googlen einen Fall gefunden, der dies auch bei einer Mobility Radeon hatte - aber leider ohne Lösung.

Und ja, der ATi Treiber gibt keinen Hinweis von sich, dass er irgendwomit ein Problem haben könnte, sagt überall okay, handelt dann aber nicht so. Verwende BTW WinXP32 SP2 und habe diverse Catalyst Versionen getestet, bis hin zum Neusten: alles das gleiche.

del_4901
2007-03-23, 19:39:16
Eine Idee hab ich da noch ... mach doch mal VPU Recover aus?

ollix
2007-03-24, 09:23:12
Danke. Hat aber leider keinen Effekt. Das Problem scheint immer wieder mal (im Netz) aufzutreten, aber konnte keine wirkliche Lösung finden. Auch scheint - was man so liest - dies mit einem älteren Treiber mal eingeführt worden zu sein (Cat5.x?), das bringt einer X1950 aber auch nicht viel. :( Teilweise soll es auch von selber verschwunden sein, das ist mir aber alles etwas zu spekulativ.

Falls noch jemand eine Idee hat :confused:, sonst werde ich wohl mal zur NV40 zurück. :( Auch wenn ich mir von der ATi einiges versprochen hatte, insbesondere was DynB angeht. Trotzdem nochmal Danke @AlphaTier und Asmodeus