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