13#define DPRINT_TRACE DPRINT1
15#define DPRINT_TRACE(...)
28 if (!ConfigurationData)
30 DPRINT_TRACE(
"IsNewConfigData:FALSE - ConfigurationData == NULL\n");
36 DPRINT_TRACE(
"IsNewConfigData:FALSE - ConfigurationDataLength == %lu\n",
37 ConfigurationDataLength);
47 DPRINT_TRACE(
"IsNewConfigData:FALSE - Version %lu, Revision %lu\n",
74 ULONG PortCount = 0, IntCount = 0, MemCount = 0;
79 if (ControlPort) *ControlPort =
NULL;
80 if (CursorPort) *CursorPort =
NULL;
82 if (DeviceSpecific) *DeviceSpecific =
NULL;
183 *DeviceSpecific =
NULL;
210 if (!ConfigurationData ||
236 *VideoRamAddress = VideoRam->
u.
Memory.Start;
237 *VideoRamSize = VideoRam->
u.
Memory.Length;
238 DPRINT_TRACE(
"** FbBVid: Got video RAM address: 0x%I64X - Size: %lu\n",
239 VideoRamAddress->QuadPart, *VideoRamSize);
244 DPRINT1(
"** FbBVid: No video RAM available\n");
245 VideoRamAddress->QuadPart = 0;
257 *VideoConfigData = *VideoData;
267 DPRINT1(
"** FbBVid: Framebuffer data NOT FOUND\n");
280 if ((VideoRamAddress->QuadPart == 0) || (*VideoRamSize == 0))
282 DPRINT1(
"No video available!\n");
296 if (!ConfigurationData ||
322 *MonitorConfigData = *MonitorData;
372 for (; ComponentData->
Parent; ComponentData = ComponentData->
Parent)
380 if (!ComponentData->
Parent ||
468 if (!ConfigurationRoot)
501 Entry->ConfigurationData,
502 Entry->ComponentEntry.ConfigurationDataLength);
504 (VideoRamAddress->QuadPart == 0) || (*VideoRamSize == 0))
507 DPRINT1(
"No framebuffer found!\n");
517 if (!MonitorConfigData)
543 Entry->ConfigurationData,
544 Entry->ComponentEntry.ConfigurationDataLength);
574 ULONG LocalBusNumber;
589 &LocalMonitorConfigData,
594 DPRINT1(
"Boot Display not found\n");
600 DbgPrint(
"Boot Display found on Interface %lu, Bus %lu\n",
601 LocalInterface, LocalBusNumber);
602 DbgPrint(
" VideoRamAddress : 0x%I64X\n", VideoRamAddress->QuadPart);
603 DbgPrint(
" VideoRamSize : %lu\n", *VideoRamSize);
604 DbgPrint(
" Version : %u.%u\n", VideoConfigData->Version, VideoConfigData->Revision);
605 DbgPrint(
" VideoClock : %lu\n", VideoConfigData->VideoClock);
610 DbgPrint(
" BaseAddress : 0x%I64X\n", VideoRamAddress->QuadPart + VideoConfigData->FrameBufferOffset);
612 DbgPrint(
" ScreenWidth : %lu\n", VideoConfigData->ScreenWidth);
613 DbgPrint(
" ScreenHeight : %lu\n", VideoConfigData->ScreenHeight);
614 DbgPrint(
" PixelsPerScanLine : %lu\n", VideoConfigData->PixelsPerScanLine);
615 DbgPrint(
" BitsPerPixel : %lu\n", VideoConfigData->BitsPerPixel);
616 DbgPrint(
" ARGB masks: : %08x/%08x/%08x/%08x\n",
617 VideoConfigData->PixelMasks.ReservedMask,
618 VideoConfigData->PixelMasks.RedMask,
619 VideoConfigData->PixelMasks.GreenMask,
620 VideoConfigData->PixelMasks.BlueMask);
625 if ((VideoConfigData->ScreenWidth == 0) || (VideoConfigData->ScreenHeight == 0))
630 DbgPrint(
"Video screen dimensions not defined; use monitor resolution\n");
631 DbgPrint(
" ScreenWidth : %lu\n", VideoConfigData->ScreenWidth);
632 DbgPrint(
" ScreenHeight : %lu\n", VideoConfigData->ScreenHeight);
637 if (MonitorConfigData)
638 *MonitorConfigData = LocalMonitorConfigData;
644 if ((VideoConfigData->ScreenWidth <= 1) || (VideoConfigData->ScreenHeight <= 1))
646 DPRINT1(
"Cannot obtain current screen resolution\n");
706 DPRINT1(
"HalTranslateBusAddress(%lu, %lu, 0x%I64X) failed, fall back to finding a bus translation\n",
CMP_MF_TYPE CmpMultifunctionTypes[]
#define NT_SUCCESS(StatCode)
static BOOLEAN IsNewConfigData(_In_ PVOID ConfigurationData, _In_ ULONG ConfigurationDataLength)
static VOID GetVideoData(_In_ PCM_PARTIAL_RESOURCE_LIST ResourceList, _Out_opt_ PCM_PARTIAL_RESOURCE_DESCRIPTOR *Interrupt, _Out_opt_ PCM_PARTIAL_RESOURCE_DESCRIPTOR *ControlPort, _Out_opt_ PCM_PARTIAL_RESOURCE_DESCRIPTOR *CursorPort, _Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR *VideoRam, _Out_opt_ PCM_PARTIAL_RESOURCE_DESCRIPTOR *DeviceSpecific)
Given a CM_PARTIAL_RESOURCE_LIST, obtain pointers to resource descriptors for legacy video configurat...
NTSTATUS FindBootDisplay(_Out_ PPHYSICAL_ADDRESS VideoRamAddress, _Out_ PULONG VideoRamSize, _Out_ PCM_FRAMEBUF_DEVICE_DATA VideoConfigData, _Out_opt_ PCM_MONITOR_DEVICE_DATA MonitorConfigData, _Out_opt_ PINTERFACE_TYPE Interface, _Out_opt_ PULONG BusNumber)
Retrieves configuration data for the boot-time (POST) display controller and monitor peripheral.
static NTSTATUS FindBootDisplayFromLoaderARCTree(_Out_ PPHYSICAL_ADDRESS VideoRamAddress, _Out_ PULONG VideoRamSize, _Out_ PCM_FRAMEBUF_DEVICE_DATA VideoConfigData, _Out_opt_ PCM_MONITOR_DEVICE_DATA MonitorConfigData, _Out_opt_ PINTERFACE_TYPE Interface, _Out_opt_ PULONG BusNumber)
#define DPRINT_TRACE(...)
static VOID GetMonitorData(_In_ PCM_PARTIAL_RESOURCE_LIST ResourceList, _Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR *DeviceSpecific)
Given a CM_PARTIAL_RESOURCE_LIST, obtain a pointer to resource descriptor for monitor configuration d...
BOOLEAN NTAPI BootTranslateBusAddress(_In_ INTERFACE_TYPE InterfaceType, _In_ ULONG BusNumber, _In_ PHYSICAL_ADDRESS BusAddress, _Inout_ PULONG AddressSpace, _Out_ PPHYSICAL_ADDRESS TranslatedAddress)
Wrapper around HalTranslateBusAddress() and HALPRIVATEDISPATCH->HalFindBusAddressTranslation().
NTSTATUS GetFramebufferMonitorData(_Out_ PCM_MONITOR_DEVICE_DATA MonitorConfigData, _In_ PVOID ConfigurationData, _In_ ULONG ConfigurationDataLength)
NTSTATUS GetFramebufferVideoData(_Out_ PPHYSICAL_ADDRESS VideoRamAddress, _Out_ PULONG VideoRamSize, _Out_ PCM_FRAMEBUF_DEVICE_DATA VideoConfigData, _In_ PVOID ConfigurationData, _In_ ULONG ConfigurationDataLength)
static INTERFACE_TYPE GetArcComponentInterface(_In_ PCONFIGURATION_COMPONENT Component, _Out_opt_ PULONG BusNumber)
Retrieve the NT interface type and bus number of a given ARC configuration component,...
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOLEAN NTAPI HalTranslateBusAddress(IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, IN PHYSICAL_ADDRESS BusAddress, IN OUT PULONG AddressSpace, OUT PPHYSICAL_ADDRESS TranslatedAddress)
PLOADER_PARAMETER_BLOCK KeLoaderBlock
#define CM_RESOURCE_PORT_IO
#define CM_RESOURCE_MEMORY_READ_ONLY
#define HalFindBusAddressTranslation
PCONFIGURATION_COMPONENT_DATA NTAPI KeFindConfigurationNextEntry(IN PCONFIGURATION_COMPONENT_DATA Child, IN CONFIGURATION_CLASS Class, IN CONFIGURATION_TYPE Type, IN PULONG ComponentKey OPTIONAL, IN PCONFIGURATION_COMPONENT_DATA *NextLink)
PCONFIGURATION_COMPONENT_DATA NTAPI KeFindConfigurationEntry(IN PCONFIGURATION_COMPONENT_DATA Child, IN CONFIGURATION_CLASS Class, IN CONFIGURATION_TYPE Type, IN PULONG ComponentKey OPTIONAL)
#define STATUS_DEVICE_CONFIGURATION_ERROR
#define STATUS_DEVICE_DOES_NOT_EXIST
enum _INTERFACE_TYPE * PINTERFACE_TYPE
#define CmResourceTypeMemory
#define CmResourceTypeDeviceSpecific
enum _INTERFACE_TYPE INTERFACE_TYPE
#define CmResourceTypePort
#define CmResourceTypeInterrupt
struct _CM_PARTIAL_RESOURCE_LIST * PCM_PARTIAL_RESOURCE_LIST
struct _CM_FRAMEBUF_DEVICE_DATA * PCM_FRAMEBUF_DEVICE_DATA
base of all file and directory entries
ReactOS Framebuffer-specific video device configuration data.
USHORT VerticalResolution
USHORT HorizontalResolution
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@432::@437 Memory
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@432 u
CONFIGURATION_COMPONENT ComponentEntry
struct _CONFIGURATION_COMPONENT_DATA * Parent
PCONFIGURATION_COMPONENT_DATA ConfigurationRoot
#define FIELD_OFFSET(t, f)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
#define CM_RESOURCE_MEMORY_WRITEABILITY_MASK
struct _CM_MONITOR_DEVICE_DATA * PCM_MONITOR_DEVICE_DATA
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
BOOLEAN(NTAPI * pHalFindBusAddressTranslation)(_In_ PHYSICAL_ADDRESS BusAddress, _Inout_ PULONG AddressSpace, _Out_ PPHYSICAL_ADDRESS TranslatedAddress, _Inout_ PULONG_PTR Context, _In_ BOOLEAN NextBus)
_In_ ULONG _In_ PHYSICAL_ADDRESS BusAddress
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG _Out_ PPHYSICAL_ADDRESS TranslatedAddress
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG AddressSpace