Yani, NVIDIA'yı 3DMark 2003 konusunda en çok rahatsız eden şey, grafik kartlarının mevcut oyunlardaki performanslarını yansıtamaması. Üstelik NVIDIA test senaryosunun gerçek dünyadaki durumlarla hiç ilgisinin olmadığını, örneğin, modern oyunlardakinin aksine donanıma göre optimize edilmiş kodların bulunmadığını ileri sürüyor. Futuremark bu konuya da değiniyor:
Futuremark:
Ayrıca, oyunların benchmark bölümlerinin mutlaka Futuremark'taki özen ve dikkatle geliştirilmesi gerekmez - Futuremark testin bağımsızlık ve güvenilirliğini sağlamak için gerekli tüm özeni gösterir. Oyunlar, ya pazarlama ya da uygulama uyumluluğu gerekçeleriyle, farklı üreticilerin kartlarına göre özel olarak yaratılan kodlar içerebilirler - bu da en azından ölçülen sonuçların diğer oyunlara göre genelleştirilmesini olanaksız hale getirir.
Futuremark hedefinin donanım optimizasyonu yapılmış oyunların performansını test etmek olmadığını açıklıyor. Şirket bunun yerine kartların "standart kodu" çalıştırırken nasıl bir performans gösterdiğini ölçecek "nötr" bir test geliştirmeyi amaçlamış. Futuremark, belirli bir kartın performansını kapsamlı ve anlamlı bir biçimde yargılayabilmek için aşağıdaki prosedürü öneriyor:
Futuremark:
Doğru bir test için önerilerimiz şöyle:
Belirli bir oyunun bilgisayarınızda ne kadar hızlı çalışacağını görmek istediğinizde oyun testlerini kullanın;
DirectX 7 veya ilk nesil DirectX 8 uyumlu donanımların genel performansını karşılaştırmalı bir şekilde ölçmek için 3DMark 2001'i kullanın;
DirectX 9 uyumlu donanımların genel performansını karşılaştırmalı bir şekilde ölçmek için 3DMark 03'ü kullanın.
Buraya kadar okuduklarımızı bir toparlayalım. Firmaların konumları açık: NVIDIA, çünkü gerçek oyunları temsil edemediği için, 3DMark'da "nötr" standart kodun kullanılmasından hoşnut değil. Öte yandan Futuremark, DirectX 9 donanımla "nötr" sonuçlar verebilecek bir platform yaratmak istemiş . bu ilginç bir soruyu akla getiriyor: NVIDIA neden kendi kartlarının standart, yani donanıma göre optimize edilmemiş kodlarla test edilmesini istemiyor?
John Carmack'ın Doom III ile ilgili aşağıdaki yorumu burada aydınlatıcı olabilir. Bu onun ünlü plan güncellemelerinden bir alıntı:
John Carmack (id):
Bugün için Doom'da NV30 çoğu sahnede R300'dekinden biraz daha hızlı ancak hala , R300'ün biraz öne çıktığı bazı sahneler bulabiliyorum. Farklı kartların oyunu çalıştırmak için seçtiği farklı yollar nedeniyle konu karışık.
R300 Doom'u 3 farklı moda çalıştırır: ARB (minimum uzantılar, yansıtmalı ışıklar ve vertex programları yok); R200 (tüm özellikler açık, hemen hemen her zaman tek geçişli karşılıklı render); ARB2 (kayar nokta hesaplamalı shader'lar, kalitede küçük iyileştirmeler, daima tek geçiş).
NV30 Doom'u in 5 farklı moda çalıştırır: ARB; NV10 (tüm özellikler açık, beş render geçişi, vertex programları yok); NV20 (tüm özellikler açık, 2 veya 3 render geçişi); NV30 (tüm özellikler açık,tek geçiş); ve ARB2.
R300 işlemcide, R200 yönteminin ARB2 yöntemine göre biraz hız avantajı var ancak bu çok küçük bir avantaj olduğundan, kalitede iyileştirme için default olarak ARB2 yöntemini kullanıyor. NV30 işlemci ARB2 yöntemini NV30 yönteminden ÇOK DAHA yavaş çalıştırıyor. Şu anda yarı hızında. Bu çok yazık çünkü aynı API ile bire bir, elmalarla elmaları yan yana getirecek bir karşılaştırma yaptığınızda R300 iki kat hızlı çıkıyor; ancak üreticinin belirlediği yöntemi kullanırsanız NV30 kazanıyor.
Bunun nedeni, ATi her şeyi her zaman yüksek hassaslıkta yaparken, NVIDIA dahili olarak farklı performanslarda üç farklı hassaslık seviyesini destekliyor. İşleri daha da karışık hale getiren bir nokta da, ATi'nin kullandığı yüksek hassaslığın, NVIDIA tarafından sunulan kayar nokta hassaslıklarının arasına düşmesi - bu yüzden NVIDIA kesirli programlar ("fragment programs") kullandığında ATi'ninkilerden daha hassas oluyor ve bu da düşük hızın mazereti olarak kabul edilebilir. NVIDIA'nın bana bildirdiğine iyileştirilmiş bir sürücü derleme teknolojisi ile kesirli program performansını artırmak için çok potansiyel var.
Satır aralarını okursak, bu alıntı, NVIDIA'nın NV30'unun (ve nihayetinde NV31 ve NV34'ü de içerecek tüm ailenin) neden standart kodla bir "problemi" olabileceğini açıklıyor. Neden çok basit olabilir ve pixel shader efektlerinin hangi hassaslıkla hesaplandığına bağlı olabilir. ATi'nin R300'ü 24 bit'lik kayar nokta hassaslığı (bileşen başına) kullanırken, NV30 ya 16 ya da 32 bit'lik bir hassaslık kullanıyor. Dolayısıyla bir oyun standart ARB2 kod modelini kullandığında (ARB=(OpenGL) Architecture Review Board), NVIDIA'nın işlemcileri 32 bit'lik tam bir hesaplama yapmaya zorlanıyor, ATi ise R300'de "sadece" 24 bit ile uğraşıyor olabilir. Yani GeForce FX, çok öne çıkarılan ve işlemcinin vurucu özelliği olarak lanse edilen yüksek kayar nokta hassaslığının kurbanı olabilir. NV30 16 bit'lik hassaslığa geçebilse de, bu büyük olasılıkla görüntü kalitesini olumsuz etkileyecektir. Bu yüzden ATi'nin 24 bit'lik uygulaması çok akıllıca seçilmiş bir ara yol gibi görünüyor - performanstan ödün vermeden iyi bir kalite sunuyor. Ama durun! - NVIDIA'nın 42.63 numaralı sürücüsünden 42.68 numaralı sürücüsüne geçtiğimizde yaşadığımız performans artışı (bkz. bu konudaki yazım) sürücünün 16 bit hassaslığa ayarlanmasından kaynaklanıyor olabilir mi? Bir diğer ilginç soru: Böyle bir durumda Microsoft'un WHQL standardı ne diyor?