| /* |
| * ntagp.h |
| * |
| * NT AGP bus driver interface |
| * |
| * This file is part of the w32api package. |
| * |
| * Contributors: |
| * Created by Gregor Anich <blight@blight.eu.org> |
| * |
| * THIS SOFTWARE IS NOT COPYRIGHTED |
| * |
| * This source code is offered for use in the public domain. You may |
| * use, modify or distribute it freely. |
| * |
| * This code is distributed in the hope that it will be useful but |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| * DISCLAIMED. This includes but is not limited to warranties of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * |
| */ |
| |
| #pragma once |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| DEFINE_GUID(GUID_AGP_BUS_INTERFACE_STANDARD, 0x2ef74803, 0xd8d3, 0x11d1, 0x9c, 0xaa, 0x00, 0xc0, 0xf0, 0x16, 0x56, 0x36); |
| |
| #define AGP_BUS_INTERFACE_V1 1 |
| #define AGP_BUS_INTERFACE_V2 2 |
| #define AGP_BUS_INTERFACE_V3 3 |
| #define AGP_BUS_INTERFACE_V4 4 |
| #define AGP_BUS_INTERFACE_V5 5 |
| |
| /* Indicates wether the GART supports mapping of physical memory for the CPU */ |
| #define AGP_CAPABILITIES_MAP_PHYSICAL 0x00000001 |
| #define AGP_CAPABILITIES_CACHE_COHERENT 0x00000002 |
| #define AGP_CAPABILITIES_REQUIRES_GPU_FLUSH 0x00000004 |
| |
| #define AGP_SET_RATE_DISABLE_SBA 0x00010000 |
| #define AGP_SET_RATE_DISABLE_FW 0x00020000 |
| |
| #define AGP_GUARD_PAGE_CHECK_FIRST_ULONG 0x00000001 |
| #define AGP_GUARD_PAGE_CHECK_USE_SAME_OFFSET 0x00000002 |
| #define AGP_GUARD_PAGE_CHECK_DO_NOT_BUGCHECK 0x00000004 |
| |
| #define AGP_BUS_INTERFACE_V1_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD,SetRate)) |
| #define AGP_BUS_INTERFACE_V2_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, AgpSize)) |
| #define AGP_BUS_INTERFACE_V3_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, FlushChipsetCaches)) |
| #define AGP_BUS_INTERFACE_V4_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, MapMemoryEx)) |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_BUS_SET_RATE)( |
| IN PVOID AgpContext, |
| IN ULONG AgpRate); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_BUS_RESERVE_MEMORY)( |
| IN PVOID AgpContext, |
| IN ULONG NumberOfPages, |
| IN MEMORY_CACHING_TYPE MemoryType, |
| OUT PVOID *MapHandle, |
| OUT PHYSICAL_ADDRESS *PhysicalAddress OPTIONAL); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_BUS_RELEASE_MEMORY)( |
| IN PVOID AgpContext, |
| IN PVOID MapHandle); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_BUS_COMMIT_MEMORY)( |
| IN PVOID AgpContext, |
| IN PVOID MapHandle, |
| IN ULONG NumberOfPages, |
| IN ULONG OffsetInPages, |
| IN OUT PMDL Mdl OPTIONAL, |
| OUT PHYSICAL_ADDRESS *MemoryBase); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_BUS_FREE_MEMORY)( |
| IN PVOID AgpContext, |
| IN PVOID MapHandle, |
| IN ULONG NumberOfPages, |
| IN ULONG OffsetInPages); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_GET_MAPPED_PAGES)( |
| IN PVOID AgpContext, |
| IN PVOID MapHandle, |
| IN ULONG NumberOfPages, |
| IN ULONG OffsetInPages, |
| OUT PMDL Mdl); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_MAP_MEMORY)( |
| IN PVOID AgpContext, |
| IN PVOID MapHandle, |
| IN ULONG NumberOfPages, |
| IN ULONG OffsetInPages, |
| IN PMDL Mdl, |
| OUT PHYSICAL_ADDRESS *MemoryBase); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_UNMAP_MEMORY)( |
| IN PVOID AgpContext, |
| IN PVOID MapHandle, |
| IN ULONG NumberOfPages, |
| IN ULONG OffsetInPages, |
| IN PMDL Mdl); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_FLUSH_CHIPSET_CACHES)( |
| IN PVOID AgpContext); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_CHECK_INTEGRITY)( |
| IN PVOID AgpContext); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_MAP_MEMORY_EX)( |
| IN PVOID AgpContext, |
| IN PVOID MapHandle, |
| IN ULONG NumberOfPages, |
| IN ULONG OffsetInPages, |
| IN PMDL Mdl, |
| IN MEMORY_CACHING_TYPE *CacheTypeOverride OPTIONAL, |
| OUT PHYSICAL_ADDRESS *MemoryBase); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_UNMAP_MEMORY_EX)( |
| IN PVOID AgpContext, |
| IN PVOID MapHandle, |
| IN ULONG NumberOfPages, |
| IN ULONG OffsetInPages, |
| IN PMDL Mdl); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_FLUSH_GART_TLB)( |
| IN PVOID AgpContext); |
| |
| typedef NTSTATUS |
| (NTAPI *PAGP_CHECK_GUARD_PAGE)( |
| IN PVOID AgpContext, |
| IN ULONG Flags, |
| IN ULONG ULongsToCheck); |
| |
| typedef struct _AGP_INFO_COMMON { |
| PCI_AGP_CAPABILITY MasterCap; |
| PCI_AGP_CAPABILITY TargetCap; |
| USHORT DeviceId; |
| USHORT VendorId; |
| USHORT SubVendorId; |
| USHORT SubSystemId; |
| UCHAR HwRevisionId; |
| ULONG VerifierFlags; |
| BOOLEAN GuardPageCorruption; |
| } AGP_INFO_COMMON, *PAGP_INFO_COMMON; |
| |
| typedef struct _AGP_INFO_DRIVER { |
| ULONG AGPReg1; |
| ULONG AGPReg2; |
| PHYSICAL_ADDRESS ApertureStart; |
| PHYSICAL_ADDRESS GartTranslationTable; |
| ULONG ApertureLength; |
| } AGP_INFO_DRIVER, *PAGP_INFO_DRIVER; |
| |
| typedef struct _AGP_INFO { |
| AGP_INFO_COMMON CommonInfo; |
| AGP_INFO_DRIVER DriverInfo; |
| } AGP_INFO, *PAGP_INFO; |
| |
| typedef VOID |
| (NTAPI *PAGP_GET_INFO)( |
| IN PVOID AgpContext, |
| OUT PAGP_INFO AgpInfo); |
| |
| typedef struct _AGP_BUS_INTERFACE_STANDARD { |
| USHORT Size; |
| USHORT Version; |
| PVOID AgpContext; |
| PINTERFACE_REFERENCE InterfaceReference; |
| PINTERFACE_DEREFERENCE InterfaceDereference; |
| ULONG Capabilities; |
| PAGP_BUS_RESERVE_MEMORY ReserveMemory; |
| PAGP_BUS_RELEASE_MEMORY ReleaseMemory; |
| PAGP_BUS_COMMIT_MEMORY CommitMemory; |
| PAGP_BUS_FREE_MEMORY FreeMemory; |
| PAGP_GET_MAPPED_PAGES GetMappedPages; |
| PAGP_BUS_SET_RATE SetRate; |
| SIZE_T AgpSize; |
| PHYSICAL_ADDRESS AgpBase; |
| PHYSICAL_ADDRESS MaxPhysicalAddress; |
| PAGP_MAP_MEMORY MapMemory; |
| PAGP_UNMAP_MEMORY UnMapMemory; |
| PAGP_FLUSH_CHIPSET_CACHES FlushChipsetCaches; |
| PAGP_CHECK_INTEGRITY CheckIntegrity; |
| PAGP_MAP_MEMORY_EX MapMemoryEx; |
| PAGP_UNMAP_MEMORY_EX UnMapMemoryEx; |
| PAGP_FLUSH_GART_TLB FlushGartTLB; |
| PAGP_CHECK_GUARD_PAGE CheckGuardPage; |
| PAGP_GET_INFO GetAgpInfo; |
| } AGP_BUS_INTERFACE_STANDARD, *PAGP_BUS_INTERFACE_STANDARD; |
| |
| #ifdef __cplusplus |
| } |
| #endif |