Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 35 reacties
Bron: Zoiah

oiah@m3dzone.com" rel="external">Zoiah heeft stiekem wat stukken van de nieuwste nVidia beta drivers, de detonator 7 serie, ge-reverse-engineered. Hij kwam erachter dat als je spellen proberen DXT1 compressie te gebruiken, de drivers dat stilletjes negeren en het gewoon zonder doen, maar wel net doen alsof ze het wel ondersteunen.

DXT1 staat voor "DirectX Texture compression 1", dus de eerste van 5 verschillende manieren om textures in het geheugen van een videokaart te comprimeren gedefinieerd in DirectX. Dit wordt gebruikt om de hoeveelheid videogeheugen die door textures gebruikt wordt te verkleine, en tegenwoordig net zo belangrijk, om de hoeveelheid geheugenbandbreedte die opgaat aan textures te verkleinen.

Voor de assemblyheads onder jullie hebben we ook nog even de relevante stukjes source neergezet. Het was nogal een lap tekst, dus ik heb alleen even de belangrijkste regels ertussenuit gehaald (tekst tussen [] is van de nieuwsposter, tekst achter ; zijn commentaarregels van de submitter):

950CCB2 loc_6950CCB2: ; CODE XREF: 
	sub_6950CC60+3C j
[goede spul in de registers zetten]
6950CCDB call GetS3TCQuality 
	; Kijken welke setting de 
	registry-key S3TCQuality heeft
6950CCE0 add esp, 4
6950CCE3 mov esi, eax
6950CCE5 cmp dword_696BF890, 0
6950CCEC jz short loc_6950CCFF
6950CCEE push 0FFFFFFFFh
6950CCF0 mov eax, dword_696FFBD4
6950CCF5 push eax
6950CCF6 call dword_696BD718
6950CCFC add esp, 8
6950CCFF 
6950CCFF loc_6950CCFF: ; CODE XREF: 
	sub_6950CC60+8C j
6950CCFF test esi, 1
6950CD05 mov esi, [esp+30Ch+arg_18]
6950CD0C jz short SkipDXT1Hack
6950CD0E push esi
6950CD0F call sub_695A4C40
6950CD14 add esp, 4
6950CD17 test al, al
6950CD19 jnz short SkipDXT1Hack
6950CD1B cmp [esp+30Ch+arg_8], 83A0h 
	; Is het DXT1?
6950CD26 jz short Is_DXT1 
	; Ga dan naar Is_DXT1
6950CD28 cmp [esp+30Ch+arg_8], 83A1h 
	; Is het DXT1?
6950CD33 jz short Is_DXT1 
	; Ga dan naar Is_DXT1
6950CD35 cmp [esp+30Ch+arg_8], 83F0h 
	; Is het wat anders?
6950CD40 jnz short SkipDXT1Hack 
	; Skip dan maar
6950CD42 mov [esp+30Ch+arg_8], 83F2h 
	; Is het wat anders?
6950CD4D jmp short SkipDXT1Hack 
	; Skip dan maar

Kortom, de Detonator 7 drivers ondersteunen (nog?) geen DXT1 compressie. Wat betekent dit nu voor de gemiddelde gebruiker? Dat zijn quake 3 arena landschappen er brakker uitzien dan nodig is, en dat zijn GeForce 2 minder performance haalt dan eigenlijk wel zou kunnen. Het is al langer bekend dat de Detonator 7 drivers een tikje langzamer zijn dan de 6 serie, met hedendaagse processoren. Dit zou een van de oorzaken kunnen zijn.

Lees meer over

Moderatie-faq Wijzig weergave

Reacties (35)

Uhh, volgens mij begreep Jasper het niet helemaal. :)

Er zit een bug in de GeForce (2) chip die er voor zorgt dat DXT1 het in 16-bit doet inplaats van 32-bit. Daarom wordt de sky van Quake 3 zo brak.

Wat ze nu dus doen, als je DXT1 vraagt dat hij DXT3 doet, waardoor de fout niet optreed en de sky er juist NIET brak uitziet, maar een nadeel is dat DXT3 wel langzamer is (omdat die ook Alpha doet)
Volgens mij was dat de brakke S3TC implementatie van de 5.xx drivers en daarboven. Daardoor kreeg je een brakke lucht.... En die S3TC kon je uitzette, dan was het wel goed, maar daardoor zakte het aantal fps enorm.......
Het is niet de implementatie in de drivers. Het is de implementatie in de chip die de fout bevat.
Er is niets mis met de S3TC implementatie van de hardware. In Unreal Tournament is er met de Loki OpenGL driver absoluut geen fout te zien met S3TC textures enabled.

Echter tijdens het comprimeren van gewone textures naar S3TC formaat gaat er iets in de drivers mis. Dit is puur een software fout. Tevens behoort Quake 3 Arena geen DXT1 compressie te kiezen voor lightmaps.

Overigens, de Radeon sneakt een beetje in Quake 3 Arena, omdat die geen S3TC op textures van 128x128 ondersteunt. En laten de lightmaps in Quake 3 nu precies 128x128 zijn. Door dit 'foutje' ziet Quake 3 Arena er op de Radeon beter uit.
Daarmee suggereer je een beetje dat de 7-detonators straks niet gelanceerd worden in combinatie met de nv20
(immers, nvidia heeft de laatste tijd steeds detonator serie aan nieuw plankje gekoppeld)
Dat zou nieuw beleid zijn.

Is er overigens ook een vermoeden dat de nv20 niet meer van de uniforme drivers gebruik kan gaan maken / wil maken ???

dubbelpost?
ik n.b. de enige die het in de reacties over de nv20 heeft, overgewaardeerd, gemodereerd of whatever ok , maar dubbelpost?
Detonator drivers zijn eigenlijk veel aparte drivers samenverpakt hoor, als jij een TNT2 hebt zien je drivers er anders uit dan als je een GF2 hebt. In feite heb je dus al aparte drivers!

Overigens zie ik NVIDIA er niet voor aan beleid te veranderen.. en waarom zouden ze :? :7
Uhh, volgens mij begreep Jasper het niet helemaal.

Er zit een bug in de GeForce (2) chip die er voor zorgt dat DXT1 het in 16-bit doet inplaats van 32-bit. Daarom wordt de sky van Quake 3 zo brak.
Zeg dat dan meteen man.. zo begrijp ik het namelijk _wel_ :D
Ik snap nog geen fuck van deze moderatie-reactie-brij, maaruh.

Dit gebeurt ook al in 6.47. In de OpenGL key staat een S3TCQuality en als je die op 1 zet dan gebeurt wat er hierboven uitgelegd word.
Ehm. quake 3 gebruikt opengl geen directx
Vreemd er staat toch echt wel een dx7 directory op mijn q3a cdrom. Zal de Carmack wel voor de grap hebben gedaan ofzo. ;) Maar FF Serieus, wat dacht je van het geluid?
Maar geluid gebruikt dan weer geen texture compression. Het blijft mij nog steeds onduidelijk waarom quake 3 genoemd wordt in dit nieuws item.
DirectX is meer dan alleen 3D.
Quake 3 gebruikt wel DirectX, maar geen Direct3D.
YEP,
Daarom draait het evengoed in Win2K dan W9x/WmE :P
Bij DirextX is het kernelmodes(voor de stabiliteit te behouden van Win2K, OpenGL RULEZZ!!! :Y)
OpenGL omzeilt de Kernelmodes omdat het niet ontworpen is door M$ maar door SiliconGraphics :7
Prachtig gewoon. Om nog vet frames te draaien op een PII400 met 192 meg en een GForces256 onder Windows2000 en dat alles zonder de zaak te oc'en :+
Dus Windows98 stinkt is brak en 16/DOS.
WInNT is stabiel 32bit en snel met veel geheugen.
Ja, en ook voor Spellen!!!!!!!Behavelve voor D3D!! :P

En daarmee uit!!!!!!!!!!! ;)
Sorry, maar jij moet echt effe je bekkie dicht houden.

Jij hebt geen idee waar je het over hebt..
Ik snap er geen hout van maar ik vind het wel schaamteloos!
Overigens dacht ik dat DirectX DXTC had?
Of is dat DXT1, DXt3 etc. samen?


* 786562 Deddiekoel
Ik vind het schaamteloos dat je er geen hout van begrijpt, maar vervolgens wel oordeelt dat het schaamteloos is van Nvidia dat ze in spullen die gelekt zijn (=schaamteloos gekopieerd ) nog niet alle functionaliteit hebben gestopt, de ratten

Wil overigens niet zeggen dat ik wel begrijp wat er staat hoor..... :)
Volgens mij snappen de meeste het niet. De functionaliteit zit niet in de drivers, maar in chip zelf. En daar zit een bug in. Maar aangezien je een chip niet meer kan veranderen moet je dus een workaround verzinnen, wat dit dus is.
Of je moet hetzelfde doen als Intel, en de rommel terughalen en vervangen door een goed model (zoals Intel bijvoorbeeld met de P1 heeft gedaan).
Ik vind het schaamteloos dat ze zeggen dat ze iets ondersteunen en het dan stiekem niet doen.
DXTC is de hele serie: DXT1, DXT2, etc.
Heb nog een kleine opmerking over dit onderwerp.
Ik kwam ergens (tja internet...) een proggie tegen dat iig met S3TC en wellicht ook DXTC er voor zorgde dat de, en dit is het probleem, Alpha channels ipv van textures in 16 bits worden gedecompressed in 32 bits textures worden gedecompressed.

Zodat de transparantie effectief niet in 16 maar in 32 bits tevoorschijn komt. Juist dit is een van de dingen die je idd goed ziet bij de "Sky" van Quake3 doordat het tja nogal lelijk is. helaas kan ik het progje niet vinden, maar weet iemand anders wel waar het te krijgen zou kunnen zijn.
m`n uitleg is beetje brak, :Z

Goed nog een poging:
Textures worden met s3tc en dxtc gecompressed.
Het probleem is dat de manier van decompressie.
Er wordt volgens de schrijver van het proggie waar ik het over had, een verkeerde methode gebruik om het "alpha channel" te decompressen. NB in 16 bits ipv in 32 bits.
Het alpha channel geeft de transparantheid aan. Dus hoe goed kan je er door heen kijken. Als je dat in 16 bits doet, zie je duidelijk de kleurovergangen, iets waar 16 bits kleur bekend om staat. En als storend of on natuurlijk kan worden opgevat
Ik geloof niet echt dat DXT1 in directx in QuakeIII uberhaupt word gebruikt (jaja dumbo's) immers QIII is opengl toch?..

en je s3tc kun je regelen met een progje genaamd Q3s3tcFix.exe die een nieuwe quake3.exe maakt, je hebt dan keuze tussen 4 standen (rgb dxt1, rgba dxt1, rgba dxt3, rgba dxt5..... (helaas pure servers vinden dit maar nix, maar de meesten hebben er geen moeite mee)..

Als je hem wil moet je me maar ff mailen dan pleur ik dees wel even online.. (met rgba dxt1 is de sky ook niet meer zo brak)
Maar S3TC is ook in OpenGL te gebruiken :-)
Maar de nVidia kaarten worden dacht ik voor meer dingen dan Q3A gebruikt....
Gasten, ik snap jullie niet hoor. det7 is BETA!!!!
Hijs niet officieel uit, alleen wel te leechen.
Dus elk verwijt aan nVidia over over det7 is bullshit.
MAAR, die bugfix zit ook 6.47
En op welke url Q3s3tcFix krijgen dan?
( :9
Dat zijn quake 3 arena landschappen er brakker uitzien dan nodig is
Euh... juist niet... ik weet niet of je het weet, maar DXT1 is lossely compression... er gaat dus kwaliteit verloren tijdens de compressie van de textures... Dit betekend dat een spel zonder TC er altijd beter uit zal zien dan een spel met TC... Voordeel van TC is alleen dat textures minder ruimte in beslag nemen... Het is dus de keus tussen meer textures van (iets) minder kwaliteit of minder textures van hogere kwaliteit....

De bug in de geforce 2 chip is al een tijdje bekend en is maar van toepassing op één van de vijf mogelijk TC methoden voor OpenGL... enkele kleine veranderingen aan de code zijn dus genoeg om het probleem te fixen (zie links in andere posts)...

Dat de foutieve texture compression door de drivers wordt genegeerd is dus goed voor de gebruiker, hij krijgt zo optimale kwaliteit... en vergeet vooral niet dat dit nog beta drivers zijn....
Als ik het dus goed begrijp zit er een bug in de chip en bevatten de drivers daarom een workaround waardoor het resultaat goed is maar wel ten koste gaat van wat performance. Waarom dan al die ophef :? Het lijkt me sterk dat dit de enige bug/workaround combo is. Jammer van de snelheid, maar dat kan je dan in de volgende chip goed maken. Zonder dit soort dingen kan je niks maken - foutjes zitten er altijd in (als je apps schrijft kan je ook maar beter op de hoogte zijn van de bugs in het OS) en wees dankbaar voor de oplossing!

* 786562 arjenk

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True