master
  1/*
  2 * videoagp.h
  3 *
  4 * Video miniport AGP interface
  5 *
  6 * This file is part of the w32api package.
  7 *
  8 * Contributors:
  9 *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
 10 *
 11 * THIS SOFTWARE IS NOT COPYRIGHTED
 12 *
 13 * This source code is offered for use in the public domain. You may
 14 * use, modify or distribute it freely.
 15 *
 16 * This code is distributed in the hope that it will be useful but
 17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 18 * DISCLAIMED. This includes but is not limited to warranties of
 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 20 *
 21 */
 22
 23#pragma once
 24
 25#define __VIDEOAGP_H__
 26
 27#ifdef __cplusplus
 28extern "C" {
 29#endif
 30
 31#define VIDEO_AGP_RATE_1X                 0x00000001
 32#define VIDEO_AGP_RATE_2X                 0x00000002
 33#define VIDEO_AGP_RATE_4X                 0x00000004
 34#define VIDEO_AGP_RATE_8X                 0x00000008
 35
 36typedef enum _VIDEO_PORT_CACHE_TYPE {
 37  VpNonCached = 0,
 38  VpWriteCombined,
 39  VpCached
 40} VIDEO_PORT_CACHE_TYPE;
 41
 42typedef BOOLEAN
 43(NTAPI *PAGP_COMMIT_PHYSICAL)(
 44  IN PVOID HwDeviceExtension,
 45  IN PVOID PhysicalReserveContext,
 46  IN ULONG Pages,
 47  IN ULONG Offset);
 48
 49typedef PVOID
 50(NTAPI *PAGP_COMMIT_VIRTUAL)(
 51  IN PVOID HwDeviceExtension,
 52  IN PVOID VirtualReserveContext,
 53  IN ULONG Pages,
 54  IN ULONG Offset);
 55
 56typedef VOID
 57(NTAPI *PAGP_FREE_PHYSICAL)(
 58  IN PVOID HwDeviceExtension,
 59  IN PVOID PhysicalReserveContext,
 60  IN ULONG Pages,
 61  IN ULONG Offset);
 62
 63typedef VOID
 64(NTAPI *PAGP_FREE_VIRTUAL)(
 65  IN PVOID HwDeviceExtension,
 66  IN PVOID VirtualReserveContext,
 67  IN ULONG Pages,
 68  IN ULONG Offset);
 69
 70typedef VOID
 71(NTAPI *PAGP_RELEASE_PHYSICAL)(
 72  IN PVOID HwDeviceExtension,
 73  IN PVOID PhysicalReserveContext);
 74
 75typedef VOID
 76(NTAPI *PAGP_RELEASE_VIRTUAL)(
 77  IN PVOID HwDeviceExtension,
 78  IN PVOID VirtualReserveContext);
 79
 80typedef PHYSICAL_ADDRESS
 81(NTAPI *PAGP_RESERVE_PHYSICAL)(
 82  IN PVOID HwDeviceExtension,
 83  IN ULONG Pages,
 84  IN VIDEO_PORT_CACHE_TYPE  Caching,
 85  OUT PVOID *PhysicalReserveContext);
 86
 87typedef PVOID
 88(NTAPI *PAGP_RESERVE_VIRTUAL)(
 89  IN PVOID HwDeviceExtension,
 90  IN HANDLE ProcessHandle,
 91  IN PVOID PhysicalReserveContext,
 92  OUT PVOID *VirtualReserveContext);
 93
 94typedef BOOLEAN
 95(NTAPI *PAGP_SET_RATE)(
 96  IN PVOID HwDeviceExtension,
 97  IN ULONG AgpRate);
 98
 99typedef struct _VIDEO_PORT_AGP_SERVICES {
100  PAGP_RESERVE_PHYSICAL AgpReservePhysical;
101  PAGP_RELEASE_PHYSICAL AgpReleasePhysical;
102  PAGP_COMMIT_PHYSICAL AgpCommitPhysical;
103  PAGP_FREE_PHYSICAL AgpFreePhysical;
104  PAGP_RESERVE_VIRTUAL AgpReserveVirtual;
105  PAGP_RELEASE_VIRTUAL AgpReleaseVirtual;
106  PAGP_COMMIT_VIRTUAL AgpCommitVirtual;
107  PAGP_FREE_VIRTUAL AgpFreeVirtual;
108  ULONGLONG AllocationLimit;
109} VIDEO_PORT_AGP_SERVICES, *PVIDEO_PORT_AGP_SERVICES;
110
111BOOLEAN
112NTAPI
113VideoPortGetAgpServices(
114  IN PVOID HwDeviceExtension,
115  IN PVIDEO_PORT_AGP_SERVICES AgpServices);
116
117#ifdef __cplusplus
118}
119#endif