GPU önalımı

GPU önalım modeli Windows 8'de (WDDM 1.2) güncelleştirildi. Güncelleştirilmiş modelde işletim sistemi:

  • Çekirdek modu görüntü sürücüsünün (KMD) GPU DMA paketlerinin önalımını devre dışı bırakmasına izin vermez.
  • Bir Zaman Aşımı Algılama ve Kurtarma (TDR) işlemi başlatılmadan önce bekletme isteklerinin GPU'ya gönderilmesini garanti eder.
Gereksinim Açıklama
Sürücü uygulaması—Tam grafikler ve Yalnızca işleme Zorunlu
WHLK gereksinimleri ve testleri Device.Graphics... Önceliklendirme Testi, Device.Graphics... FlipOnVSyncMmIo

İşletim sistemi uzun süre çalışan paketleri başarıyla öneleyemezse:

  • Yüksek öncelikli GPU çalışması (Masaüstü Pencere Yöneticisi (DWM) için gereken çalışma gibi) gecikebilir. Bu gecikme, pencere geçişleri ve animasyonlar sırasında hatalara neden olur.
  • TDR işlemi gpuyu tekrar tekrar sıfırlayabilir ve sonunda bir sistem hata denetiminin gerçekleşmesine neden olabilir.

Tüm WDDM 1.2 KMD'ler Windows 8 ön kullanım modelini desteklemelidir. Ancak WDDM 1.2 sürücüleri, çalışırken Windows 8 ön kullanım modelini reddedebilir ve DirectX grafik çekirdeği alt sistemi (Dxgkrnl) zamanlayıcısının Windows 7 davranışını koruyabilir.

GPU önalım arabirimi

KMD, Windows 8 GPU önalım modelini uygulamak için aşağıdaki DDI'leri kullanabilir.

Sürücü uygulama aşamaları

KMD'nizde Windows 8 GPU önalım modelini uygulamak için şu genel adımları izleyin:

  1. Sürücünüzü DXGKDDI_INTERFACE_VERSION>=DXGKDDI_INTERFACE_VERSION_WIN8 olan üst bilgilerle derleyin.
  2. DXGK_VIDSCHCAPS yapısının PreemptionAware ve MultiEngineAware üyelerini 1 olarak ayarlayarak Windows 8 GPU önalım modeli için destek bildirin. Windows 7 ön kullanım modelini desteklemek için PreemptionAware'i sıfır olarak ayarlayın.
  3. D3DKMDT_GRAPHICS_PREEMPTION_GRANULARITY ve D3DKMDT_COMPUTE_PREEMPTION_GRANULARITY numaralandırmalarından sabit değerler alan D3DKMDT_PREEMPTION_CAPS yapısında desteklenen önalım ayrıntı düzeyini belirtin.
  4. Donanım gecikmeli bağlam değiştirmeyi destekliyorsa, sıfır uzunluklu bir arabellek'i DxgkDdiSubmitCommand işlevine gönderin ve pSubmitCommand->Flags->ContextSwitch üyesini 1 olarak ayarlayın. DXGK_SUBMITCOMMANDFLAGS yapısının ContextSwitch üyesi altındaki tartışmaya dikkat edin.
  5. DxgkCbCreateContextAllocation işlevini çağırarak GPU bağlam ayırmalarını ve cihaz bağlam ayırmalarını ayarlayın. İşlev için Açıklamalar bölümünde verilen belirli yönergeleri ve kısıtlamaları not edin.
  6. DxgkCbCreateContextAllocation ile oluşturulan GPU bağlam ayırmalarını ve cihaz bağlam ayırmalarını yok etmek için DxgkCbDestroyContextAllocation işlevini çağırın.
  7. DxgkDdiBuildPagingBuffer işlevine yapılan bir çağrıya yanıt olarak DMA arabelleği hazırlarken, DXGKARG_BUILDPAGINGBUFFER yapısı içindeki InitContextResource iç yapısını doldurarak bağlam kaynağını başlatın. Bağlam kaynakları çıkarılır veya yeniden konumlandırılırsa, video bellek yöneticisi bağlam kaynaklarının içeriğini korur.
  8. Sürücü, bir sonraki dikey senkronizasyonda bellek eşlemeli G/Ç değişimini desteklemelidir. Windows 8'de GPU zamanlayıcı, değişimler beklemede olsa bile donanımı önceliklendirmeyi dener. Bu nedenle, yırtılma ve işleme yapıtlarını önlemek için sürücünün bellek eşlemeli G/Ç çevirme modelini desteklemesi ve DXGK_FLIPCAPS yapısının FlipOnVSyncMmIo üyesini 1 olarak ayarlaması ve FlipOnVSyncMmIo altında açıklanan işlemleri desteklemesi gerekir.

Uygulamanızda bellek eşleme konusunda dikkat edilmesi gerekenler

Windows 8 GPU ön kullanım modelini destekleyen ve kaliteli bir kullanıcı deneyimi sağlayan güçlü bir sürücü oluşturmak için bu kılavuzu izleyin:

  • Dxgkrnl zamanlayıcı bir önalım komutu gönderdiğinde GPU'dan orta DMA arabelleği önalımını isteyin. Daha ince bir ayrıntı düzeyinde DMA arabellek önceliklendirmesine sahip donanım cihazları daha iyi bir müşteri deneyimi sağlayabilir.
  • Sayfalama komutu çiti kimliklerinin yeniden kullanılmasına izin ver: Eğer bir önceliklendirme isteği, donanım kuyruğundaki sayfalama komutlarının önceliklendirilmesiyle sonuçlanırsa, Dxgkrnl zamanlayıcı, önceliklendirilmiş sayfalama komutlarını başlangıçta kullanılan çit kimlikleriyle yeniden gönderir ve sayfalama komutları o motor üzerindeki diğer komutlardan önce zamanlanır. Sayfalanmayan komutlar, yeni atanan çit kimlikleri ile yeniden gönderilecektir.
  • Bölünmüş DMA arabellekleri için bir yama konum listesi sağlayın. Daha fazla bilgi için bkz. DMA Arabelleği Bölme.
  • Bağlama sızıntısı algılama adı verilen bir doğrulama modu kullanılabilir. Bu doğrulama modu, düzeltme eki konum listesini incelemek üzere yürütür ve her bölünmüş paket için ayırmaları kaldırmayan veya ayırmaları yeniden programlamayan paketleri reddeder. Bazı donanımlar sanal adresleri destekleyerek bu doğrulamayı gereksiz hale getirebilecek ek bir dolaylı işlem düzeyi sağlar. Böyle bir durumda, sürücünün doğrulama modundan çıktığını belirtmek için DXGK_VIDSCHCAPS yapısının NoDmaPatching üyesini 1 olarak ayarlayın.
  • Windows 7'de Dxgkrnl zamanlayıcı, aynı işleme komutuna karşılık gelen tüm bölünmüş DMA paketlerinin başka bir işleme bağlamı değiştirmeden sırayla yürütülmesini garanti eder. Windows 8 ön kullanım modelinde zamanlayıcı, aynı işleme komutuna karşılık gelen iki bölünmüş paket arasında farklı bir bağlamdan işleme paketleri yürütebilir. Sonuç olarak, ön koşuldan haberdar olan sürücülerin bölünmüş/kısmi DMA paket gönderimini normal bir tam paket gönderimi ile aynı şekilde işlemesi gerekir. Özellikle, bu tür işlemler için GPU durumu sınırda kaydedilmeli veya geri yüklenmelidir.
  • Önalım özellikli bir sürücü, birden çok fiziksel GPU'nun tek, daha hızlı, sanal bir GPU oluşturmak için bağlandığı bağlı görüntü bağdaştırıcısı (LDA) modunda, birden çok bağdaştırıcıya yayınlandığında bölünmüş DMA arabelleğinin içeriğini değiştirmemelidir. Windows 8 ön kullanım modelinde , Dxgkrnl zamanlayıcı artık başka bir bağlama geçiş yapmadan bölünmüş paket dizisinin zaman uyumlu yürütülmesini garanti etmemektedir. Bölünmüş DMA paketinin içeriğini değiştiren bir sürücü, paket verilerinin bütünlüğünü tehlikeye atabilir. Özellikle, paket başka bir motorda çalıştırılırsa, aynı DMA arabellek verilerinin kopyası üzerinde çalışır.
  • Windows 8 GPU önalım modelinde Dxgkrnl zamanlayıcı, ilişkili "gönderimde sinyal" eşitleme temel öğelerini içeren paketler için önalım sağlar. Cihaz donanım tabanlı bekleme durumlarıyla "göndermede sinyal" eşitleme temel öğelerini kullanıyorsa, bekleme koşulu karşılanmadan önce bir bekleme yönergesini kesebilme yeteneğine sahip olmalıdır.

Donanım sertifikası gereksinimleri

Donanım cihazlarının bu özelliği uygularken karşılaması gereken gereksinimler hakkında bilgi için Device.Graphics... sayfasındaki ilgili WHLK belgelerine bakın . Ön Kullanım Testi ve Device.Graphics... FlipOnVSyncMmIo.