struktur DXGK_ALLOCATIONINFOFLAGS (d3dkmddi.h)

Struktur DXGK_ALLOCATIONINFOFLAGS mengidentifikasi properti untuk alokasi.

Sintaks

typedef struct _DXGK_ALLOCATIONINFOFLAGS {
  union {
    struct {
      UINT CpuVisible : 1;
      UINT PermanentSysMem : 1;
      UINT Cached : 1;
      UINT Protected : 1;
      UINT ExistingSysMem : 1;
      UINT ExistingKernelSysMem : 1;
      UINT FromEndOfSegment : 1;
      UINT Swizzled : 1;
      UINT Overlay : 1;
      UINT Capture : 1;
      UINT UseAlternateVA : 1;
      UINT SynchronousPaging : 1;
      UINT LinkMirrored : 1;
      UINT LinkInstanced : 1;
      UINT HistoryBuffer : 1;
      UINT AccessedPhysically : 1;
      UINT ExplicitResidencyNotification : 1;
      UINT HardwareProtected : 1;
      UINT CpuVisibleOnDemand : 1;
      UINT Reserved : 4;
      UINT DXGK_ALLOC_RESERVED16 : 1;
      UINT DXGK_ALLOC_RESERVED15 : 1;
      UINT DXGK_ALLOC_RESERVED14 : 1;
      UINT DXGK_ALLOC_RESERVED13 : 1;
      UINT DXGK_ALLOC_RESERVED12 : 1;
      UINT DXGK_ALLOC_RESERVED11 : 1;
      UINT DXGK_ALLOC_RESERVED10 : 1;
      UINT DXGK_ALLOC_RESERVED9 : 1;
      UINT DXGK_ALLOC_RESERVED4 : 1;
      UINT DXGK_ALLOC_RESERVED3 : 1;
      UINT DXGK_ALLOC_RESERVED2 : 1;
      UINT DXGK_ALLOC_RESERVED1 : 1;
      UINT DXGK_ALLOC_RESERVED0 : 1;
    };
    UINT Value;
  };
} DXGK_ALLOCATIONINFOFLAGS;

Anggota

CpuVisible

[keluar] Nilai UINT yang menentukan apakah alokasi dapat diakses langsung oleh CPU. Driver miniport tampilan harus mengatur bendera ini untuk driver tampilan mode pengguna agar berhasil memanggil fungsi pfnLockCb pada alokasi. Jika bendera ini tidak diatur pada alokasi, pfnLockCb mengembalikan kesalahan.

Perhatikan bahwa hanya proses yang membuat alokasi bersama yang dapat mengunci alokasi tersebut.

Mengatur anggota ini setara dengan mengatur bit pertama dari anggota Nilai 32-bit (0x00000001).

PermanentSysMem

[keluar] Nilai UINT yang menentukan apakah salinan alokasi harus disimpan dalam memori sistem bahkan ketika konten terletak di segmen memori. Secara default, penyimpanan cadangan memori sistem permukaan hilang saat mentransfer alokasi ke segmen memori. Ketika bendera PermanentSysMem ditentukan dan alokasi dikeluarkan dari segmen memori, konten alokasi dibuang dan tidak di-page out jika alokasi tidak kotor (artinya, alokasi bukan target operasi tulis sejak di-paged in).

Panggilan ke pfnLockCb pada alokasi selalu mengembalikan penyimpanan cadangan memori sistem untuk alokasi. Jika alokasi terletak di segmen memori saat driver tampilan mode pengguna memanggil pfnUnlockCb, sumber daya segmen memori untuk alokasi diperbarui dengan konten baru. Pembaruan ini muncul, pada driver miniport tampilan, sebagai operasi paging biasa melalui fungsi DxgkDdiBuildPagingBuffer . Perhatikan bahwa jika driver miniport tampilan memerlukan ukuran wilayah minimal atau penyelarasan untuk operasi penomoran halaman, persyaratan ini harus tercermin di wilayah yang sedang dikunci. Ketika driver mengatur PermanentSysMem, driver juga harus mengatur anggota CpuVisible . Driver tidak boleh mengatur PermanentSysMem pada permukaan utama.

Mengatur anggota ini setara dengan mengatur bit kedua dari anggota Nilai 32-bit (0x00000002).

Cached

[keluar] Nilai UINT yang menentukan apakah penyimpanan backing alokasi harus dialokasikan sebagai memori cache; secara default, penyimpanan backing alokasi disimpan sebagai memori gabungan tulis. Ketika alokasi memori yang di-cache digunakan dalam segmen yang tidak menyimpan cache koheren (misalnya, segmen memori atau segmen AGP), manajer memori video memastikan koherensi untuk konten alokasi dengan membersihkannya dari cache prosesor pada waktu yang tepat.

Ketika driver mengatur Cached dan juga mengatur anggota ExistingSysMem atau ExistingKernelSysMem , driver menunjukkan kepada manajer memori video bahwa memori yang ada dipetakan dapat di-cache. Jika memori yang ada dipetakan dapat di-cache tetapi driver gagal mengatur anggota Cache , manajer memori video tidak dapat memastikan koherensi data, dan kerusakan terjadi. Driver harus mengatur anggota Cache untuk alokasi yang akan dibaca oleh aplikasi atau driver tampilan mode pengguna. Driver tidak boleh mengatur anggota Cache untuk alokasi tulis-saja.

Ketika driver menetapkan anggota ini, driver juga harus mengatur anggota CpuVisible . Driver tidak boleh mengatur Cache pada permukaan utama.

Mengatur anggota ini setara dengan mengatur bit ketiga dari anggota Nilai 32-bit (0x00000004).

Protected

[keluar] Nilai UINT yang menentukan apakah penyimpanan backing alokasi harus dialokasikan dalam memori kernel alih-alih ruang alamat pengguna untuk melindungi alokasi dari potensi akses CPU langsung oleh aplikasi. Driver tidak dapat mengatur anggota ini dalam kombinasi dengan anggota PermanentSysMem, ExistingSysMem, atau ExistingKernelSysMem . Driver tidak boleh mengatur Dilindungi pada permukaan utama.

Mengatur anggota ini setara dengan mengatur bit keempat dari anggota Nilai 32-bit (0x00000008).

ExistingSysMem

[keluar] Nilai UINT yang menentukan apakah manajer memori video harus menggunakan rentang memori sistem yang ada sebagai penyimpanan cadangan untuk alokasi. Rentang memori sistem harus merupakan alamat mode pengguna yang valid untuk proses saat ini untuk ukuran alokasi. Rentang memori sistem juga harus diratakan halaman dan harus berukuran kelipatan halaman.

Jika rentang memori sistem adalah alamat virtual yang dapat di-cache, driver harus mengatur anggota Cache untuk memberi tahu manajer memori video untuk memastikan koherensi cache pada alokasi. Jika anggota Cache tidak ditentukan, manajer memori video menentukan bahwa rentang memori sistem tidak dapat di-cache, ditulis gabungan, atau dapat di-cache; namun, dalam situasi ini, driver memastikan koherensi cache atau menentukan bahwa koherensi cache bukan masalah untuk penggunaan yang ditentukan.

Perhatikan bahwa jenis alokasi ini secara implisit memiliki semantik kunci yang sama dengan alokasi di mana anggota PermanentSysMem ditetapkan.

Driver tidak dapat mengatur ExistingSysMem dalam kombinasi dengan anggota PermanentSysMem, Protected, atau ExistingKernelSysMem . Driver tidak boleh mengatur ExistingSysMem pada permukaan utama.

Mengatur anggota ini setara dengan mengatur bit kelima dari anggota Nilai 32-bit (0x00000010).

ExistingKernelSysMem

[keluar] Nilai UINT yang menentukan apakah manajer memori video harus menggunakan rentang memori sistem yang ada sebagai penyimpanan cadangan untuk alokasi. Rentang memori sistem harus berupa alamat mode kernel yang valid yang selaras pada halaman dan ukuran halaman yang berukuran banyak.

Jika rentang memori sistem adalah alamat virtual yang dapat di-cache, driver harus mengatur anggota Cache untuk memberi tahu manajer memori video untuk memastikan koherensi cache pada alokasi. Jika anggota Cache tidak ditentukan, manajer memori video menentukan bahwa rentang memori sistem tidak dapat di-cache, ditulis gabungan, atau dapat di-cache; namun, dalam situasi ini, driver memastikan koherensi cache atau menentukan bahwa koherensi cache bukan masalah untuk penggunaan yang ditentukan.

Perhatikan bahwa jenis alokasi ini secara implisit memiliki semantik kunci yang sama dengan alokasi di mana anggota PermanentSysMem ditetapkan.

Driver tidak dapat mengatur ExistingKernelSysMem dalam kombinasi dengan anggota PermanentSysMem, Protected, atau ExistingSysMem . Driver tidak boleh mengatur ExistingKernelSysMem pada permukaan utama.

Mengatur anggota ini setara dengan mengatur bit keenam dari anggota Nilai 32-bit (0x00000020).

FromEndOfSegment

[keluar] Nilai UINT yang menentukan apakah alokasi harus dialokasikan dari akhir segmen selama paging. Manajer memori video memindai ruang alamat segmen dan mencari ruang untuk alokasi dari akhir segmen alih-alih memindai dari awal segmen (yang merupakan perilaku default). Namun, informasi segmen yang diisyaratkan dan disukai lebih diutamakan daripada bendera ini.

Mengatur anggota ini setara dengan mengatur bit ketujuh dari anggota Nilai 32-bit (0x00000040).

Swizzled

[keluar] Nilai UINT yang menentukan apakah alokasi tergeser dan memerlukan dukungan khusus oleh manajer memori video untuk mengunci alokasi. Untuk informasi selengkapnya tentang alokasi berdenyut, lihat Mengunci Alokasi Berdenyut.

Mengatur anggota ini setara dengan mengatur bit kedelapan dari anggota Nilai 32-bit (0x00000080).

Overlay

[keluar] Nilai UINT yang menentukan apakah alokasi adalah untuk operasi overlay. Alokasi overlay disematkan dalam memori, dan manajer memori video tidak dapat mengeluarkannya kecuali proses Deteksi dan Pemulihan Waktu Habis (TDR), Plug and Play (PnP) berhenti, atau sinkronisasi tingkat tiga terjadi. Perhatikan bahwa sebelum sinkronisasi tingkat tiga terjadi, overlay biasanya dihancurkan. Secara default, alokasi overlay terbatas dan tidak dapat menempati lebih dari 20 persen terakhir segmen. Jika alokasi overlay dialokasikan di segmen aperture, driver miniport tampilan harus membatasi ukuran alokasi lain yang menggunakan segmen aperture tersebut sebagai segmen pengeluaran hingga 80 persen dari ukuran segmen. Driver miniport tampilan menunjukkan bahwa alokasi dapat menggunakan segmen untuk pengeluaran dengan menentukan bit yang sesuai untuk segmen di anggota EvictionSegmentSet dari struktur DXGK_ALLOCATIONINFO untuk alokasi. Jika driver miniport tampilan tidak membatasi ukuran alokasi lain, manajer memori video tidak dapat mengusir alokasi tersebut melalui segmen karena alokasi yang disematkan (yaitu, alokasi overlay) menempati area yang diperlukan untuk pengeluaran. Dalam hal ini, konten alokasi lain yang sedang dikeluarkan hilang, dan aplikasi yang memiliki alokasi yang hilang tidak dapat lagi dirender dengan alokasi tersebut.

Mengatur anggota ini setara dengan mengatur bit kesembilan dari anggota Nilai 32-bit (0x00000100).

Capture

[keluar] Nilai UINT yang menentukan apakah alokasi digunakan untuk operasi penangkapan. Alokasi pengambilan disematkan dalam memori yang mirip dengan alokasi overlay. Oleh karena itu, masalah yang berlaku untuk alokasi overlay juga berlaku untuk menangkap alokasi. Untuk informasi selengkapnya tentang masalah ini, lihat deskripsi bendera Overlay . Perhatikan bahwa sebelum sinkronisasi tingkat tiga terjadi, pengambilan biasanya dihentikan.

Mengatur anggota ini setara dengan mengatur bit kesepuluh dari anggota Nilai 32-bit (0x00000200).

UseAlternateVA

[keluar] Nilai UINT yang menentukan apakah alokasi utama dapat dikunci. UseAlternateVA hanya berlaku untuk alokasi utama. Jika UseAlternateVA ditentukan untuk alokasi lain, alokasi tidak dibuat. Saat alokasi utama dibuat dengan menggunakan UseAlternateVA, rentang menggeser untuk alokasi utama disiapkan saat alokasi dibuat.

Mengatur anggota ini setara dengan mengatur bit ke-11 dari anggota Nilai 32-bit (0x00000400).

SynchronousPaging

[keluar] Nilai UINT yang menentukan apakah alokasi harus di-page secara sinkron. Jika driver miniport tampilan mengatur bit ini untuk alokasi, manajer memori video akan menunggu sampai alokasi tidak lagi sibuk (yaitu, manajer memori video akan menunggu sampai unit pemrosesan grafis (GPU) melaporkan semua pagar yang mereferensikan alokasi) sebelum manajer memori video mengirimkan buffer halaman yang mereferensikan alokasi.

Demikian pula, manajer memori video akan menunggu operasi paging pada alokasi sinkron selesai sebelum manajer memori video memungkinkan driver untuk mengirimkan buffer akses memori langsung (DMA) non-halaman.

Mengatur anggota ini setara dengan mengatur bit ke-12 dari anggota Nilai 32-bit (0x00000800).

LinkMirrored

[keluar] Nilai UINT yang menentukan apakah satu instans alokasi harus direplikasi di semua adaptor fisik dalam adaptor logis (yaitu, tautan). Manajer memori video memanggil driver ke halaman dan mengeluarkan alokasi pada semua adaptor fisik dengan satu penyimpanan dukungan bersama dalam memori sistem.

Mengatur anggota ini setara dengan mengatur bit ketiga belas dari anggota Nilai 32-bit (0x00001000).

LinkInstanced

[keluar] Nilai UINT yang menentukan apakah instans alokasi yang berbeda akan di-paged in dan dikeluarkan dari semua adaptor fisik dalam adaptor logis (yaitu, tautan). Satu penyimpanan cadangan memori sistem ada per adaptor fisik dalam adaptor logis.

Mengatur anggota ini setara dengan mengatur bit keempat belas dari anggota Nilai 32-bit (0x00002000).

HistoryBuffer

[keluar] Nilai UINT yang menentukan apakah driver tampilan mode pengguna mengalokasikan buffer riwayat. Driver miniport tampilan harus mengatur bendera ini untuk menunjukkan bahwa driver mode pengguna dapat mengelola pembuatan dan penghancuran buffer riwayat.

Ketika driver miniport tampilan mengatur HistoryBuffer, driver miniport juga harus mengatur bendera CpuVisible . Jika driver mendukung segmen bukaan koheren cache, driver juga harus mengatur Cache, dan semua anggota lain harus diatur ke nol.

Mengatur anggota ini setara dengan mengatur bit kelima belas dari anggota Nilai 32-bit (0x00004000).

Didukung dimulai dengan Windows 8.1.

AccessedPhysically

Driver mode kernel mengatur bendera pada alokasi, yang diakses oleh alamat fisik mereka. Alokasi tersebut akan dialokasikan secara berdekatan dari segmen memori GPU. Alokasi tidak akan bersebelahan ketika dialokasikan dari memori sistem.

Mengatur anggota ini setara dengan mengatur bit keenam belas dari anggota Nilai 32-bit (0x00008000).

Didukung dimulai dengan Windows 10.

ExplicitResidencyNotification

Ketika bendera ini ditentukan, driver menerima operasi buffer halaman NotifyResidency ketika residensi alokasi diubah (dikeluarkan, diterapkan). Bendera hanya dapat diatur saat bendera AccessedPhysically diatur.

Mengatur anggota ini setara dengan mengatur bit ketujuh belas dari anggota Nilai 32-bit (0x00010000).

Didukung dimulai dengan Windows 10.

HardwareProtected

Ketika anggota ini diatur, alokasi akan menyimpan konten yang digunakan untuk manajemen hak digital perangkat keras (DRM).

CpuVisibleOnDemand

Ketika anggota ini diatur, manajer memori video akan mencoba mengalokasikan alamat virtual untuk alokasi ketika dipetakan/dikunci. Ini akan mengakibatkan alokasi tidak memiliki alamat virtual permanen, yang mengurangi jumlah ruang alamat virtual yang digunakan. Ini berperilaku mirip dengan bendera CpuVisible karena itu adalah alokasi yang dapat diakses langsung oleh CPU, tetapi hanya mendapatkan alamat virtual untuk itu "sesuai permintaan" alih-alih ditetapkan secara permanen.

Reserved

Dicadangkan untuk penggunaan sistem. Tersedia dimulai dengan Windows 10.

DXGK_ALLOC_RESERVED16

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED15

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED14

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED13

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED12

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED11

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED10

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED9

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED4

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED3

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED2

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED1

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

DXGK_ALLOC_RESERVED0

[in] Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.

Value

[out] Anggota dalam serikat yang DXGK_ALLOCATIONINFOFLAGS berisi yang dapat menyimpan nilai 32-bit yang mengidentifikasi properti alokasi.

Keterangan

Driver miniport tampilan yang menargetkan versi WDDM apa pun yang lebih lama dari WDDM 2.0 menggunakan struktur ini untuk menentukan bendera ini untuk manajer memori video. Driver yang menargetkan versi >WDDM = WDDM 2.0 harus menggunakan DXGK_ALLOCATIONINFOFLAGS_WDDM2_0.

Anda dapat menentukan properti alokasi dengan mengatur bit di anggota Nilai 32-bit atau dengan mengatur masing-masing anggota struktur dalam penyatuan yang dikandung struktur DXGK_ALLOCATIONINFOFLAGS .

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Header d3dkmddi.h (termasuk D3dkmddi.h)

Lihat juga

DXGK_ALLOCATIONINFO

DXGK_ALLOCATIONINFOFLAGS_WDDM2_0

DxgkDdiBuildPagingBuffer

pfnLockCb

pfnUnlockCb