- Sync with trunk up to r46941.
[reactos.git] / include / ddk / videoagp.h
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 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 #define VIDEO_AGP_RATE_1X 0x00000001
30 #define VIDEO_AGP_RATE_2X 0x00000002
31 #define VIDEO_AGP_RATE_4X 0x00000004
32 #define VIDEO_AGP_RATE_8X 0x00000008
33
34 typedef enum _VIDEO_PORT_CACHE_TYPE {
35 VpNonCached = 0,
36 VpWriteCombined,
37 VpCached
38 } VIDEO_PORT_CACHE_TYPE;
39
40 typedef BOOLEAN
41 (NTAPI *PAGP_COMMIT_PHYSICAL)(
42 IN PVOID HwDeviceExtension,
43 IN PVOID PhysicalReserveContext,
44 IN ULONG Pages,
45 IN ULONG Offset);
46
47 typedef PVOID
48 (NTAPI *PAGP_COMMIT_VIRTUAL)(
49 IN PVOID HwDeviceExtension,
50 IN PVOID VirtualReserveContext,
51 IN ULONG Pages,
52 IN ULONG Offset);
53
54 typedef VOID
55 (NTAPI *PAGP_FREE_PHYSICAL)(
56 IN PVOID HwDeviceExtension,
57 IN PVOID PhysicalReserveContext,
58 IN ULONG Pages,
59 IN ULONG Offset);
60
61 typedef VOID
62 (NTAPI *PAGP_FREE_VIRTUAL)(
63 IN PVOID HwDeviceExtension,
64 IN PVOID VirtualReserveContext,
65 IN ULONG Pages,
66 IN ULONG Offset);
67
68 typedef VOID
69 (NTAPI *PAGP_RELEASE_PHYSICAL)(
70 IN PVOID HwDeviceExtension,
71 IN PVOID PhysicalReserveContext);
72
73 typedef VOID
74 (NTAPI *PAGP_RELEASE_VIRTUAL)(
75 IN PVOID HwDeviceExtension,
76 IN PVOID VirtualReserveContext);
77
78 typedef PHYSICAL_ADDRESS
79 (NTAPI *PAGP_RESERVE_PHYSICAL)(
80 IN PVOID HwDeviceExtension,
81 IN ULONG Pages,
82 IN VIDEO_PORT_CACHE_TYPE Caching,
83 OUT PVOID *PhysicalReserveContext);
84
85 typedef PVOID
86 (NTAPI *PAGP_RESERVE_VIRTUAL)(
87 IN PVOID HwDeviceExtension,
88 IN HANDLE ProcessHandle,
89 IN PVOID PhysicalReserveContext,
90 OUT PVOID *VirtualReserveContext);
91
92 typedef BOOLEAN
93 (NTAPI *PAGP_SET_RATE)(
94 IN PVOID HwDeviceExtension,
95 IN ULONG AgpRate);
96
97 typedef struct _VIDEO_PORT_AGP_SERVICES {
98 PAGP_RESERVE_PHYSICAL AgpReservePhysical;
99 PAGP_RELEASE_PHYSICAL AgpReleasePhysical;
100 PAGP_COMMIT_PHYSICAL AgpCommitPhysical;
101 PAGP_FREE_PHYSICAL AgpFreePhysical;
102 PAGP_RESERVE_VIRTUAL AgpReserveVirtual;
103 PAGP_RELEASE_VIRTUAL AgpReleaseVirtual;
104 PAGP_COMMIT_VIRTUAL AgpCommitVirtual;
105 PAGP_FREE_VIRTUAL AgpFreeVirtual;
106 ULONGLONG AllocationLimit;
107 } VIDEO_PORT_AGP_SERVICES, *PVIDEO_PORT_AGP_SERVICES;
108
109 BOOLEAN
110 NTAPI
111 VideoPortGetAgpServices(
112 IN PVOID HwDeviceExtension,
113 IN PVIDEO_PORT_AGP_SERVICES AgpServices);
114
115 #ifdef __cplusplus
116 }
117 #endif