blob: 0cc5b8c32d5f9551330b460a87033e744d6137a6 [file] [log] [blame]
/*
* 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