Mercurial > games > semicongine
diff fuhtark_test/include/ddk/ntddvdeo.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/ddk/ntddvdeo.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,444 @@ +/* + * ntddvdeo.h + * + * Definitions for video devices + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDVDEO_H +#define __NTDDVDEO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define VIDEO_DEVICE_NAME "DISPLAY%d" +#define WVIDEO_DEVICE_NAME L"DISPLAY%d" + +#define DD_FULLSCREEN_VIDEO_DEVICE_NAME L"\\Device\\FSVideo" + +DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, \ + 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99); + + +#define IOCTL_VIDEO_DISABLE_CURSOR \ + CTL_CODE (FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_DISABLE_POINTER \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_ENABLE_CURSOR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_ENABLE_POINTER \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_GET_BANK_SELECT_CODE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_GET_CHILD_STATE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_GET_POWER_MANAGEMENT \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_LOAD_AND_SET_FONT \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_MAP_VIDEO_MEMORY \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_AVAIL_MODES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_CURRENT_MODE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_CURSOR_ATTR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_CURSOR_POSITION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_POINTER_ATTR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_POINTER_POSITION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_RESET_DEVICE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SAVE_HARDWARE_STATE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_COLOR_REGISTERS \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_CURRENT_MODE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_CURSOR_ATTR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_CURSOR_POSITION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_PALETTE_REGISTERS \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_POINTER_ATTR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_POINTER_POSITION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_POWER_MANAGEMENT \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SWITCH_DUALVIEW \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS) + + + +typedef struct _VIDEO_MEMORY { + PVOID RequestedVirtualAddress; +} VIDEO_MEMORY, *PVIDEO_MEMORY; + +typedef struct _VIDEO_MEMORY_INFORMATION { + PVOID VideoRamBase; + ULONG VideoRamLength; + PVOID FrameBufferBase; + ULONG FrameBufferLength; +} VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION; + +/* VIDEO_MODE.RequestedMode */ +#define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000 +#define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000 + +typedef struct _VIDEO_MODE { + ULONG RequestedMode; +} VIDEO_MODE, *PVIDEO_MODE; + +/* VIDEO_MODE_INFORMATION.AttributeFlags */ +#define VIDEO_MODE_COLOR 0x0001 +#define VIDEO_MODE_GRAPHICS 0x0002 +#define VIDEO_MODE_PALETTE_DRIVEN 0x0004 +#define VIDEO_MODE_MANAGED_PALETTE 0x0008 +#define VIDEO_MODE_INTERLACED 0x0010 +#define VIDEO_MODE_NO_OFF_SCREEN 0x0020 +#define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040 +#define VIDEO_MODE_BANKED 0x0080 +#define VIDEO_MODE_LINEAR 0x0100 + +typedef struct _VIDEO_MODE_INFORMATION { + ULONG Length; + ULONG ModeIndex; + ULONG VisScreenWidth; + ULONG VisScreenHeight; + ULONG ScreenStride; + ULONG NumberOfPlanes; + ULONG BitsPerPlane; + ULONG Frequency; + ULONG XMillimeter; + ULONG YMillimeter; + ULONG NumberRedBits; + ULONG NumberGreenBits; + ULONG NumberBlueBits; + ULONG RedMask; + ULONG GreenMask; + ULONG BlueMask; + ULONG AttributeFlags; + ULONG VideoMemoryBitmapWidth; + ULONG VideoMemoryBitmapHeight; + ULONG DriverSpecificAttributeFlags; +} VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION; + +typedef struct _VIDEO_NUM_MODES { + ULONG NumModes; + ULONG ModeInformationLength; +} VIDEO_NUM_MODES, *PVIDEO_NUM_MODES; + +typedef enum _VIDEO_POWER_STATE { + VideoPowerUnspecified = 0, + VideoPowerOn = 1, + VideoPowerStandBy, + VideoPowerSuspend, + VideoPowerOff, + VideoPowerHibernate, + VideoPowerShutdown, + VideoPowerMaximum +} VIDEO_POWER_STATE, *PVIDEO_POWER_STATE; + +typedef struct _VIDEO_POWER_MANAGEMENT { + ULONG Length; + ULONG DPMSVersion; + ULONG PowerState; +} VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT; + +typedef struct _VIDEO_PUBLIC_ACCESS_RANGES { + ULONG InIoSpace; + ULONG MappedInIoSpace; + PVOID VirtualAddress; +} VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES; + +typedef struct _VIDEO_SHARE_MEMORY { + HANDLE ProcessHandle; + ULONG ViewOffset; + ULONG ViewSize; + PVOID RequestedVirtualAddress; +} VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY; + +typedef struct _VIDEO_SHARE_MEMORY_INFORMATION { + ULONG SharedViewOffset; + ULONG SharedViewSize; + PVOID VirtualAddress; +} VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION; + +/* VIDEO_BANK_SELECT.BankingFlags constants */ +#define PLANAR_HC 0x00000001 + +/* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */ +typedef enum _VIDEO_BANK_TYPE { + VideoNotBanked = 0, + VideoBanked1RW, + VideoBanked1R1W, + VideoBanked2RW, + NumVideoBankTypes +} VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE; + +typedef struct _VIDEO_BANK_SELECT { + ULONG Length; + ULONG Size; + ULONG BankingFlags; + ULONG BankingType; + ULONG PlanarHCBankingType; + ULONG BitmapWidthInBytes; + ULONG BitmapSize; + ULONG Granularity; + ULONG PlanarHCGranularity; + ULONG CodeOffset; + ULONG PlanarHCBankCodeOffset; + ULONG PlanarHCEnableCodeOffset; + ULONG PlanarHCDisableCodeOffset; +} VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT; + +typedef struct _VIDEO_LOAD_FONT_INFORMATION { + USHORT WidthInPixels; + USHORT HeightInPixels; + ULONG FontSize; + UCHAR Font[1]; +} VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION; + +/* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */ +#define VIDEO_DEVICE_COLOR 0x00000001 +#define VIDEO_OPTIONAL_GAMMET_TABLE 0x00000002 + +typedef struct _VIDEO_COLOR_CAPABILITIES { + ULONG Length; + ULONG AttributeFlags; + LONG RedPhosphoreDecay; + LONG GreenPhosphoreDecay; + LONG BluePhosphoreDecay; + LONG WhiteChromaticity_x; + LONG WhiteChromaticity_y; + LONG WhiteChromaticity_Y; + LONG RedChromaticity_x; + LONG RedChromaticity_y; + LONG GreenChromaticity_x; + LONG GreenChromaticity_y; + LONG BlueChromaticity_x; + LONG BlueChromaticity_y; + LONG WhiteGamma; + LONG RedGamma; + LONG GreenGamma; + LONG BlueGamma; +} VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES; + +typedef struct _VIDEO_CURSOR_ATTRIBUTES { + USHORT Width; + USHORT Height; + SHORT Column; + SHORT Row; + UCHAR Rate; + UCHAR Enable; +} VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES; + +typedef struct _VIDEO_CURSOR_POSITION { + SHORT Column; + SHORT Row; +} VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION; + +typedef struct _VIDEO_POINTER_ATTRIBUTES { + ULONG Flags; + ULONG Width; + ULONG Height; + ULONG WidthInBytes; + ULONG Enable; + SHORT Column; + SHORT Row; + UCHAR Pixels[1]; +} VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES; + +/* VIDEO_POINTER_CAPABILITIES.Flags */ +#define VIDEO_MODE_ASYNC_POINTER 0x01 +#define VIDEO_MODE_MONO_POINTER 0x02 +#define VIDEO_MODE_COLOR_POINTER 0x04 +#define VIDEO_MODE_ANIMATE_START 0x08 +#define VIDEO_MODE_ANIMATE_UPDATE 0x10 + +typedef struct _VIDEO_POINTER_CAPABILITIES { + ULONG Flags; + ULONG MaxWidth; + ULONG MaxHeight; + ULONG HWPtrBitmapStart; + ULONG HWPtrBitmapEnd; +} VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES; + +typedef struct _VIDEO_POINTER_POSITION { + SHORT Column; + SHORT Row; +} VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION; + + +/* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */ +#define VIDEO_STATE_NON_STANDARD_VGA 0x00000001 +#define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002 +#define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004 + +typedef struct _VIDEO_HARDWARE_STATE_HEADER { + ULONG Length; + UCHAR PortValue[0x30]; + ULONG AttribIndexDataState; + ULONG BasicSequencerOffset; + ULONG BasicCrtContOffset; + ULONG BasicGraphContOffset; + ULONG BasicAttribContOffset; + ULONG BasicDacOffset; + ULONG BasicLatchesOffset; + ULONG ExtendedSequencerOffset; + ULONG ExtendedCrtContOffset; + ULONG ExtendedGraphContOffset; + ULONG ExtendedAttribContOffset; + ULONG ExtendedDacOffset; + ULONG ExtendedValidatorStateOffset; + ULONG ExtendedMiscDataOffset; + ULONG PlaneLength; + ULONG Plane1Offset; + ULONG Plane2Offset; + ULONG Plane3Offset; + ULONG Plane4Offset; + ULONG VGAStateFlags; + ULONG DIBOffset; + ULONG DIBBitsPerPixel; + ULONG DIBXResolution; + ULONG DIBYResolution; + ULONG DIBXlatOffset; + ULONG DIBXlatLength; + ULONG VesaInfoOffset; + PVOID FrameBufferData; +} VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER; + +typedef struct _VIDEO_CLUTDATA { + UCHAR Red; + UCHAR Green; + UCHAR Blue; + UCHAR Unused; +} VIDEO_CLUTDATA, *PVIDEO_CLUTDATA; + +typedef struct { + USHORT NumEntries; + USHORT FirstEntry; + union { + VIDEO_CLUTDATA RgbArray; + ULONG RgbLong; + } LookupTable[1]; +} VIDEO_CLUT, *PVIDEO_CLUT; + +typedef struct _VIDEO_PALETTE_DATA { + USHORT NumEntries; + USHORT FirstEntry; + USHORT Colors[1]; +} VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA; + +typedef struct _VIDEO_HARDWARE_STATE { + PVIDEO_HARDWARE_STATE_HEADER StateHeader; + ULONG StateLength; +} VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE; + +#define VIDEO_CHILD_ACTIVE 0x00000001 +#define VIDEO_CHILD_DETACHED 0x00000002 +#define VIDEO_CHILD_NOPRUNE_FREQ 0x80000000 +#define VIDEO_CHILD_NOPRUNE_RESOLUTION 0x40000000 + +#define VIDEO_DUALVIEW_REMOVABLE 0x00000001 +#define VIDEO_DUALVIEW_PRIMARY 0x80000000 +#define VIDEO_DUALVIEW_SECONDARY 0x40000000 + +#ifndef _WINDDI_ +typedef struct _ENG_EVENT *PEVENT; +#endif + +typedef struct _ENG_EVENT +{ + PVOID pKEvent; + ULONG fFlags; +} ENG_EVENT, *PENG_EVENT; + + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDVDEO_H */
