Bagikan melalui


struktur DXGK_SEGMENTFLAGS (d3dkmddi.h)

Struktur DXGK_SEGMENTFLAGS mengidentifikasi properti untuk segmen yang disediakan driver melalui panggilan ke fungsi DxgkDdiQueryAdapterInfo-nya .

Sintaks

typedef struct _DXGK_SEGMENTFLAGS {
  union {
    struct {
      UINT Aperture : 1;
      UINT Agp : 1;
      UINT CpuVisible : 1;
      UINT UseBanking : 1;
      UINT CacheCoherent : 1;
      UINT PitchAlignment : 1;
      UINT PopulatedFromSystemMemory : 1;
      UINT PreservedDuringStandby : 1;
      UINT PreservedDuringHibernate : 1;
      UINT PartiallyPreservedDuringHibernate : 1;
      UINT DirectFlip : 1;
      UINT Use64KBPages : 1;
      UINT ReservedSysMem : 1;
      UINT SupportsCpuHostAperture : 1;
      UINT SupportsCachedCpuHostAperture : 1;
      UINT ApplicationTarget : 1;
      UINT VprSupported : 1;
      UINT VprPreservedDuringStandby : 1;
      UINT EncryptedPagingSupported : 1;
      UINT LocalBudgetGroup : 1;
      UINT NonLocalBudgetGroup : 1;
      UINT PopulatedByReservedDDRByFirmware : 1;
#if ...
      UINT Reserved : 10;
#elif
      UINT Reserved : 11;
#elif
      UINT Reserved : 21;
#else
      UINT Reserved : 22;
#endif
    };
    UINT Value;
  };
} DXGK_SEGMENTFLAGS;

Anggota

Aperture

[keluar] Nilai UINT yang menentukan apakah segmen tersebut adalah segmen aperture, bukan segmen memori. Segmen aperture tidak memiliki halaman fisik yang dapat menyimpan konten untuk alokasi. Ketika manajer memori video halaman alokasi ke segmen memori, manajer memori mentransfer konten alokasi dari penyimpanan cadangan memori sistem ke lokasi segmen. Ketika manajer memori video halaman alokasi ke segmen aperture, manajer memori memetakan halaman fisik penyimpanan dukungan alokasi ke segmen.

Jika driver menentukan anggota ini, driver juga harus mengimplementasikan jenis operasi map-aperture-segment dan unmap-aperture-segment untuk fungsi DxgkDdiBuildPagingBuffer-nya .

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

Agp

[keluar] Nilai UINT yang menentukan apakah segmen tersebut adalah segmen aperture jenis AGP**, yang menggunakan sebagian aperture AGP yang diekspos chipset. Manajer memori video mengalokasikan halaman untuk bukaan yang mendasar dan berkomunikasi dengan driver tabel pemetaan ulang alamat grafis (GART) untuk memetakan dan membatalkan pemetaan memori untuk bukaan. Karena hanya satu segmen AGP yang dapat ada, driver tidak boleh menentukan bendera bit-field Agp dengan bendera bit-field DXGK_SEGMENTFLAGS lainnya.

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

CpuVisible

[keluar] Nilai UINT yang menentukan apakah segmen memori dapat diakses oleh CPU di alamat yang ditentukan oleh anggota CpuTranslatedAddress dari struktur DXGK_SEGMENTDESCRIPTOR yang menjelaskan segmen memori.

Anggota ini tidak memiliki arti untuk segmen aperture, termasuk segmen aperture jenis AGP. Satu-satunya pengecualian terjadi ketika driver tampilan mode pengguna belum menyiapkan alamat virtual alternatif untuk alokasi utama (yaitu, ketika driver belum mengatur UseAlternateVA di anggota Bendera dari struktur D3DDDICB_LOCKFLAGS selama panggilan ke fungsi pfnLockCb ).

Lihat Keterangan untuk informasi selengkapnya.

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

UseBanking

[keluar] Nilai UINT yang menentukan apakah segmen dibagi menjadi bank yang digunakan driver untuk memberikan petunjuk kepada manajer memori video tentang penempatan alokasi dalam segmen. Driver juga harus menentukan informasi bank yang valid di anggota NbOfBanks dan pBankRangeTable dari struktur DXGK_SEGMENTDESCRIPTOR yang menjelaskan segmen.

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

CacheCoherent

[keluar] Nilai UINT yang menentukan apakah segmen aperture dapat mempertahankan koherensi cache dengan halaman yang dapat di-cache yang dipetakan ke dalam bukaan. Anggota ini hanya dapat diatur dengan mengatur anggota Aperture (yaitu, CacheCoherent tidak memiliki arti untuk segmen memori).

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

PitchAlignment

[keluar] Nilai UINT yang menentukan apakah alokasi yang dipetakan ke dalam segmen harus diratakan. Untuk jenis segmen ini, manajer memori video menggunakan anggota Ukuran struktur DXGK_ALLOCATIONINFO untuk alokasi untuk mengalokasikan penyimpanan cadangan untuk alokasi. Namun, manajer memori video menggunakan anggota PitchAlignedSize dari DXGK_ALLOCATIONINFO untuk mengalokasikan sumber daya untuk segmen. Alokasi yang ditargetkan untuk jenis segmen ini biasanya memiliki ukuran yang berbeda untuk penyimpanan backing dan untuk segmen. Ketika ukuran penyimpanan cadangan tidak cocok dengan ukuran segmen, driver harus menentukan cara memindahkan data dengan benar dalam alokasi. Jenis segmen ini tidak dapat digunakan untuk pengeluaran.

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

PopulatedFromSystemMemory

[keluar] Nilai UINT yang menentukan apakah segmen memori benar-benar diisi dari memori sistem yang dialokasikan driver selama inisialisasi. Jika segmen memori diisi dari memori sistem yang dicadangkan BIOS dan tidak dapat diakses oleh sistem operasi (artinya, sistem operasi tidak menghitung memori sistem ini ketika sistem operasi melaporkan jumlah total memori sistem), driver tidak boleh mengatur bendera ini. Bendera ini tidak valid dan diabaikan pada segmen bukaan.

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

PreservedDuringStandby

[keluar] Nilai UINT yang menentukan apakah segmen dipertahankan dalam transisi ke status daya sistem siaga.

Untuk informasi selengkapnya tentang opsi transisi daya, lihat Keterangan.

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

Didukung dimulai dengan Windows 8.

PreservedDuringHibernate

[keluar] Nilai UINT yang menentukan apakah segmen dipertahankan dalam transisi ke status daya sistem hibernasi. Jangan atur bendera ini kecuali anggota PreservedDuringStandby juga diatur. Untuk informasi selengkapnya tentang opsi transisi daya, lihat Keterangan.

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

Didukung dimulai dengan Windows 8.

PartiallyPreservedDuringHibernate

[keluar] Nilai UINT yang menentukan apakah segmen sebagian dipertahankan dalam transisi ke status daya sistem hibernasi. Jangan atur bendera ini kecuali anggota PreservedDuringStandby juga diatur. Untuk informasi selengkapnya tentang opsi transisi daya, lihat Keterangan.

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

Didukung dimulai dengan Windows 8.

DirectFlip

[keluar] Nilai UINT yang menentukan apakah segmen mendukung alokasi Direct Flip. Dalam hal ini, driver harus memastikan bahwa alokasi Flip Langsung dapat disematkan dan dipindai dari segmen ini.

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

Didukung dimulai dengan Windows 8.

Use64KBPages

[keluar] Saat diatur, segmen memori GPU mendukung halaman 64 KB. Jika tidak, halaman 4 KB didukung. Ketika driver mengatur batas dan alokasi dapat di-paged-in ke segmen, perataan alokasi, yang dikembalikan oleh driver mode kernel dari DXGK_ALLOCATIONINFO, harus kelipatan 64 KB.

Didukung dimulai dengan Windows 10.

ReservedSysMem

[keluar] Dicadangkan untuk penggunaan sistem dan tidak boleh diatur oleh driver mode kernel.

Didukung dimulai dengan Windows 10.

SupportsCpuHostAperture

[keluar] Ketika diatur, segmen dapat dipetakan melalui bukaan host CPU. Bendera ini tidak dapat digunakan dalam kombinasi dengan bendera CpuVisible .

Didukung dimulai dengan Windows 10.

SupportsCachedCpuHostAperture

[keluar] Ketika diatur, ini menunjukkan bahwa perangkat keras mendukung bukaan host CPU koheren cache CPU. Selain itu, bendera SupportsCpuHostAperture harus diatur. Bendera biasanya diatur oleh driver emulasi GPU perangkat lunak.

Didukung dimulai dengan Windows 10.

ApplicationTarget

[keluar] Ketika ditetapkan, itu menunjukkan bahwa segmen ini harus ditargetkan oleh anggaran aplikasi.

Didukung dimulai dengan Windows 10.

VprSupported

[keluar] Saat diatur, menunjukkan bahwa Wilayah Yang Dilindungi Video (VPR) didukung.

VprPreservedDuringStandby

[keluar] Ketika diatur, menunjukkan bahwa konten VPR dipertahankan selama siaga.

EncryptedPagingSupported

[keluar] Ketika diatur, menunjukkan bahwa alokasi yang dilindungi perangkat keras dienkripsi selama penomoran.

LocalBudgetGroup

[keluar] Ketika diatur, menunjukkan bahwa segmen ini dihitung terhadap grup anggaran segmen memori lokal.

NonLocalBudgetGroup

[keluar] Ketika diatur, menunjukkan bahwa segmen ini dihitung terhadap grup anggaran segmen memori non-lokal.

PopulatedByReservedDDRByFirmware

[keluar] Ketika diatur, menunjukkan bahwa segmen ini diisi dari memori DDR sistem cadangan oleh firmware. Tersedia dimulai dengan Windows Server 2022 (WDDM 2.9).

Reserved

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

Value

[keluar] Anggota dalam serikat yang DXGK_SEGMENTFLAGS berisi yang dapat menyimpan nilai 32-bit yang mengidentifikasi properti segmen.

Keterangan

Driver dapat menentukan properti segmen dengan mengatur bit di anggota Nilai 32-bit atau dengan mengatur masing-masing anggota struktur dalam gabungan yang DXGK_SEGMENTFLAGS berisi.

Perhatikan bahwa untuk segmen aperture jenis AGP, driver harus secara eksklusif mengatur anggota Agp struktur dalam serikat yang DXGK_SEGMENTFLAGS berisi. Meskipun segmen aperture jenis AGP adalah bukaan dan terlihat oleh CPU, jika ada anggota lain yang diatur, adaptor gagal diinisialisasi.

Dalam kasus khusus di mana alokasi menggunakan segmen aperture pada alokasi utama bersama (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA.StandardAllocationTypeD3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE), dan DXGK_ALLOCATIONINFOFLAGS. UseAlternateVA tidak diatur, driver harus menggunakan alokasi utama yang didukung bagian (DXGK_VIDMMCAPS.SectionBackedPrimary diatur) ketika fungsi DxgkDdiQueryAdapterInfo driver dipanggil. Dengan menggunakan primer yang didukung bagian, Anda dapat menghindari batasan CpuVisible untuk segmen aperture.

Anda dapat menghindari batasan CpuVisible untuk segmen aperture dengan menggunakan alokasi utama bersama yang didukung bagian. Dalam hal ini, gunakan segmen aperture pada alokasi utama bersama (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA.StandardAllocationTypeD3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE), jangan atur DXGK_ALLOCATIONINFOFLAGS. UseAlternateVA, dan gunakan alokasi utama yang didukung bagian (diatur DXGK_VIDMMCAPS.SectionBackedPrimary) ketika fungsi DxgkDdiQueryAdapterInfo driver dipanggil.

Pengaturan siaga yang dioptimalkan

Kombinasi nilai untuk anggota PreservedDuringStandby, PreservedDuringHibernate, dan PartiallyPreservedDuringHibernate menentukan apakah segmen dihapus menyeluruh dari kontennya saat sistem memasuki status sistem berdaya rendah (siaga), sebagai berikut.

Dipertahankan Selama Siaga Dipertahankan Selama Hibernasi Sebagian Dipertahankan Selama Hibernasi Status Siaga Status Hibernasi
1 1 1 invalid invalid
1 1 0 tidak dibersihkan tidak dibersihkan
1 0 1 tidak dibersihkan sebagian dibersihkan
1 0 0 tidak dibersihkan Dibersihkan
0 1 1 invalid invalid
0 1 0 invalid invalid
0 0 1 invalid invalid
0 0 0 Dibersihkan Dibersihkan

Sistem operasi tidak mengenali kombinasi dalam tabel ini yang ditandai "tidak valid".

Jika mode tidur hibrid diaktifkan, sistem bertindak seolah-olah berhibernasi: ini menghapus menyeluruh segmen yang tidak dipertahankan selama hibernasi, bahkan jika masuk ke status berdaya rendah.

Persyaratan

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

Lihat juga

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTDESCRIPTOR3

DxgkDdiBuildPagingBuffer

DxgkDdiQueryAdapterInfo