DirectX 11 Ve DirectX 12 Farkı: En Basit Haliyle

Ekran kartınızdaki performans sorununun en net anlatımı.

İşin içine teknik kavramlar girdiğinde hızlıca soğuyan insanlarız.

Herhalde ülke insanları olarak karmaşığa, uzun yazıya ya da hap olmayan bilgiye pek gelemiyoruz. Ama bugün Twitter’da takip ettiğim Keith Newton, i-Novae motorunun arkasındaki isimlerden, bir yazı paylaşmış. Bu zamana kadar hep kurduğumuz ama bir API olarak ne iş yaptığını tam olarak bilmediğimiz DirectX’in yeni sürümünün hayatımızda neleri değiştireceğini o kadar basit ve rahat anlatan bir yazı ki bu. Ben de size parçaları sunmak istedim.

Yazıyı yazan kişi Brad Wardell, kendisi işe ilk önce DirectX 9’a kadar olan dönemi anlatarak başlıyor:

DirectX 9’a kadar CPU ve GPU, kendi aralarında tek bir ana hattan iletişim kuruyorlarmış. Zaten o döneme kadar tek sayıda çekirdeğe sahip olan CPU ve GPU’lar bu iletişimde sıkıntısız çalışıyorlarmış.

DirectX 10 ile CPU’daki (Yani bilgisayarın ana işlemcisindeki) farklı çekirdekler GPU’ya (Yani ekran kartındaki işlemciye) iş yollayabiliyorlar. Hayatımıza giren 4-6-8 çekirdekli işlemcilerin yaptığı şey bu yani. Ama GPU’nun iş akışı hâlâ eskisi ile aynı olduğundan GPU’yla her daim 1 CPU çekirdeği iletişim kurabiliyormuş. Yani çekirdekler sıraya giriyorlar, bu da elimizdeki 4-6-8 çekirdeği bir anlamda işlevsiz kılıyor.

DirectX 11’de ise iletişim o ana hattan alınıp esnekleştirilmiş. Yani DirectX 9 ve 10’a göre daha akıcı bir iletişim sağlanmış CPU ve GPU arasında. Ama sıkıntı, hâlâ tek bir çekirdeğin GPU ile iletişim kurabilmesi.

Ama DirectX 12, hayatımıza bu iletişim yolunda çeşitlilik getirmeyi amaçlıyor. Artık birden fazla çekirdek aynı anda GPU’ya işlem iletebilecek, GPU da bu işlemleri kendi kapasitesi doğrultusunda uygulayabilecek. DirectX 11 ile gelen esnek iletişim tüm çekirdeklere yayılacak yani. Tabii DirectX 12 destekli ekran kartları, bu iletişim için gerekli donanımlar.

Bu arada teoride böyle yapacak olan DirectX 12’nin pratik bir örneği var: AMD Mantle. Üstelik sıkı performans artışlarını sağlayabiliyor gerçekten. Daha önce sizlere DirectX 12’nin testlerinde AMD ve NVIDIA’nın performans artışlarını paylaşmıştık. AMD’nin farkı, anladığım kadarıyla Mantle’ın zaten halihazırda bu tekniği kullanmasıyla alakalı.

PEKİ SONUÇ?

DirectX 12, Windows 10’a özel gelecek. Bunun sebebi de işletim sisteminin üstüne kurulu olduğu WDDM denen, hâlâ ne olduğunu tam anlamadığım sistemin 2.0’da olması. Çünkü biliyorsunuz, masaüstünde ikona tıklarken bile CPU ve GPU iletişim halinde. İşin büyüklüğü önemsiz. Burada, Microsoft aradaki iletişim yapısını komple değiştirdiğinden anladığım kadarıyla işletim sistemini temelden değiştiriyor. En azından bu konuda.

Tabii bu bahsedilen sistemin bir anda her şeyi hızlı hale getirmesini de beklemeyin. Oyunun buna göre hazırlanması lazım. Şu anki oyunlar hâlâ tek bir çekirdek / GPU iletişimine göre yazılıyormuş. O nedenle eski oyunlarda müthiş bir performans zıplaması beklemeyin.

Wardell’ın konuya dair verdiği bir örnek de eski oyunları görsel olarak kötü gözle anacağımız konusu. Çünkü en fazla işlem gücü yiyen elementlerin başında ışık kaynağı geliyor. Bunu tahmin etmek kolay, çünkü oyun motorlarında da gerçek dünyadaki gibi seken, yansıyan, gölgeyi ona göre oluşturan fotonlar var ve sayıları arttıkça, hesaplamalar da artıyor. Şu anki oyunlarda yaklaşık dört tane ışık kaynağımız olduğunu söyleyen Wardell, bunlardan üçünün atmosfer için kullanıldığını da iliştirmiş. Tüm gördüğümüz o patlamalar, lazerler, diğer ışıklar iki boyutlu efektlerden ibaret (bunu Star Wars oyunlarındaki ışın kılıçlarından çok net anlayabilirsiniz).

Son olarak da bu seneki GDC’de (Mart ayında) özellikle bu konuda büyük şeylerin çıkacağının sinyallerini veriyor Wardell. Bir tarafta Unity ve Valve, kendileri OpenGL’e yeni bir nefes üflerlerken AMD, NVIDIA, Microsoft, Intel ve Sony de başka yollarda çalışıyorlar. Özellikle grafik performansında ve özelliklerinde bir atlama olması muhtemelmiş.

NEDEN BUNU YAZIYORUM?

Elimizdeki araçları doğru kullanmak, limitlerini ve kurallarını bilmeye takmış birisi olarak bu tür şeyleri görünce heyecanlanmadan edemiyorum. Kimi zamanlar bu noktada dilimi tutamıyor olsam da, elimizdeki araçların becerilerini daha iyi anlamak ve onlarla yapılabilecek şeylerin sınırlarını öğrenmenin hep doğru olduğunu düşünmüşümdür. Gönül isterdi ki Türkiye’nin en büyük API programcısı bu yazıyı sizlere yazsın, o nedenle sürç-i lisan ettiysem, affola.

YORUMLAR
Parolamı Unuttum