Menyinkronkan Operasi Dekode Video

Mekanisme sinkronisasi untuk DirectX VA 2.0 ditingkatkan dari versi 1.0 dan lebih mirip dengan mekanisme sinkronisasi yang digunakan oleh operasi Microsoft Direct3D.

Dalam DirectX VA 1.0, sinkronisasi dilakukan terutama oleh dekoder. Sebelum dekoder dapat menggunakan buffer terkompresi, ia memanggil fungsi DdMoCompQueryStatus untuk menentukan apakah buffer tersedia untuk digunakan (yaitu, perangkat keras tidak mengakses buffer). Jika buffer tidak tersedia, dekoder harus tidur, melakukan polling, atau melakukan operasi lain.

DirectX VA 2.0 menggunakan model sinkronisasi yang sudah digunakan Direct3D pada buffer vertex dan buffer indeks. Di DirectX VA 2.0, sinkronisasi dilakukan oleh dekoder yang mengunci buffer terkompresi. Jika driver tampilan mode pengguna mencoba mengunci buffer terkompresi dan buffer sedang digunakan, driver dapat gagal kunci atau mengganti nama buffer. Driver tampilan mode pengguna meminta agar manajer memori video mengganti nama buffer ketika driver mengatur anggota Buang struktur D3DDDICB_LOCKFLAGS dalam panggilan ke fungsi pfnLockCb . Jika driver tampilan mode pengguna mengganti nama buffer, driver mengembalikan penunjuk ke buffer alternatif sehingga dekoder dapat dilanjutkan tanpa diblokir.

Biasanya, untuk DirectX VA 2.0, sinkronisasi hanya merupakan masalah jika perangkat keras dapat menggunakan buffer terkompresi secara langsung tanpa salinan buffer tambahan.