struktur DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 (d3dkmddi.h)

Struktur DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 mengidentifikasi properti untuk alokasi.

Sintaks

typedef struct _DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 {
  union {
    struct {
      UINT CpuVisible : 1;
      UINT PermanentSysMem : 1;
      UINT Cached : 1;
      UINT Protected : 1;
      UINT ExistingSysMem : 1;
      UINT ExistingKernelSysMem : 1;
      UINT FromEndOfSegment : 1;
      UINT DisableLargePageMapping : 1;
      UINT Overlay : 1;
      UINT Capture : 1;
      UINT CreateInVpr : 1;
      UINT Reserved00 : 1;
      UINT DXGK_ALLOC_RESERVED17 : 1;
      UINT Reserved02 : 1;
      UINT MapApertureCpuVisible : 1;
      UINT Reserved03 : 1;
      UINT HistoryBuffer : 1;
      UINT AccessedPhysically : 1;
      UINT ExplicitResidencyNotification : 1;
      UINT HardwareProtected : 1;
      UINT CpuVisibleOnDemand : 1;
      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_WDDM2_0;

Anggota

CpuVisible

[out] Nilai UINT yang menentukan apakah alokasi dapat diakses langsung oleh CPU. Driver miniport tampilan harus mengatur bendera ini agar driver tampilan mode pengguna 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 anggota Nilai 32-bit (0x00000001).

PermanentSysMem

[out] 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 bukanlah target operasi tulis sejak halaman di).

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 menetapkan PermanentSysMem, driver juga harus mengatur anggota CpuVisible . Driver tidak boleh mengatur PermanentSysMem pada permukaan utama.

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

Cached

[out] Nilai UINT yang menentukan apakah penyimpanan cadangan alokasi harus dialokasikan sebagai memori cache; secara default, penyimpanan cadangan alokasi disimpan sebagai memori gabungan tulis. Ketika alokasi memori cache digunakan dalam segmen yang tidak 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

[out] Nilai UINT yang menentukan apakah penyimpanan dukungan 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

[out] 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 berupa halaman 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, tulis digabungkan, 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 tempat 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

[out] 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 beberapa.

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, tulis digabungkan, 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 tempat 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

[out] Nilai UINT yang menentukan apakah alokasi harus dialokasikan dari akhir segmen selama halaman. 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).

DisableLargePageMapping

[out] Nilai UINT yang menentukan apakah pemetaan halaman besar untuk alokasi harus dinonaktifkan. Dukungan untuk Halaman Besar untuk driver ditambahkan mulai dari WDDM2.1. Halaman besar digunakan saat menerjemahkan alamat virtual, di mana tabel halaman tingkat terendah digantikan oleh halaman besar yang memiliki cakupan sama dengan tabel halaman tingkat 0. Bendera ini menonaktifkannya, dan menggunakan tabel halaman untuk terjemahan alamat.

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

Overlay

[out] 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 Batas Waktu (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 dalam 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 dikeluarkan hilang, dan aplikasi yang memiliki alokasi yang hilang tidak dapat lagi dirender dengan alokasi tersebut.

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

Capture

[out] Nilai UINT yang menentukan apakah alokasi digunakan untuk operasi pengambilan. 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, tangkapan biasanya dihentikan.

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

CreateInVpr

[out] Nilai UINT yang menentukan apakah alokasi harus dibuat dalam rentang yang dilindungi video. Anggota ini digunakan untuk manajemen hak digital perangkat keras (DRM) dalam versi >WDDM = WDDM 2.1.

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

Reserved00

[in] Untuk versi WDDM yang lebih lama dari WDDM 2.1, anggota ini dicadangkan dan harus diatur ke nol.

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

DXGK_ALLOC_RESERVED17

[in] Anggota ini dicadangkan dan harus diatur ke nol.

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

Reserved02

[in] Anggota ini dicadangkan dan harus diatur ke nol.

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

MapApertureCpuVisible

[in] Ketika diatur, menunjukkan bahwa driver memerlukan akses CPU ke memori selama panggilan DxgkDdiBuildPagingBuffer untuk operasi DXGK_OPERATION_MAP_APERTURE_SEGMENT2 . MapApertureCpuVisible adalah bagian dari fungsionalitas MapAperatureSegment2DxgkDdiBuildPagingBuffer, sehingga driver harus mengatur DXGK_VIDMMCAPS MapAperature2Supported untuk menggunakan bidang ini. Jika MapAperature2Supported tidak diatur tetapi driver menentukan MapApertureCpuVisible, panggilan ke DxgkDdiCreateAllocation akan gagal. Lihat Remapping IOMMU DMA untuk informasi selengkapnya. Didukung mulai windows Server 2022.

Reserved03

[in] Anggota ini dicadangkan dan harus diatur ke nol.

HistoryBuffer

[out] 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.

Saat driver miniport tampilan mengatur HistoryBuffer, driver tersebut juga harus mengatur bendera CpuVisible . Jika driver mendukung segmen aperture 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).

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 berdekatan ketika dialokasikan dari memori sistem.

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

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).

HardwareProtected

Ketika anggota ini diatur, alokasi akan menyimpan konten yang digunakan untuk DRM perangkat keras.

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.

DXGK_ALLOC_RESERVED16

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED15

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED14

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED13

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED12

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED11

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED10

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED9

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED4

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED3

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED2

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED1

[in] Anggota ini dicadangkan dan harus diatur ke nol.

DXGK_ALLOC_RESERVED0

[in] Anggota ini dicadangkan dan harus diatur ke nol.

Value

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

Keterangan

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

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 10
Header d3dkmddi.h (termasuk D3dkmddi.h)

Lihat juga

DXGK_ALLOCATIONINFO

DXGK_ALLOCATIONINFOFLAGS

DxgkDdiBuildPagingBuffer

pfnLockCb

pfnUnlockCb