( eCaffee | 2011. 05. 09., h – 13:29 )

Uraim, sajnálattal kell közölnöm, hogy a fenti ügyben mindannyian megbuktunk méréstechnikából. Én is, mert hallgattam azokra, akik a glxgears helyett izmosabb tesztet követeltek. Három napja érzem, hogy Shannon és Murphy valahol itt lapul az egyik sarokban, és nagyon jól szórakoznak. Miért? Mert a jelgenerátor és a különböző átviteli láncok paramétereinek vizsgálata helyett megmértük a mérésre használt oszcilloszkóp felső határfrekvenciáját... Nem egészen világos? Mindjárt az lesz. A fenti szálban az eredeti "kapcsolás" szerint a glxgears egy jelgenerátor, ami egyszerű jelforma mellett nagyfrekvenciás jelet állít elő. A libGL egy interfész, ami a jelet egy vonalra illeszti. A GLX protokoll vagy a DRI ez esetben egy-egy átvileti lánc. A grafikus kártya pedig az oszcilloszkóp szerepét játssza, csakhogy...amíg egy valódi szkóp felső határfrekvenciája egy adott beállítás mellett független a jel összetettségétől, tartalmától, addig a 3D VGA esetén ez változó. A mérhető fps érték függ a jel tartalmától, tehát bonyolultabb utasításokat tartalmazó jelsorozat esetén meredeken esik a mérhető felső határfrekvencia. (aki még mindig nem értené: könnyűszerrel létrehozható két, bájtra azonos hosszúságú GLX packet-sorozat, melyből az egyik esetén a VGA egységnyi idő alatt rengeteget fel tud dolgozni, a másikból pedig csak néhányat) Mivel itt nem a VGA teljesítőképességére vagyunk kíváncsiak, hanem a jelgenerátor, az interfész, és leginkább az átviteli láncok elemeire, ezért a "szkóp" felső határfrekijét a lehető legmagasabb értéken kell tartanunk, az átviteli lánc lehető legnagyobb terhelése mellett. A glxgears közel állandó terhelésen tartja a libGL-t és a GLX-et vagy a DRI-t is, mert szünet nélkül a lehető legtöbb képkockát igyekszik előállítani, és mivel a jelsorozat egyszerű, az átvitt és feldolgozott üzenet-szakaszok számát a legtöbb VGA segítségével komoly mennyiségig tudjuk mérni. (a teljesen korrekt méréshez VGA helyett egy spciális "null-driver" kellene, ami nem végrehajtja, csak számolja a beérkező utasítás-sorozatokat, és természetesen egy olyan "preparált" glxgears, ami közben számolja a kiadott utasítás-sorozatokat...így már tiszta értékekhez lehetne jutni mind GLX proto, mind pedig DRI üzem esetén)

Végül következzen a lehetséges megfejtés, vagyis az Nvidia libGL-lel kényszerített GLX üzem miért produkál a DRI-hez képest közel azonos, vagy akár magasabb glxgears fps értékeket: évek óta szériatartozék a legtöbb linuxon az AIGLX, és pontosan ez a dolga, a lehető leggyorsabbá teszi az indirekt, hardveresen gyorsított leképezést...Bonyolultabb "mérőjel", tehát összetettebb 3D feladat esetén pedig már sem AIGLX, sem DRI nem segít, mert szimplán beleütközünk a VGA hardver korlátaiba.

-
"Attempting to crack SpeedLock can damage your sanity"