struktur DXGKARG_BUILDPAGINGBUFFER (d3dkmddi.h)
Struktur DXGKARG_BUILDPAGINGBUFFER menjelaskan parameter untuk panggilan balik DxgkDdiBuildPagingBuffer** yang membangun buffer halaman untuk digunakan dalam operasi transfer memori.
Sintaks
typedef struct _DXGKARG_BUILDPAGINGBUFFER {
VOID *pDmaBuffer;
UINT DmaSize;
VOID *pDmaBufferPrivateData;
UINT DmaBufferPrivateDataSize;
DXGK_BUILDPAGINGBUFFER_OPERATION Operation;
UINT MultipassOffset;
union {
struct {
HANDLE hAllocation;
UINT TransferOffset;
SIZE_T TransferSize;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Source;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Destination;
DXGK_TRANSFERFLAGS Flags;
UINT MdlOffset;
} Transfer;
struct {
HANDLE hAllocation;
SIZE_T FillSize;
UINT FillPattern;
struct {
UINT SegmentId;
LARGE_INTEGER SegmentAddress;
} Destination;
} Fill;
struct {
HANDLE hAllocation;
DXGK_DISCARDCONTENTFLAGS Flags;
UINT SegmentId;
PHYSICAL_ADDRESS SegmentAddress;
} DiscardContent;
struct {
UINT SegmentId;
PHYSICAL_ADDRESS PhysicalAddress;
} ReadPhysical;
struct {
UINT SegmentId;
PHYSICAL_ADDRESS PhysicalAddress;
} WritePhysical;
struct {
HANDLE hDevice;
HANDLE hAllocation;
UINT SegmentId;
SIZE_T OffsetInPages;
SIZE_T NumberOfPages;
PMDL pMdl;
DXGK_MAPAPERTUREFLAGS Flags;
ULONG MdlOffset;
} MapApertureSegment;
struct {
HANDLE hDevice;
HANDLE hAllocation;
UINT SegmentId;
SIZE_T OffsetInPages;
SIZE_T NumberOfPages;
PHYSICAL_ADDRESS DummyPage;
} UnmapApertureSegment;
struct {
HANDLE hAllocation;
UINT TransferOffset;
SIZE_T TransferSize;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Source;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Destination;
DXGK_TRANSFERFLAGS Flags;
UINT SwizzlingRangeId;
UINT SwizzlingRangeData;
} SpecialLockTransfer;
struct {
HANDLE hAllocation;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
PVOID VirtualAddress;
D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress;
} Destination;
} InitContextResource;
DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL TransferVirtual;
DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL FillVirtual;
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE UpdatePageTable;
DXGK_BUILDPAGINGBUFFER_FLUSHTLB FlushTlb;
DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES CopyPageTableEntries;
DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION UpdateContextAllocation;
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY NotifyResidency;
DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE SignalMonitoredFence;
struct {
HANDLE hDevice;
HANDLE hAllocation;
UINT SegmentId;
SIZE_T OffsetInPages;
SIZE_T NumberOfPages;
DXGK_ADL Adl;
DXGK_MAPAPERTUREFLAGS Flags;
ULONG AdlOffset;
PVOID CpuVisibleAddress;
} MapApertureSegment2;
DXGK_BUILDPAGINGBUFFER_NOTIFY_FENCE_RESIDENCY NotifyFenceResidency;
DXGK_BUILDPAGINGBUFFER_MAPMMU MmapMmu;
DXGK_BUILDPAGINGBUFFER_UNMAPMMU UnmapMmu;
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY2 NotifyResidency2;
DXGK_BUILDPAGINGBUFFER_NOTIFYALLOC NotifyAllocation;
struct {
UINT Reserved[64];
} Reserved;
};
HANDLE hSystemContext;
D3DGPU_VIRTUAL_ADDRESS DmaBufferGpuVirtualAddress;
UINT DmaBufferWriteOffset;
} DXGKARG_BUILDPAGINGBUFFER;
Anggota
pDmaBuffer
[masuk/keluar] Alamat virtual ke byte pertama yang tersedia di penyangga halaman. Ketika driver pertama kali dipanggil dengan buffer halaman baru, alamat virtual ini selaras pada 4 KB. Driver mengemas operasi dengan ketat di buffer halaman sampai buffer halaman penuh dan kemudian menggunakan buffer halaman baru. Oleh karena itu, jika unit pemrosesan grafis (GPU) memerlukan penyelarasan khusus untuk pengiriman paging-buffer, driver harus memberlakukan penyelarasan ini dengan mengayuh operasi yang ditulisnya ke buffer paging. Sebelum fungsi DxgkDdiBuildPagingBuffer kembali, driver harus memperbarui pDmaBuffer untuk menunjuk melewati byte terakhir yang ditulis ke buffer halaman.
DmaSize
[masuk/keluar] Ukuran, dalam byte, dari buffer halaman yang ditentukan pDmaBuffer .
pDmaBufferPrivateData
[masuk/keluar] Penunjuk ke struktur data privat residen driver yang terkait dengan buffer akses memori langsung (DMA) (yaitu, paging buffer) yang ditentukan pDmaBuffer .
DmaBufferPrivateDataSize
[masuk/keluar] Jumlah byte yang tetap berada dalam struktur data privat yang dituju pDmaBufferPrivateData untuk operasi saat ini.
Operation
[in] Nilai berjenis DXGK_BUILDPAGINGBUFFER_OPERATION yang menunjukkan jenis operasi memori yang akan dilakukan.
MultipassOffset
[masuk/keluar] Nilai UINT yang menentukan kemajuan operasi paging jika beberapa buffer halaman diperlukan. Driver menetapkan nilai ini untuk menunjukkan pemisahan menjadi beberapa buffer halaman untuk lebih dari satu operasi transfer. Misalnya, driver dapat menyimpan nomor halaman yang terakhir ditransfer untuk transfer berbasis halaman.
Transfer
[in] Struktur yang menjelaskan operasi transfer.
Transfer.hAllocation
[in] Handel untuk alokasi bahwa fungsi DxgkDdiCreateAllocation driver sebelumnya dikembalikan dalam anggota hAllocation dari struktur DXGK_ALLOCATIONINFO, yang merupakan bagian dari anggota pAllocationInfo struktur DXGKARG_CREATEALLOCATION. Handel alokasi menunjuk ke buffer yang berisi data driver privat untuk transfer.
Transfer.TransferOffset
[in] Offset, dalam byte, dari halaman pertama dalam alokasi yang ditransfer. Offset ini hanya diterapkan ke lokasi yang dijelaskan lokasi segmen. Offset ini tidak berlaku untuk deskripsi MDL dari rentang memori. Jika driver memerlukan lebih dari satu buffer halaman untuk menyelesaikan transfer (yaitu, driver mengembalikan STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER dari fungsi DxgkDdiBuildPagingBuffer ), TransferOffset sama untuk setiap panggilan ke DxgkDdiBuildPagingBuffer untuk transfer ini.
Transfer.TransferSize
[in] Ukuran, dalam byte, dari informasi memori yang akan ditransfer.
Transfer.Source
[in] Struktur yang menjelaskan alokasi sumber. Struktur ini berisi anggota SegmentId dan gabungan yang berisi offset ke dalam segmen alokasi sumber (SegmentAddress) atau pointer ke MDL untuk sumber (pMdl).
Transfer.Source.SegmentId
[in] Pengidentifikasi segmen dalam alokasi sumber, atau nol jika alokasi sumber dijelaskan oleh anggota pMdl dari serikat pekerja yang dikandung Sumber .
Transfer.Source.SegmentAddress
[in] Alamat segmen sumber, jika anggota SegmentIdSumber bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
Transfer.Source.pMdl
[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk sumber, jika anggota SegmentIdSumber adalah nol.
Transfer.Destination
[in] Struktur yang menjelaskan alokasi tujuan. Struktur ini berisi anggota SegmentId dan gabungan yang berisi offset ke dalam segmen alokasi tujuan (SegmentAddress) atau penunjuk ke MDL untuk tujuan (pMdl).
Transfer.Destination.SegmentId
[in] Pengidentifikasi segmen dalam alokasi tujuan, atau nol jika alokasi tujuan dijelaskan oleh anggota pMdl dari serikat pekerja yang berisi Tujuan .
Transfer.Destination.SegmentAddress
[in] Alamat segmen tujuan, jika anggota SegmentIdTujuan bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
Transfer.Destination.pMdl
[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk tujuan, jika anggota SegmentIdTujuan adalah nol.
Transfer.Flags
[in] Struktur DXGK_TRANSFERFLAGS yang mengidentifikasi, dalam bendera bidang bit, jenis operasi transfer kunci khusus yang akan dilakukan.
Transfer.MdlOffset
[in] Offset, di halaman memori sistem, dalam struktur MDL yang dirujuk anggota pMdl , ke halaman memori sistem pertama untuk operasi saat ini. Driver dapat memperoleh alamat fisik halaman memori sistem pertama dengan memanggil fungsi [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray sebagai berikut.
MmGetMdlPfnArray(pMdl)[MdlOffset];
Fill
[in] Struktur yang menjelaskan operasi pengisian.
Fill.hAllocation
[in] Handel ke alokasi yang berisi konten untuk diisi.
Fill.FillSize
[in] Ukuran, dalam byte, dari informasi memori yang akan diisi.
Fill.FillPattern
[in] Pola untuk mengisi tujuan dengan. Manajer memori video menggunakan informasi ini untuk menginisialisasi memori video ke pola tertentu ketika alokasi tanpa konten pertama kali di-paged in. Dalam hal ini, tidak ada sumber untuk permintaan isian—hanya ada tujuan.
Fill.Destination
[in] Struktur yang menjelaskan alokasi tujuan untuk operasi pengisian.
Fill.Destination.SegmentId
[in] Pengidentifikasi segmen dalam alokasi tujuan.
Fill.Destination.SegmentAddress
[in] Alamat segmen tujuan. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
DiscardContent
[in] Struktur yang menjelaskan operasi membuang konten.
DiscardContent.hAllocation
[in] Handel ke alokasi yang berisi konten untuk dibuang.
DiscardContent.Flags
[in] Struktur DXGK_DISCARDCONTENTFLAGS yang mengidentifikasi, dalam bendera bidang bit, jenis operasi buang-konten untuk dilakukan.
DiscardContent.SegmentId
[in] Pengidentifikasi segmen dalam alokasi untuk membuang konten.
DiscardContent.SegmentAddress
[in] Jenis data PHYSICAL_ADDRESS (yang didefinisikan sebagai LARGE_INTEGER) yang menunjukkan alamat segmen. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr
. Lokasi ini adalah tempat asal konten dibuang.
ReadPhysical
[in] Struktur yang menjelaskan operasi baca-fisik.
ReadPhysical.SegmentId
[in] Pengidentifikasi segmen tempat data dibaca.
ReadPhysical.PhysicalAddress
[in] Jenis data PHYSICAL_ADDRESS (yang didefinisikan sebagai LARGE_INTEGER) yang menunjukkan alamat fisik, dalam segmen yang ditentukan SegmentId , tempat data dibaca.
WritePhysical
[in] Struktur yang menjelaskan operasi tulis-fisik.
WritePhysical.SegmentId
[in] Pengidentifikasi segmen tempat data ditulis.
WritePhysical.PhysicalAddress
[in] Jenis data PHYSICAL_ADDRESS (yang didefinisikan sebagai LARGE_INTEGER) yang menunjukkan alamat fisik, dalam segmen yang ditentukan SegmentId , tempat data ditulis.
MapApertureSegment
[in] Struktur yang menjelaskan operasi map-aperture-segment menggunakan MDL.
MapApertureSegment.hDevice
[in] Handel ke perangkat yang memiliki alokasi yang ditentukan hAllocation yang dipetakan ke segmen aperture yang ditentukan SegmentId .
Untuk alokasi bersama, hDevice diatur ke perangkat yang ditentukan manajer memori video untuk menjadi pemilik alokasi.
hDevice adalah NULL untuk alokasi utama.
MapApertureSegment.hAllocation
[in] Handel ke alokasi yang dipetakan ke segmen aperture yang ditentukan SegmentId .
hAllocationADALAH NULL ketika buffer DMA dipetakan ke segmen aperture karena buffer DMA tidak dibuat secara eksplisit oleh driver.
MapApertureSegment.SegmentId
[in] Pengidentifikasi segmen aperture untuk dikonfigurasi.
MapApertureSegment.OffsetInPages
[in] Offset, di halaman, dari awal segmen ke halaman pertama untuk dipetakan.
MapApertureSegment.NumberOfPages
[in] Jumlah halaman yang akan dipetakan.
MapApertureSegment.pMdl
[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem fisik untuk dipetakan ke segmen aperture.
MapApertureSegment.Flags
[in] Struktur DXGK_MAPAPERTUREFLAGS yang mengidentifikasi, dalam bendera bidang bit, jenis operasi map-aperture-segment yang akan dilakukan.
MapApertureSegment.MdlOffset
[in] Offset, di halaman memori sistem, dalam struktur MDL yang dirujuk anggota pMdl , ke halaman memori sistem pertama untuk operasi saat ini. Driver dapat memperoleh alamat fisik halaman memori sistem pertama dengan memanggil fungsi [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray sebagai berikut.
MmGetMdlPfnArray(pMdl)[MdlOffset];
UnmapApertureSegment
[in] Struktur yang menjelaskan operasi unmap-aperture-segment.
UnmapApertureSegment.hDevice
[in] Handel ke perangkat yang memiliki alokasi yang ditentukan hAllocation yang tidak dipetakan dari segmen aperture yang ditentukan SegmentId .
Untuk alokasi bersama, hDevice diatur ke perangkat yang ditentukan manajer memori video untuk menjadi pemilik alokasi.
hDevice adalah NULL untuk alokasi utama.
UnmapApertureSegment.hAllocation
[in] Handel ke alokasi yang tidak dipetakan dari segmen aperture yang ditentukan SegmentId .
hAllocationADALAH NULL ketika buffer DMA tidak dipetakan dari segmen aperture karena buffer DMA tidak dibuat secara eksplisit oleh driver.
UnmapApertureSegment.SegmentId
[in] Pengidentifikasi segmen aperture untuk dikonfigurasi.
UnmapApertureSegment.OffsetInPages
[in] Offset, di halaman, dari awal segmen ke halaman pertama hingga unmap.
UnmapApertureSegment.NumberOfPages
[in] Jumlah halaman yang akan di-unmap.
UnmapApertureSegment.DummyPage
[in] Jenis data PHYSICAL_ADDRESS (yang didefinisikan sebagai LARGE_INTEGER) yang menunjukkan alamat fisik halaman tempat penampung tempat driver harus memetakan rentang yang tidak dipetakan.
SpecialLockTransfer
[in] Struktur yang menjelaskan operasi transfer kunci khusus.
SpecialLockTransfer.hAllocation
[in] Handel untuk alokasi bahwa fungsi DxgkDdiCreateAllocation driver sebelumnya dikembalikan dalam anggota hAllocation dari struktur DXGK_ALLOCATIONINFO, yang merupakan bagian dari anggota pAllocationInfo struktur DXGKARG_CREATEALLOCATION. Handel alokasi menunjuk ke buffer yang berisi data driver privat untuk transfer kunci khusus.
SpecialLockTransfer.TransferOffset
[in] Offset, dalam byte, dari halaman pertama dalam alokasi yang ditransfer. Offset ini hanya diterapkan ke lokasi yang dijelaskan lokasi segmen. Offset ini tidak berlaku untuk deskripsi MDL dari rentang memori. Jika driver memerlukan lebih dari satu buffer halaman untuk menyelesaikan transfer (yaitu, driver mengembalikan STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER dari fungsi DxgkDdiBuildPagingBuffer ), TransferOffset sama untuk setiap panggilan ke DxgkDdiBuildPagingBuffer untuk transfer ini.
SpecialLockTransfer.TransferSize
[in] Ukuran, dalam byte, dari informasi memori yang akan ditransfer.
SpecialLockTransfer.Source
[in] Struktur yang menjelaskan alokasi sumber. Struktur ini berisi anggota SegmentId dan gabungan yang berisi offset ke dalam segmen alokasi sumber (SegmentAddress) atau pointer ke MDL untuk sumber (pMdl).
SpecialLockTransfer.Source.SegmentId
[in] Pengidentifikasi segmen dalam alokasi sumber, atau nol jika alokasi sumber dijelaskan oleh anggota pMdl dari serikat pekerja yang dikandung Sumber .
SpecialLockTransfer.Source. (union yang tidak disebutkan namanya)
[in] Gabungan yang berisi offset ke dalam segmen alokasi sumber (SegmentAddress) atau pointer ke MDL untuk sumber (pMdl).
SpecialLockTransfer.Source.SegmentAddress
[in] Alamat segmen sumber, jika anggota SegmentIdSumber bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
SpecialLockTransfer.Source.pMdl
[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk sumber, jika anggota SegmentIdSumber adalah nol.
SpecialLockTransfer.Destination
[in] Struktur yang menjelaskan alokasi tujuan. Struktur ini berisi anggota SegmentId dan serikat pekerja yang berisi offset ke dalam segmen alokasi tujuan (SegmentAddress) atau pointer ke MDL untuk tujuan (pMdl).
SpecialLockTransfer.Destination.SegmentId
[in] Pengidentifikasi segmen dalam alokasi tujuan, atau nol jika alokasi tujuan dijelaskan oleh anggota pMdl dari serikat pekerja yang berisi Tujuan .
SpecialLockTransfer.Destination. (union yang tidak disebutkan namanya)
[in] Serikat pekerja yang berisi offset ke dalam segmen alokasi tujuan (SegmentAddress) atau pointer ke MDL untuk tujuan (pMdl).
SpecialLockTransfer.Destination.SegmentAddress
[in] Alamat segmen tujuan, jika anggota SegmentIdTujuan bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
SpecialLockTransfer.Destination.pMdl
[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk tujuan, jika anggota SegmentIdTujuan adalah nol.
SpecialLockTransfer.Flags
[in] Struktur DXGK_TRANSFERFLAGS yang mengidentifikasi, dalam bendera bit-field, jenis operasi transfer kunci khusus untuk dilakukan.
SpecialLockTransfer.SwizzlingRangeId
[in] Nilai UINT yang mengidentifikasi rentang yang menggelepar.
SpecialLockTransfer.SwizzlingRangeData
[in] Nilai UINT yang menentukan data rentang yang menggeliat.
InitContextResource
[in] Struktur yang menjelaskan operasi inisialisasi konteks. Didukung dimulai dengan Windows 8.
InitContextResource.hAllocation
[in] Handel ke alokasi konteks yang dibuat ketika driver bernama DxgkCbCreateContextAllocation. Handel untuk alokasi ini dikembalikan di anggota hAllocation dari struktur DXGKARGCB_CREATECONTEXTALLOCATION . Driver meneruskan pointer ke struktur ini dalam parameter ContextAllocation saat memanggil DxgkCbCreateContextAllocation.
InitContextResource.Destination
[in] Struktur yang menjelaskan alokasi konteks tujuan. Struktur ini berisi anggota SegmentId dan serikat pekerja yang berisi offset ke dalam segmen alokasi konteks tujuan (SegmentAddress) atau penunjuk ke MDL untuk tujuan (pMdl).
InitContextResource.Destination.SegmentId
[in] Pengidentifikasi segmen dalam alokasi konteks tujuan, atau nol jika alokasi konteks tujuan dijelaskan oleh anggota pMdl dari serikat pekerja yang dikandung Tujuan .
InitContextResource.Destination. (union yang tidak disebutkan namanya)
[in] Gabungan yang berisi offset ke dalam segmen alokasi konteks tujuan (SegmentAddress) atau penunjuk ke MDL untuk tujuan (pMdl).
InitContextResource.Destination.SegmentAddress
[in] Alamat segmen tujuan, jika anggota SegmentIdTujuan bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
InitContextResource.Destination.pMdl
[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk tujuan, jika anggota SegmentIdTujuan adalah nol.
InitContextResource.Destination.VirtualAddress
[in] Alamat virtual alokasi konteks tujuan. Alamat ini valid selama masa pakai alokasi konteks.
Ikuti prosedur di bagian Alamat virtual untuk alokasi konteks tujuan" dari topik DxgkCbCreateContextAllocation untuk memastikan bahwa alamat virtual valid.
InitContextResource.Destination.GpuVirtualAddress
Alamat virtual GPU dari sumber daya konteks untuk diinisialisasi.
TransferVirtual
Struktur DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL yang menjelaskan operasi yang digunakan untuk mentransfer konten alokasi antar lokasi dalam memori.
FillVirtual
Struktur DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL yang menjelaskan operasi yang digunakan untuk mengisi alokasi dengan pola.
UpdatePageTable
Struktur DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE yang menjelaskan operasi yang digunakan untuk memperbarui tabel halaman.
FlushTlb
Struktur DXGK_BUILDPAGINGBUFFER_FLUSHTLB yang menjelaskan operasi yang digunakan untuk menyiram buffer look-aside terjemahan.
CopyPageTableEntries
Struktur DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES yang menjelaskan operasi yang digunakan entri tabel halaman salin dari satu lokasi ke lokasi lainnya.
UpdateContextAllocation
Struktur DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION yang menjelaskan operasi yang digunakan untuk memperbarui konten konteks atau alokasi perangkat.
NotifyResidency
Struktur DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY yang menjelaskan operasi perubahan alokasi residensi.
SignalMonitoredFence
[in] Struktur DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE yang menjelaskan instruksi GPU untuk memberi sinyal objek pagar yang dipantau halaman ke buffer DMA. Tersedia dimulai dengan Windows 10, versi 1703 (WDDM 2.2).
MapApertureSegment2
MapApertureSegment2.hDevice
[in] Handel ke perangkat yang memiliki alokasi yang ditentukan hAllocation yang dipetakan ke dalam segmen aperture yang ditentukan SegmentId .
Untuk alokasi bersama, hDevice diatur ke perangkat yang ditentukan manajer memori video sebagai pemilik alokasi.
hDevice adalah NULL untuk alokasi utama.
MapApertureSegment2.hAllocation
[in] Handel driver ke alokasi yang dipetakan ke segmen aperture yang ditentukan SegmentId .
hAllocation adalah NULL ketika buffer DMA dipetakan ke segmen aperture karena buffer DMA tidak dibuat secara eksplisit oleh driver.
MapApertureSegment2.SegmentId
[in] Pengidentifikasi segmen aperture untuk dikonfigurasi.
MapApertureSegment2.OffsetInPages
[in] Offset, di halaman, dari awal segmen hingga halaman pertama yang akan dipetakan.
MapApertureSegment2.NumberOfPages
[in] Ukuran rentang yang dipetakan dalam alokasi, di halaman.
MapApertureSegment2.Adl
[in] Struktur DXGK_ADL dengan daftar pendeskripsi alamat (ADL) yang menjelaskan pemetaan alamat logis (halaman) untuk memori alokasi. ADL ini dapat berdampingan atau array halaman; driver harus dapat menangani kedua kasus.
MapApertureSegment2.Flags
[in] Struktur DXGK_MAPAPERTUREFLAGS yang mengidentifikasi, dalam bendera bit-field, jenis operasi map-aperture-segment untuk dilakukan.
MapApertureSegment2.AdlOffset
[in] Offset dalam ADL ke awal rentang alamat logis yang dipetakan untuk operasi saat ini, ditentukan dalam halaman memori sistem. Jika ADL adalah ADL yang berdampingan, maka anggota BasePageNumber ADL adalah alamat awal dari rentang memori yang berdampingan. Jika tidak, gunakan anggota Halaman ADL untuk memori yang tidak berdampingan.
MapApertureSegment2.CpuVisibleAddress
Jika alokasi driver dibuat dengan set bendera MapApertureCpuVisible , CpuVisibleAddress adalah penunjuk non-null ke alamat virtual mode kernel yang dipetakan sistem untuk operasi DXGK_OPERATION_MAP_APERTURE_SEGMENT2 . Alamat ini berlaku selama alokasi dipetakan ke segmen aperture dan akan segera dibebaskan setelah panggilan DXGK_OPERATION_UNMAP_APERTURE_SEGMENT yang sesuai untuk alokasi yang sama.
Jika MapApertureCpuVisible tidak ditentukan, CpuVisibleAddress adalah NULL untuk operasi DXGK_OPERATION_MAP_APERTURE_SEGMENT2 .
NotifyFenceResidency
MmapMmu
UnmapMmu
NotifyResidency2
NotifyAllocation
Reserved
Anggota ini dicadangkan dan tidak boleh digunakan.
Reserved.Reserved[64]
Anggota ini dicadangkan dan tidak boleh digunakan.
hSystemContext
[in] Handel ke konteks sistem untuk operasi paging.
DmaBufferGpuVirtualAddress
Jenis data D3DGPU_VIRTUAL_ADDRESS yang menunjukkan alamat virtual tempat buffer DMA di-paged in. Jika alamat fisik adalah nol, buffer DMA tidak di-paged dengan benar.
DmaBufferWriteOffset
Offset operasi saat ini dalam byte dari awal buffer DMA.
Keterangan
MDL didefinisikan dalam dokumentasi Windows Driver Model (WDM).
Kelas sinkronisasi WDDM:
- Kelas Scheduler GPU Tingkat Pertama untuk jenis pengiriman BuildPagingBuffer .
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung dimulai dengan Windows Vista. |
Header | d3dkmddi.h (termasuk D3dkmddi.h) |
Lihat juga
DXGKARGCB_CREATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES
DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL
DXGK_BUILDPAGINGBUFFER_FLUSHTLB
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY
DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL
DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE
[MmGetMdlPfnArray] (/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray