Bagikan melalui


Negosiasi PDEV

Salah satu tanggung jawab utama driver grafis apa pun adalah mengaktifkan PDEV selama inisialisasi driver. PDEV adalah representasi logis dari perangkat fisik. Representasi ini didefinisikan oleh driver dan biasanya merupakan struktur data privat. Lihat DrvEnablePDEV untuk informasi selengkapnya tentang mengaktifkan PDEV.

Melalui fungsi DrvEnablePDEV , driver harus memberikan informasi kepada GDI yang menjelaskan perangkat yang diminta dan kemampuannya. Salah satu informasi penting yang diberikan driver kepada GDI adalah serangkaian bendera kemampuan grafis (bendera GCAPS_Xxx dan GCAPS2_Xxx) di anggota flGraphicsCaps dan flGraphicsCaps2 dari struktur DEVINFO .

Bendera kemampuan memungkinkan GDI untuk menentukan operasi mana yang didukung PDEV. Misalnya, GDI menguji bendera kemampuan yang menunjukkan apakah PDEV dapat menangani kurva Bezier dan garis lebar geometris sebelum GDI mencoba memanggil fungsi DrvStrokePath untuk menggambar jalur dengan jenis primitif ini. Jika bendera kemampuan menunjukkan bahwa PDEV tidak dapat menangani jenis primitif ini, GDI akan memecah garis atau kurva sehingga dapat melakukan panggilan yang lebih sederhana ke driver.

Dari sisi driver, setiap kali driver mendapatkan panggilan terkait jalur lanjutan dari GDI, itu dapat mengembalikan FALSE jika jalur atau kliping terlalu kompleks bagi perangkat untuk diproses.

Driver tidak dapat mengembalikan FALSE dari DrvStrokePath saat menangani garis kosmetik karena driver harus menangani kliping atau gaya kompleks untuk garis kosmetik. Namun, DrvStrokePath dapat mengembalikan FALSE jika jalur memiliki kurva Bezier atau garis geometris. Ketika ini terjadi, GDI menghentikan panggilan ke panggilan yang lebih sederhana, seperti halnya jika bit kemampuan tidak diatur. Misalnya, jika DrvStrokePath mengembalikan FALSE saat dikirim baris geometris, GDI menyederhanakan baris dan memanggil fungsi DrvFillPath .

Jika DrvStrokePath melaporkan kesalahan, drvStrokePath harus mengembalikan DDI_ERROR.

Negosiasi semacam ini antara GDI dan driver, untuk fungsi yang bergantung pada PDEV, memungkinkan GDI dan driver untuk menghasilkan output berkualitas tinggi tanpa komunikasi berlebih.