[DDK]
[reactos.git] / reactos / 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 #define __VIDEOAGP_H__
26
27 #ifdef __cplusplus
28 extern "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
36 typedef enum _VIDEO_PORT_CACHE_TYPE {
37 VpNonCached = 0,
38 VpWriteCombined,
39 VpCached
40 } VIDEO_PORT_CACHE_TYPE;
41
42 typedef BOOLEAN
43 (NTAPI *PAGP_COMMIT_PHYSICAL)(
44 IN PVOID HwDeviceExtension,
45 IN PVOID PhysicalReserveContext,
46 IN ULONG Pages,
47 IN ULONG Offset);
48
49 typedef PVOID
50 (NTAPI *PAGP_COMMIT_VIRTUAL)(
51 IN PVOID HwDeviceExtension,
52 IN PVOID VirtualReserveContext,
53 IN ULONG Pages,
54 IN ULONG Offset);
55
56 typedef VOID
57 (NTAPI *PAGP_FREE_PHYSICAL)(
58 IN PVOID HwDeviceExtension,
59 IN PVOID PhysicalReserveContext,
60 IN ULONG Pages,
61 IN ULONG Offset);
62
63 typedef VOID
64 (NTAPI *PAGP_FREE_VIRTUAL)(
65 IN PVOID HwDeviceExtension,
66 IN PVOID VirtualReserveContext,
67 IN ULONG Pages,
68 IN ULONG Offset);
69
70 typedef VOID
71 (NTAPI *PAGP_RELEASE_PHYSICAL)(
72 IN PVOID HwDeviceExtension,
73 IN PVOID PhysicalReserveContext);
74
75 typedef VOID
76 (NTAPI *PAGP_RELEASE_VIRTUAL)(
77 IN PVOID HwDeviceExtension,
78 IN PVOID VirtualReserveContext);
79
80 typedef 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
87 typedef PVOID
88 (NTAPI *PAGP_RESERVE_VIRTUAL)(
89 IN PVOID HwDeviceExtension,
90 IN HANDLE ProcessHandle,
91 IN PVOID PhysicalReserveContext,
92 OUT PVOID *VirtualReserveContext);
93
94 typedef BOOLEAN
95 (NTAPI *PAGP_SET_RATE)(
96 IN PVOID HwDeviceExtension,
97 IN ULONG AgpRate);
98
99 typedef 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
111 BOOLEAN
112 NTAPI
113 VideoPortGetAgpServices(
114 IN PVOID HwDeviceExtension,
115 IN PVIDEO_PORT_AGP_SERVICES AgpServices);
116
117 #ifdef __cplusplus
118 }
119 #endif