xref: /reactos/sdk/include/ddk/videoagp.h (revision 84ccccab)
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
120