DirectX 12 D3D12, GPU'ya veya CPU'ya Dinamik Olarak Bellek Tahsisi Üzerinde Daha Fazla Kontrol Sağlayan Yeni Özelliğe Sahiptir

Donanım / DirectX 12 D3D12, GPU'ya veya CPU'ya Dinamik Olarak Bellek Tahsisi Üzerinde Daha Fazla Kontrol Sağlayan Yeni Özelliğe Sahiptir 3 dakika okundu

DirectX 12



Windows 10 OS, DirectX12 ve daha spesifik olarak Direct3D (D3D12) için yapılacak büyük güncellemede bir değil, yeni bayraklar almak bu, bellek kaynaklarının tahsis edilme şeklini değiştirecektir. Görünüşe göre Microsoft, bellek ve işlem gücünün uygulamalar tarafından talep edilme ve uygulamalara tahsis edilme şekli konusunda haklı olarak endişe duyuyor ve bu da genellikle bir darboğaz yaratabilir. Bu arada, bu yeni bayraklar doğrudan belleği etkilemeyecek, bunun yerine tahsis edilme ve yönetilme şeklini etkileyecektir.

Microsoft, uzun süredir masaüstü oyunlar için önde gelen bir standart olan DirectX platformunun en son yinelemesini aktif olarak geliştirmektedir. Microsoft DirectX 12'nin en son sürümü, son zamanlarda birkaç yeni özellik alıyor. Son zamanlarda ele aldık DirectX 12'nin en belirgin ve önemli yeni özellikleri geliştiricilere ve son kullanıcılara önemli ölçüde fayda sağlayacaktır. Bu hafta Microsoft, Windows 10'a yönelik bir sonraki büyük güncellemenin DirectX12 Direct3D için iki yeni bayrak içermesi gerektiğini belirtti. İlginç bir şekilde, bugün aynı şeyi keşfetmek isteyen geliştiricilerin, Windows Insider Programından en son Windows 10 Insider Önizleme yapısını ve Windows 10 için SDK Önizleme Yapısını (20H1) indirip yüklemeleri yeterlidir.



Windows 10 DirectX 12 Direct3D, CPU ve GPU Arasında Dinamik Bellek Tahsisi İçin İki Yeni Bayrak Almak İçin:

Windows 10'un yaklaşan güncellemesinde D3D12, D3D12_HEAP_FLAG numaralandırmasına iki yeni bayrak ekleyecektir. Bu arada, bu yeni bayraklar 'süreksiz' özelliklerdir. Basitçe ifade etmek gerekirse, bu, yeni bayrakların ortaya çıkan belleğin kendisini doğrudan etkilemeyeceği anlamına gelir. Bunun yerine, yeni bayraklar belleğin tahsis edilme şeklini etkileyecektir. Dahası, bu işaretler ID3D12Heap :: GetDesc veya ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

Mevcut yinelemesinde, bir geliştirici D3D'den bir yığın veya kaydedilmiş kaynak ayırmasını istediğinde, nesneyi geri almadan önce gerçekleşen son şey, belleğin yerleşik hale getirilmesidir. Bu oldukça benzer ID3D12Device :: MakeResident gerçekleştiriliyor. Eklemeye gerek yok, böyle bir süreç hemen iki sorunu ortaya çıkarır:



  1. Tasarım, bellek tamamen kullanıma hazır olana kadar bir CPU İpliğini bloke eder. Bu ideal veya arzu edilen bir durum değil
  2. Süreç aynı zamanda geliştiricilerin, mevcut süreç bütçesinin kullanması gerektiğini gösterdiğinin ötesinde belleği aşırı kullanmalarına da izin verecektir.

Yeni eklenen ID3D12Device3 :: EnqueueMakeResident uygulamaların farklı seçimler yapmasına izin verir. Uygulamalar CPU yerine GPU kullanarak ikamet bekleyebilir veya bütçeyi aşmak yerine ikamet işleminin başarısız olmasını isteyebilir. Yerleşik olmayan bir durumda belleğin tahsisi, her iki faydayı da kaynakların ilk kullanımına aktarılmasına neden olur.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Bu bayrak, alınan D3D tarafından yeni oluşturulan kaynakları ve yığınları taahhüt eden sıfırlanmış içeriği ele almaya çalışır. Microsoft, belirli bir işlemin sınırlarını sıfırlamadan asla terk etmeyen daha fazla yeniden kullanım belleğini etkinleştirerek bu işlemi optimize etmeye çalıştı. Ancak, bu iyi çalışmadı ve Microsoft mühendislerini yalnızca sıfırlanmış bellek döndürmeye geri dönmeye zorladı. Söylemeye gerek yok, bellek yöneticisinin yeniden kullanım için geliştiricilere geri göndermeden önce belleğe açıkça sıfırlar yazması gerektiğinden, bu yol oldukça sıkıcıydı.

Süreci optimize etmenin bir yolu olarak, geliştiricilere yığın / kaynak tahsisi sırasında sadece yeni bayrağı belirterek sıkıcı süreci devre dışı bırakma yeteneği veriliyor. Esasen, dinamik yeniden tahsis, zorunlu tüm zamanların sıfırlama sürecini en aza indirebilir ve geliştiricinin süreçlerinin yeniden sıfırlama sürecine zorlamadan kullandığı boş belleklerin bir kısmını tahsis edebilir.



Microsoft bu yeni bayrakları zaten eklemiştir ve yeni sürücüler gerektirmez. Dahası, adanmış yok CheckFeatureSupport bunlar için seçenek. Esasen, bu yeni bayraklar ID3D12Device8'in açığa çıktığı her an veya D3D12_FEATURE_D3D12_OPTIONS7 için bir kontrol başarılı olduğunda kullanılabilir. Tüm yeni bayrak talepleri, geliştiricilerin süreçleri D3D12'nin onları anlayan bir sürümünde çalıştırması gerektiğidir.

Etiketler Doğrudan X12 Directx Microsoft pencereler