Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Структура DXGKARG_BUILDPAGINGBUFFER описывает параметры обратного вызова DxgkDdiBuildPagingBuffer , который создает буфер разбиения на страницы для использования в операции передачи памяти.
Синтаксис
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;
Members
pDmaBuffer
[in/out] Виртуальный адрес первого доступного байта в буфере разбиения по страницам. При первом вызове драйвера с новым буфером разбиения по страницам этот виртуальный адрес выравнивается на 4 КБ. Драйвер тесно упаковывает операции в буфере разбиения по страницам, пока буфер разбиения на страницах не будет заполнен, а затем использует новый буфер разбиения по страницам. Таким образом, если единица обработки графики (GPU) требует определенного выравнивания для отправки буфера на разбиении по страницам, драйвер должен применить это выравнивание, забив операции, которые он записывает в буфер разбиения по страницам. Прежде чем функция DxgkDdiBuildPagingBuffer возвращается, драйвер должен обновить pDmaBuffer до момента последнего байта, записываемого в буфер разбиения по страницам.
DmaSize
[in/out] Размер в байтах буфера разбиения на страницы, задающий pDmaBuffer .
pDmaBufferPrivateData
[in/out] Указатель на структуру частных данных драйвера, связанную с буфером прямого доступа к памяти (DMA), который указывает pDmaBuffer .
DmaBufferPrivateDataSize
[in/out] Количество байтов, оставшихся в структуре частных данных, на которые указывает pDmaBufferPrivateData для текущей операции.
Operation
[in] Значение типа DXGK_BUILDPAGINGBUFFER_OPERATION, указывающее тип операции памяти для выполнения.
MultipassOffset
[in/out] Значение UINT, указывающее ход выполнения операции разбиения по страницам, если требуются несколько буферов разбиения по страницам. Драйвер задает это значение, чтобы указать разделение на несколько буферов разбиения по страницам для нескольких операций передачи. Например, драйвер может хранить номер страницы, который последний раз был передан для передачи на основе страниц.
Transfer
[in] Структура, описывающая операцию передачи.
Transfer.hAllocation
[in] Дескриптор выделения, который функция dxgkDdiCreateAllocation драйвера ранее возвращалась в элементе hAllocation структуры DXGK_ALLOCATIONINFO, которая является частью элемента pAllocationInfo структуры DXGKARG_CREATEALLOCATION. Дескриптор выделения указывает на буфер, содержащий данные частного драйвера для передачи.
Transfer.TransferOffset
[in] Смещение (в байтах) первой страницы в выделении, которое передается. Это смещение применяется только к расположению сегмента. Это смещение не применяется к описанию MDL диапазона памяти. Если драйверу требуется несколько буферов разбиения по страницам для завершения передачи (то есть драйвер возвращает STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER из функции DxgkDdiBuildPagingBuffer ), TransferOffset одинаково для каждого вызова DxgkDdiBuildPagingBuffer для этой передачи.
Transfer.TransferSize
[in] Размер в байтах данных памяти для передачи.
Transfer.Source
[in] Структура, описывающая выделение источника. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент исходного выделения (SegmentAddress) или указатель на MDL для источника (pMdl).
Transfer.Source.SegmentId
[in] Идентификатор сегмента в исходном выделении или ноль, если выделение источника описывается членом pMdl объединения, который содержит источник .
Transfer.Source.SegmentAddress
[in] Адрес исходного сегмента, если член SegmentIdисточника является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr
Transfer.Source.pMdl
[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти источника, если элемент SegmentIdисточника равен нулю.
Transfer.Destination
[in] Структура, описывающая выделение назначения. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент целевого выделения (SegmentAddress) или указатель на MDL для назначения (pMdl).
Transfer.Destination.SegmentId
[in] Идентификатор сегмента в целевом выделении или ноль, если целевое выделение описывается членом pMdl объединения, который содержит назначение .
Transfer.Destination.SegmentAddress
[in] Адрес сегмента назначения, если член SegmentIdназначения является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr
Transfer.Destination.pMdl
[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти для назначения, если элемент SegmentIdназначения равен нулю.
Transfer.Flags
[in] Структура DXGK_TRANSFERFLAGS , идентифицирующая флаги битового поля, тип операции специальной блокировки для выполнения.
Transfer.MdlOffset
[in] Смещение в страницах системной памяти в структуре MDL , на которую указывает член PMdl , на первую системную страницу памяти для текущей операции. Драйвер может получить физический адрес первой страницы системной памяти, вызвав функцию MmGetMdlPfnArray следующим образом.
MmGetMdlPfnArray(pMdl)[MdlOffset];
Fill
[in] Структура, описывающая операцию заполнения.
Fill.hAllocation
[in] Дескриптор выделения, содержащего содержимое для заполнения.
Fill.FillSize
[in] Размер( в байтах) сведений о памяти для заполнения.
Fill.FillPattern
[in] Шаблон для заполнения назначения. Диспетчер памяти видео использует эти сведения для инициализации памяти видео в определенный шаблон, когда выделение без содержимого сначала отображается. В этом случае источник не существует для запроса заполнения— существует только место назначения.
Fill.Destination
[in] Структура, описывающая выделение назначения для операции заполнения.
Fill.Destination.SegmentId
[in] Идентификатор сегмента в целевом выделении.
Fill.Destination.SegmentAddress
[in] Адрес сегмента назначения. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr
DiscardContent
[in] Структура, описывающая операцию отмены содержимого.
DiscardContent.hAllocation
[in] Дескриптор выделения, содержащего содержимое для отмены.
DiscardContent.Flags
[in] Структура DXGK_DISCARDCONTENTFLAGS , идентифицирующая флаги битового поля, тип операции отмены содержимого для выполнения.
DiscardContent.SegmentId
[in] Идентификатор сегмента в выделении для отмены содержимого.
DiscardContent.SegmentAddress
[in] Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий адрес сегмента. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr В этом расположении содержимое удаляется.
ReadPhysical
[in] Структура, описывающая операцию чтения и физической операции.
ReadPhysical.SegmentId
[in] Идентификатор сегмента, из который считываются данные.
ReadPhysical.PhysicalAddress
[in] Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий физический адрес в сегменте, который указывает SegmentId , где считываются данные.
WritePhysical
[in] Структура, описывающая операцию записи.
WritePhysical.SegmentId
[in] Идентификатор сегмента, на который записываются данные.
WritePhysical.PhysicalAddress
[in] Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий физический адрес в сегменте, где записываются данные.
MapApertureSegment
[in] Структура, описывающая операцию сегмента map-aperture с помощью MDL.
MapApertureSegment.hDevice
[in] Дескриптор устройства, которому принадлежит выделение, которое hAllocation указывает, что сопоставляется с сегментом диафрагмы, который указывает SegmentId .
Для общего выделения hDevice устанавливается на устройство, которое диспетчер памяти видео определяется владельцем выделения.
hDevice имеет значение NULL для основного выделения.
MapApertureSegment.hAllocation
[in] Дескриптор выделения, сопоставленного с сегментом диафрагмы, который указывает SegmentId .
hAllocation имеет значение NULL , если буфер DMA сопоставляется с сегментом диафрагмы, так как буферы DMA не создаются явным образом драйвером.
MapApertureSegment.SegmentId
[in] Идентификатор сегмента диафрагмы для настройки.
MapApertureSegment.OffsetInPages
[in] Смещение на страницах с начала сегмента до первых страниц для сопоставления.
MapApertureSegment.NumberOfPages
[in] Количество страниц для сопоставления.
MapApertureSegment.pMdl
[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы памяти физической системы для сопоставления с сегментом диафрагмы.
MapApertureSegment.Flags
[in] Структура DXGK_MAPAPERTUREFLAGS , идентифицирующая флаги битового поля, тип операции map-aperture-segment для выполнения.
MapApertureSegment.MdlOffset
[in] Смещение в страницах системной памяти в структуре MDL , на которую указывает член PMdl , на первую системную страницу памяти для текущей операции. Драйвер может получить физический адрес первой страницы системной памяти, вызвав функцию MmGetMdlPfnArray следующим образом.
MmGetMdlPfnArray(pMdl)[MdlOffset];
UnmapApertureSegment
[in] Структура, описывающая операцию unmap-aperture-segment.
UnmapApertureSegment.hDevice
[in] Дескриптор устройства, который владеет выделением, которое hAllocation указывает, что не сопоставлено с сегментом диафрагмы, который указывает SegmentId .
Для общего выделения hDevice устанавливается на устройство, которое диспетчер памяти видео определяется владельцем выделения.
hDevice имеет значение NULL для основного выделения.
UnmapApertureSegment.hAllocation
[in] Дескриптор выделения, который не сопоставляется с сегментом диафрагмы, который указывает SegmentId .
hAllocation имеет значение NULL , если буфер DMA не сопоставляется с сегментом диафрагмы, так как буферы DMA не создаются явным образом драйвером.
UnmapApertureSegment.SegmentId
[in] Идентификатор сегмента диафрагмы для настройки.
UnmapApertureSegment.OffsetInPages
[in] Смещение на страницах с начала сегмента до первых страниц до распаку.
UnmapApertureSegment.NumberOfPages
[in] Количество страниц для распаку.
UnmapApertureSegment.DummyPage
[in] Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий физический адрес страницы заполнителя, где драйвер должен сопоставить диапазон, который не сопоставлен.
SpecialLockTransfer
[in] Структура, описывающая операцию специальной передачи блокировки.
SpecialLockTransfer.hAllocation
[in] Дескриптор выделения, который функция dxgkDdiCreateAllocation драйвера ранее возвращалась в элементе hAllocation структуры DXGK_ALLOCATIONINFO, которая является частью элемента pAllocationInfo структуры DXGKARG_CREATEALLOCATION. Дескриптор выделения указывает на буфер, содержащий данные частного драйвера для передачи специальных блокировок.
SpecialLockTransfer.TransferOffset
[in] Смещение (в байтах) первой страницы в выделении, которое передается. Это смещение применяется только к расположению сегмента. Это смещение не применяется к описанию MDL диапазона памяти. Если драйверу требуется несколько буферов разбиения по страницам для завершения передачи (то есть драйвер возвращает STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER из функции DxgkDdiBuildPagingBuffer ), TransferOffset одинаково для каждого вызова DxgkDdiBuildPagingBuffer для этой передачи.
SpecialLockTransfer.TransferSize
[in] Размер в байтах данных памяти для передачи.
SpecialLockTransfer.Source
[in] Структура, описывающая выделение источника. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент исходного выделения (SegmentAddress) или указатель на MDL для источника (pMdl).
SpecialLockTransfer.Source.SegmentId
[in] Идентификатор сегмента в исходном выделении или ноль, если выделение источника описывается членом pMdl объединения, который содержит источник .
SpecialLockTransfer.Source. (неназванное объединение)
[in] Объединение, содержащее смещение в сегмент исходного выделения (SegmentAddress) или указатель на MDL для источника (pMdl).
SpecialLockTransfer.Source.SegmentAddress
[in] Адрес исходного сегмента, если член SegmentIdисточника является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr
SpecialLockTransfer.Source.pMdl
[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти источника, если элемент SegmentIdисточника равен нулю.
SpecialLockTransfer.Destination
[in] Структура, описывающая выделение назначения. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент целевого выделения (SegmentAddress) или указатель на MDL для назначения (pMdl).
SpecialLockTransfer.Destination.SegmentId
[in] Идентификатор сегмента в целевом выделении или ноль, если целевое выделение описывается членом pMdl объединения, который содержит назначение .
SpecialLockTransfer.Destination. (неназванное объединение)
[in] Объединение, содержащее смещение в сегмент целевого выделения (SegmentAddress) или указатель на MDL для назначения (pMdl).
SpecialLockTransfer.Destination.SegmentAddress
[in] Адрес сегмента назначения, если член SegmentIdназначения является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr
SpecialLockTransfer.Destination.pMdl
[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти для назначения, если элемент SegmentIdназначения равен нулю.
SpecialLockTransfer.Flags
[in] Структура DXGK_TRANSFERFLAGS , идентифицирующая флаги битового поля, тип операции специальной блокировки для выполнения.
SpecialLockTransfer.SwizzlingRangeId
[in] Значение UINT, определяющее диапазон поворота.
SpecialLockTransfer.SwizzlingRangeData
[in] Значение UINT, задающее данные диапазона вибрирования.
InitContextResource
[in] Структура, описывающая операцию инициализации контекста. Поддерживается начиная с Windows 8.
InitContextResource.hAllocation
[in] Дескриптор выделения контекста, созданного при вызове драйвера DxgkCbCreateContextAllocation. Дескриптор этого выделения возвращается в элементе hAllocation структуры DXGKARGCB_CREATECONTEXTALLOCATION . Драйвер передает указатель на эту структуру в параметре ContextAllocation при вызове DxgkCbCreateContextAllocation.
InitContextResource.Destination
[in] Структура, описывающая выделение контекста назначения. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент выделения контекста назначения (SegmentAddress) или указатель на MDL для назначения (pMdl).
InitContextResource.Destination.SegmentId
[in] Идентификатор сегмента в целевом выделении контекста или ноль, если целевое выделение контекста описывается членом pMdl объединения, который содержит назначение .
InitContextResource.Destination. (неназванное объединение)
[in] Объединение, содержащее смещение в сегмент выделения контекста назначения (SegmentAddress) или указатель на MDL для назначения (pMdl).
InitContextResource.Destination.SegmentAddress
[in] Адрес сегмента назначения, если член SegmentIdназначения является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr
InitContextResource.Destination.pMdl
[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти для назначения, если элемент SegmentIdназначения равен нулю.
InitContextResource.Destination.VirtualAddress
[in] Виртуальный адрес выделения контекста назначения. Этот адрес действителен в течение времени существования выделения контекста.
Выполните процедуры в разделе "Виртуальные адреса для выделения контекста назначения" раздела DxgkCbCreateContextAllocation , чтобы убедиться, что виртуальный адрес действителен.
InitContextResource.Destination.GpuVirtualAddress
Виртуальный адрес GPU ресурса контекста для инициализации.
TransferVirtual
Структура DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL , описывающая операцию, используемую для передачи содержимого выделения между расположениями в памяти.
FillVirtual
Структура DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL , описывающая операцию, используемую для заполнения выделения шаблоном.
UpdatePageTable
Структура DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE , описывающая операцию, используемую для обновления таблицы страниц.
FlushTlb
Структура DXGK_BUILDPAGINGBUFFER_FLUSHTLB , описывающая операцию, используемую для очистки буферов перевода в сторону.
CopyPageTableEntries
Структура DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES , описывающая операцию использования записей таблицы страниц копирования из одного расположения в другое.
UpdateContextAllocation
Структура DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION , описывающая операцию, используемую для обновления содержимого контекста или выделения устройства.
NotifyResidency
Структура DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY , описывающая операцию изменения распределения расположения.
SignalMonitoredFence
[in] Структура DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE , описывающая инструкцию GPU для сигнала отслеживаемого объекта забора на разбиение по страницам в буфер DMA. Доступно начиная с Windows 10 версии 1703 (WDDM 2.2).
MapApertureSegment2
MapApertureSegment2.hDevice
[in] Дескриптор устройства, которому принадлежит выделение, которое hAllocation указывает, что сопоставляется с сегментом диафрагмы, который указывает SegmentId .
Для общего выделения hDevice устанавливается на устройство, которое диспетчер памяти видео определяется владельцем выделения.
hDevice имеет значение NULL для основного выделения.
MapApertureSegment2.hAllocation
[in] Дескриптор драйвера для выделения, сопоставленного с сегментом диафрагмы, который указывает SegmentId .
hAllocation имеет значение NULL , если буфер DMA сопоставляется с сегментом диафрагмы, так как буферы DMA не создаются явным образом драйвером.
MapApertureSegment2.SegmentId
[in] Идентификатор сегмента диафрагмы для настройки.
MapApertureSegment2.OffsetInPages
[in] Смещение на страницах с начала сегмента до первых страниц для сопоставления.
MapApertureSegment2.NumberOfPages
[in] Размер диапазона, сопоставленного в выделении, на страницах.
MapApertureSegment2.Adl
[in] Структура DXGK_ADL со списком дескрипторов адресов (ADL), описывающим сопоставления логических адресов (страницы) для памяти выделения. Этот ADL может быть либо смежным, либо массивом страниц; Драйвер должен иметь возможность обрабатывать оба случая.
MapApertureSegment2.Flags
[in] Структура DXGK_MAPAPERTUREFLAGS , идентифицирующая флаги битового поля, тип операции map-aperture-segment для выполнения.
MapApertureSegment2.AdlOffset
[in] Смещение в ADL до начала диапазона логических адресов, сопоставленных для текущей операции, указанной на страницах системной памяти. Если ADL является непрерывным ADL, то элемент ADL BasePageNumber является начальным адресом непрерывного диапазона памяти. В противном случае используйте элемент ADL Pages для несоотложной памяти.
MapApertureSegment2.CpuVisibleAddress
Если выделение драйвера было создано с набором флагов MapApertureCpuVisible , CpuVisibleAddress является ненулевой указателем на сопоставленный системой виртуальный адрес режима ядра для DXGK_OPERATION_MAP_APERTURE_SEGMENT2 операций. Этот адрес действителен до тех пор, пока выделение сопоставляется с сегментом диафрагмы и освобождается сразу после соответствующего вызова DXGK_OPERATION_UNMAP_APERTURE_SEGMENT для того же выделения.
Если MapApertureCpuVisible не указан, cpuVisibleAddress имеет значение NULL для операций DXGK_OPERATION_MAP_APERTURE_SEGMENT2 .
NotifyFenceResidency
MmapMmu
UnmapMmu
NotifyResidency2
NotifyAllocation
Reserved
Этот элемент зарезервирован и не должен использоваться.
Reserved.Reserved[64]
Этот элемент зарезервирован и не должен использоваться.
hSystemContext
[in] Дескриптор системного контекста для операции разбиения по страницам.
DmaBufferGpuVirtualAddress
Тип данных D3DGPU_VIRTUAL_ADDRESS , указывающий виртуальный адрес, в котором был помещен буфер DMA. Если физический адрес равен нулю, буфер DMA неправильно отображается.
DmaBufferWriteOffset
Смещение текущей операции в байтах с начала буфера DMA.
Замечания
MDL определен в документации по модели драйвера Windows (WDM ).
Класс синхронизации WDDM:
- Класс планировщика GPU первого уровня для типа отправки BuildPagingBuffer .
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Поддерживается начиная с Windows Vista. |
| Header | d3dkmddi.h (include D3dkmddi.h) |
См. также
DXGKARGCB_CREATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES
DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL
DXGK_BUILDPAGINGBUFFER_FLUSHTLB
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY
DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL
DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION