Commit b502a3e3 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

winex11.drv: Use gdi driver types for display device handler.

parent 8278bdcb
...@@ -204,10 +204,10 @@ static void query_desktop_work_area( RECT *rc_work ) ...@@ -204,10 +204,10 @@ static void query_desktop_work_area( RECT *rc_work )
TRACE( "found tray %p %s work area %s\n", hwnd, wine_dbgstr_rect( &rect ), wine_dbgstr_rect( rc_work ) ); TRACE( "found tray %p %s work area %s\n", hwnd, wine_dbgstr_rect( &rect ), wine_dbgstr_rect( rc_work ) );
} }
static BOOL X11DRV_desktop_get_gpus( struct x11drv_gpu **new_gpus, int *count ) static BOOL X11DRV_desktop_get_gpus( struct gdi_gpu **new_gpus, int *count )
{ {
static const WCHAR wine_adapterW[] = {'W','i','n','e',' ','A','d','a','p','t','e','r',0}; static const WCHAR wine_adapterW[] = {'W','i','n','e',' ','A','d','a','p','t','e','r',0};
struct x11drv_gpu *gpu; struct gdi_gpu *gpu;
gpu = heap_calloc( 1, sizeof(*gpu) ); gpu = heap_calloc( 1, sizeof(*gpu) );
if (!gpu) return FALSE; if (!gpu) return FALSE;
...@@ -223,15 +223,15 @@ static BOOL X11DRV_desktop_get_gpus( struct x11drv_gpu **new_gpus, int *count ) ...@@ -223,15 +223,15 @@ static BOOL X11DRV_desktop_get_gpus( struct x11drv_gpu **new_gpus, int *count )
return TRUE; return TRUE;
} }
static void X11DRV_desktop_free_gpus( struct x11drv_gpu *gpus ) static void X11DRV_desktop_free_gpus( struct gdi_gpu *gpus )
{ {
heap_free( gpus ); heap_free( gpus );
} }
/* TODO: Support multi-head virtual desktop */ /* TODO: Support multi-head virtual desktop */
static BOOL X11DRV_desktop_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter **new_adapters, int *count ) static BOOL X11DRV_desktop_get_adapters( ULONG_PTR gpu_id, struct gdi_adapter **new_adapters, int *count )
{ {
struct x11drv_adapter *adapter; struct gdi_adapter *adapter;
adapter = heap_calloc( 1, sizeof(*adapter) ); adapter = heap_calloc( 1, sizeof(*adapter) );
if (!adapter) return FALSE; if (!adapter) return FALSE;
...@@ -245,17 +245,17 @@ static BOOL X11DRV_desktop_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter ...@@ -245,17 +245,17 @@ static BOOL X11DRV_desktop_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter
return TRUE; return TRUE;
} }
static void X11DRV_desktop_free_adapters( struct x11drv_adapter *adapters ) static void X11DRV_desktop_free_adapters( struct gdi_adapter *adapters )
{ {
heap_free( adapters ); heap_free( adapters );
} }
static BOOL X11DRV_desktop_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor **new_monitors, int *count ) static BOOL X11DRV_desktop_get_monitors( ULONG_PTR adapter_id, struct gdi_monitor **new_monitors, int *count )
{ {
static const WCHAR generic_nonpnp_monitorW[] = { static const WCHAR generic_nonpnp_monitorW[] = {
'G','e','n','e','r','i','c',' ', 'G','e','n','e','r','i','c',' ',
'N','o','n','-','P','n','P',' ','M','o','n','i','t','o','r',0}; 'N','o','n','-','P','n','P',' ','M','o','n','i','t','o','r',0};
struct x11drv_monitor *monitor; struct gdi_monitor *monitor;
monitor = heap_calloc( 1, sizeof(*monitor) ); monitor = heap_calloc( 1, sizeof(*monitor) );
if (!monitor) return FALSE; if (!monitor) return FALSE;
...@@ -275,7 +275,7 @@ static BOOL X11DRV_desktop_get_monitors( ULONG_PTR adapter_id, struct x11drv_mon ...@@ -275,7 +275,7 @@ static BOOL X11DRV_desktop_get_monitors( ULONG_PTR adapter_id, struct x11drv_mon
return TRUE; return TRUE;
} }
static void X11DRV_desktop_free_monitors( struct x11drv_monitor *monitors, int count ) static void X11DRV_desktop_free_monitors( struct gdi_monitor *monitors, int count )
{ {
heap_free( monitors ); heap_free( monitors );
} }
......
...@@ -247,9 +247,9 @@ RECT get_primary_monitor_rect(void) ...@@ -247,9 +247,9 @@ RECT get_primary_monitor_rect(void)
RECT get_host_primary_monitor_rect(void) RECT get_host_primary_monitor_rect(void)
{ {
INT gpu_count, adapter_count, monitor_count; INT gpu_count, adapter_count, monitor_count;
struct x11drv_gpu *gpus = NULL; struct gdi_gpu *gpus = NULL;
struct x11drv_adapter *adapters = NULL; struct gdi_adapter *adapters = NULL;
struct x11drv_monitor *monitors = NULL; struct gdi_monitor *monitors = NULL;
RECT rect = {0}; RECT rect = {0};
/* The first monitor is always primary */ /* The first monitor is always primary */
...@@ -264,9 +264,9 @@ RECT get_host_primary_monitor_rect(void) ...@@ -264,9 +264,9 @@ RECT get_host_primary_monitor_rect(void)
return rect; return rect;
} }
BOOL get_host_primary_gpu(struct x11drv_gpu *gpu) BOOL get_host_primary_gpu(struct gdi_gpu *gpu)
{ {
struct x11drv_gpu *gpus; struct gdi_gpu *gpus;
INT gpu_count; INT gpu_count;
if (host_handler.get_gpus(&gpus, &gpu_count) && gpu_count) if (host_handler.get_gpus(&gpus, &gpu_count) && gpu_count)
...@@ -459,7 +459,7 @@ static BOOL link_device(const WCHAR *instance, const GUID *guid) ...@@ -459,7 +459,7 @@ static BOOL link_device(const WCHAR *instance, const GUID *guid)
/* Initialize a GPU instance. /* Initialize a GPU instance.
* Return its GUID string in guid_string, driver value in driver parameter and LUID in gpu_luid */ * Return its GUID string in guid_string, driver value in driver parameter and LUID in gpu_luid */
static BOOL X11DRV_InitGpu(HDEVINFO devinfo, const struct x11drv_gpu *gpu, INT gpu_index, WCHAR *guid_string, static BOOL X11DRV_InitGpu(HDEVINFO devinfo, const struct gdi_gpu *gpu, INT gpu_index, WCHAR *guid_string,
WCHAR *driver, LUID *gpu_luid) WCHAR *driver, LUID *gpu_luid)
{ {
static const WCHAR adapter_stringW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','A','d','a','p','t','e','r','S','t','r','i','n','g',0}; static const WCHAR adapter_stringW[] = {'H','a','r','d','w','a','r','e','I','n','f','o','r','m','a','t','i','o','n','.','A','d','a','p','t','e','r','S','t','r','i','n','g',0};
...@@ -598,8 +598,8 @@ done: ...@@ -598,8 +598,8 @@ done:
} }
static BOOL X11DRV_InitAdapter(HKEY video_hkey, INT video_index, INT gpu_index, INT adapter_index, INT monitor_count, static BOOL X11DRV_InitAdapter(HKEY video_hkey, INT video_index, INT gpu_index, INT adapter_index, INT monitor_count,
const struct x11drv_gpu *gpu, const WCHAR *guid_string, const struct gdi_gpu *gpu, const WCHAR *guid_string,
const WCHAR *gpu_driver, const struct x11drv_adapter *adapter) const WCHAR *gpu_driver, const struct gdi_adapter *adapter)
{ {
WCHAR adapter_keyW[MAX_PATH]; WCHAR adapter_keyW[MAX_PATH];
WCHAR key_nameW[MAX_PATH]; WCHAR key_nameW[MAX_PATH];
...@@ -664,7 +664,7 @@ done: ...@@ -664,7 +664,7 @@ done:
return ret; return ret;
} }
static BOOL X11DRV_InitMonitor(HDEVINFO devinfo, const struct x11drv_monitor *monitor, int monitor_index, static BOOL X11DRV_InitMonitor(HDEVINFO devinfo, const struct gdi_monitor *monitor, int monitor_index,
int video_index, const LUID *gpu_luid, UINT output_id) int video_index, const LUID *gpu_luid, UINT output_id)
{ {
SP_DEVINFO_DATA device_data = {sizeof(SP_DEVINFO_DATA)}; SP_DEVINFO_DATA device_data = {sizeof(SP_DEVINFO_DATA)};
...@@ -798,9 +798,9 @@ void X11DRV_DisplayDevices_Init(BOOL force) ...@@ -798,9 +798,9 @@ void X11DRV_DisplayDevices_Init(BOOL force)
{ {
HANDLE mutex; HANDLE mutex;
struct x11drv_display_device_handler *handler = is_virtual_desktop() ? &desktop_handler : &host_handler; struct x11drv_display_device_handler *handler = is_virtual_desktop() ? &desktop_handler : &host_handler;
struct x11drv_gpu *gpus = NULL; struct gdi_gpu *gpus = NULL;
struct x11drv_adapter *adapters = NULL; struct gdi_adapter *adapters = NULL;
struct x11drv_monitor *monitors = NULL; struct gdi_monitor *monitors = NULL;
INT gpu_count, adapter_count, monitor_count; INT gpu_count, adapter_count, monitor_count;
INT gpu, adapter, monitor; INT gpu, adapter, monitor;
HDEVINFO gpu_devinfo = NULL, monitor_devinfo = NULL; HDEVINFO gpu_devinfo = NULL, monitor_devinfo = NULL;
......
...@@ -770,47 +770,6 @@ void init_user_driver(void) DECLSPEC_HIDDEN; ...@@ -770,47 +770,6 @@ void init_user_driver(void) DECLSPEC_HIDDEN;
/* X11 display device handler. Used to initialize display device registry data */ /* X11 display device handler. Used to initialize display device registry data */
/* Represent a physical GPU in the PCI slots */
struct x11drv_gpu
{
/* ID to uniquely identify a GPU in handler */
ULONG_PTR id;
/* Name */
WCHAR name[128];
/* PCI ID */
UINT vendor_id;
UINT device_id;
UINT subsys_id;
UINT revision_id;
/* Vulkan device UUID */
GUID vulkan_uuid;
};
/* Represent an adapter in EnumDisplayDevices context */
struct x11drv_adapter
{
/* ID to uniquely identify an adapter in handler */
ULONG_PTR id;
/* as StateFlags in DISPLAY_DEVICE struct */
DWORD state_flags;
};
/* Represent a monitor in EnumDisplayDevices context */
struct x11drv_monitor
{
/* Name */
WCHAR name[128];
/* RcMonitor in MONITORINFO struct */
RECT rc_monitor;
/* RcWork in MONITORINFO struct */
RECT rc_work;
/* StateFlags in DISPLAY_DEVICE struct */
DWORD state_flags;
/* Extended Device Identification Data */
unsigned long edid_len;
unsigned char *edid;
};
/* Required functions for display device registry initialization */ /* Required functions for display device registry initialization */
struct x11drv_display_device_handler struct x11drv_display_device_handler
{ {
...@@ -823,28 +782,28 @@ struct x11drv_display_device_handler ...@@ -823,28 +782,28 @@ struct x11drv_display_device_handler
/* get_gpus will be called to get a list of GPUs. First GPU has to be where the primary adapter is. /* get_gpus will be called to get a list of GPUs. First GPU has to be where the primary adapter is.
* *
* Return FALSE on failure with parameters unchanged */ * Return FALSE on failure with parameters unchanged */
BOOL (*get_gpus)(struct x11drv_gpu **gpus, int *count); BOOL (*get_gpus)(struct gdi_gpu **gpus, int *count);
/* get_adapters will be called to get a list of adapters in EnumDisplayDevices context under a GPU. /* get_adapters will be called to get a list of adapters in EnumDisplayDevices context under a GPU.
* The first adapter has to be primary if GPU is primary. * The first adapter has to be primary if GPU is primary.
* *
* Return FALSE on failure with parameters unchanged */ * Return FALSE on failure with parameters unchanged */
BOOL (*get_adapters)(ULONG_PTR gpu_id, struct x11drv_adapter **adapters, int *count); BOOL (*get_adapters)(ULONG_PTR gpu_id, struct gdi_adapter **adapters, int *count);
/* get_monitors will be called to get a list of monitors in EnumDisplayDevices context under an adapter. /* get_monitors will be called to get a list of monitors in EnumDisplayDevices context under an adapter.
* The first monitor has to be primary if adapter is primary. * The first monitor has to be primary if adapter is primary.
* *
* Return FALSE on failure with parameters unchanged */ * Return FALSE on failure with parameters unchanged */
BOOL (*get_monitors)(ULONG_PTR adapter_id, struct x11drv_monitor **monitors, int *count); BOOL (*get_monitors)(ULONG_PTR adapter_id, struct gdi_monitor **monitors, int *count);
/* free_gpus will be called to free a GPU list from get_gpus */ /* free_gpus will be called to free a GPU list from get_gpus */
void (*free_gpus)(struct x11drv_gpu *gpus); void (*free_gpus)(struct gdi_gpu *gpus);
/* free_adapters will be called to free an adapter list from get_adapters */ /* free_adapters will be called to free an adapter list from get_adapters */
void (*free_adapters)(struct x11drv_adapter *adapters); void (*free_adapters)(struct gdi_adapter *adapters);
/* free_monitors will be called to free a monitor list from get_monitors */ /* free_monitors will be called to free a monitor list from get_monitors */
void (*free_monitors)(struct x11drv_monitor *monitors, int count); void (*free_monitors)(struct gdi_monitor *monitors, int count);
/* register_event_handlers will be called to register event handlers. /* register_event_handlers will be called to register event handlers.
* This function pointer is optional and can be NULL when driver doesn't support it */ * This function pointer is optional and can be NULL when driver doesn't support it */
...@@ -852,7 +811,7 @@ struct x11drv_display_device_handler ...@@ -852,7 +811,7 @@ struct x11drv_display_device_handler
}; };
extern HANDLE get_display_device_init_mutex(void) DECLSPEC_HIDDEN; extern HANDLE get_display_device_init_mutex(void) DECLSPEC_HIDDEN;
extern BOOL get_host_primary_gpu(struct x11drv_gpu *gpu) DECLSPEC_HIDDEN; extern BOOL get_host_primary_gpu(struct gdi_gpu *gpu) DECLSPEC_HIDDEN;
extern void release_display_device_init_mutex(HANDLE) DECLSPEC_HIDDEN; extern void release_display_device_init_mutex(HANDLE) DECLSPEC_HIDDEN;
extern void X11DRV_DisplayDevices_SetHandler(const struct x11drv_display_device_handler *handler) DECLSPEC_HIDDEN; extern void X11DRV_DisplayDevices_SetHandler(const struct x11drv_display_device_handler *handler) DECLSPEC_HIDDEN;
extern void X11DRV_DisplayDevices_Init(BOOL force) DECLSPEC_HIDDEN; extern void X11DRV_DisplayDevices_Init(BOOL force) DECLSPEC_HIDDEN;
......
...@@ -120,10 +120,10 @@ static inline int query_screens(void) ...@@ -120,10 +120,10 @@ static inline int query_screens(void)
#endif /* SONAME_LIBXINERAMA */ #endif /* SONAME_LIBXINERAMA */
static BOOL xinerama_get_gpus( struct x11drv_gpu **new_gpus, int *count ) static BOOL xinerama_get_gpus( struct gdi_gpu **new_gpus, int *count )
{ {
static const WCHAR wine_adapterW[] = {'W','i','n','e',' ','A','d','a','p','t','e','r',0}; static const WCHAR wine_adapterW[] = {'W','i','n','e',' ','A','d','a','p','t','e','r',0};
struct x11drv_gpu *gpus; struct gdi_gpu *gpus;
/* Xinerama has no support for GPU, faking one */ /* Xinerama has no support for GPU, faking one */
gpus = heap_calloc( 1, sizeof(*gpus) ); gpus = heap_calloc( 1, sizeof(*gpus) );
...@@ -138,14 +138,14 @@ static BOOL xinerama_get_gpus( struct x11drv_gpu **new_gpus, int *count ) ...@@ -138,14 +138,14 @@ static BOOL xinerama_get_gpus( struct x11drv_gpu **new_gpus, int *count )
return TRUE; return TRUE;
} }
static void xinerama_free_gpus( struct x11drv_gpu *gpus ) static void xinerama_free_gpus( struct gdi_gpu *gpus )
{ {
heap_free( gpus ); heap_free( gpus );
} }
static BOOL xinerama_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter **new_adapters, int *count ) static BOOL xinerama_get_adapters( ULONG_PTR gpu_id, struct gdi_adapter **new_adapters, int *count )
{ {
struct x11drv_adapter *adapters = NULL; struct gdi_adapter *adapters = NULL;
INT index = 0; INT index = 0;
INT i, j; INT i, j;
INT primary_index; INT primary_index;
...@@ -194,7 +194,7 @@ static BOOL xinerama_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter **new ...@@ -194,7 +194,7 @@ static BOOL xinerama_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter **new
/* Primary adapter has to be first */ /* Primary adapter has to be first */
if (primary_index) if (primary_index)
{ {
struct x11drv_adapter tmp; struct gdi_adapter tmp;
tmp = adapters[primary_index]; tmp = adapters[primary_index];
adapters[primary_index] = adapters[0]; adapters[primary_index] = adapters[0];
adapters[0] = tmp; adapters[0] = tmp;
...@@ -205,17 +205,17 @@ static BOOL xinerama_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter **new ...@@ -205,17 +205,17 @@ static BOOL xinerama_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter **new
return TRUE; return TRUE;
} }
static void xinerama_free_adapters( struct x11drv_adapter *adapters ) static void xinerama_free_adapters( struct gdi_adapter *adapters )
{ {
heap_free( adapters ); heap_free( adapters );
} }
static BOOL xinerama_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor **new_monitors, int *count ) static BOOL xinerama_get_monitors( ULONG_PTR adapter_id, struct gdi_monitor **new_monitors, int *count )
{ {
static const WCHAR generic_nonpnp_monitorW[] = { static const WCHAR generic_nonpnp_monitorW[] = {
'G','e','n','e','r','i','c',' ', 'G','e','n','e','r','i','c',' ',
'N','o','n','-','P','n','P',' ','M','o','n','i','t','o','r',0}; 'N','o','n','-','P','n','P',' ','M','o','n','i','t','o','r',0};
struct x11drv_monitor *monitor; struct gdi_monitor *monitor;
INT first = (INT)adapter_id; INT first = (INT)adapter_id;
INT monitor_count = 0; INT monitor_count = 0;
INT index = 0; INT index = 0;
...@@ -258,7 +258,7 @@ static BOOL xinerama_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor * ...@@ -258,7 +258,7 @@ static BOOL xinerama_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor *
return TRUE; return TRUE;
} }
static void xinerama_free_monitors( struct x11drv_monitor *monitors, int count ) static void xinerama_free_monitors( struct gdi_monitor *monitors, int count )
{ {
heap_free( monitors ); heap_free( monitors );
} }
......
...@@ -468,22 +468,23 @@ static void get_screen_size( XRRScreenResources *resources, unsigned int *width, ...@@ -468,22 +468,23 @@ static void get_screen_size( XRRScreenResources *resources, unsigned int *width,
} }
} }
static void get_edid( RROutput output, unsigned char **prop, unsigned long *len ) static unsigned int get_edid( RROutput output, unsigned char **prop )
{ {
int result, actual_format; int result, actual_format;
unsigned long bytes_after; unsigned long bytes_after, len;
Atom actual_type; Atom actual_type;
result = pXRRGetOutputProperty( gdi_display, output, x11drv_atom(EDID), 0, 128, FALSE, FALSE, result = pXRRGetOutputProperty( gdi_display, output, x11drv_atom(EDID), 0, 128, FALSE, FALSE,
AnyPropertyType, &actual_type, &actual_format, len, AnyPropertyType, &actual_type, &actual_format, &len,
&bytes_after, prop ); &bytes_after, prop );
if (result != Success) if (result != Success)
{ {
WARN("Could not retrieve EDID property for output %#lx.\n", output); WARN("Could not retrieve EDID property for output %#lx.\n", output);
*prop = NULL; *prop = NULL;
*len = 0; return 0;
} }
return len;
} }
static void set_screen_size( int width, int height ) static void set_screen_size( int width, int height )
...@@ -637,7 +638,7 @@ static BOOL is_crtc_primary( RECT primary, const XRRCrtcInfo *crtc ) ...@@ -637,7 +638,7 @@ static BOOL is_crtc_primary( RECT primary, const XRRCrtcInfo *crtc )
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
static BOOL get_gpu_properties_from_vulkan( struct x11drv_gpu *gpu, const XRRProviderInfo *provider_info ) static BOOL get_gpu_properties_from_vulkan( struct gdi_gpu *gpu, const XRRProviderInfo *provider_info )
{ {
static const char *extensions[] = static const char *extensions[] =
{ {
...@@ -745,10 +746,10 @@ done: ...@@ -745,10 +746,10 @@ done:
/* Get a list of GPUs reported by XRandR 1.4. Set get_properties to FALSE if GPU properties are /* Get a list of GPUs reported by XRandR 1.4. Set get_properties to FALSE if GPU properties are
* not needed to avoid unnecessary querying */ * not needed to avoid unnecessary querying */
static BOOL xrandr14_get_gpus2( struct x11drv_gpu **new_gpus, int *count, BOOL get_properties ) static BOOL xrandr14_get_gpus2( struct gdi_gpu **new_gpus, int *count, BOOL get_properties )
{ {
static const WCHAR wine_adapterW[] = {'W','i','n','e',' ','A','d','a','p','t','e','r',0}; static const WCHAR wine_adapterW[] = {'W','i','n','e',' ','A','d','a','p','t','e','r',0};
struct x11drv_gpu *gpus = NULL; struct gdi_gpu *gpus = NULL;
XRRScreenResources *screen_resources = NULL; XRRScreenResources *screen_resources = NULL;
XRRProviderResources *provider_resources = NULL; XRRProviderResources *provider_resources = NULL;
XRRProviderInfo *provider_info = NULL; XRRProviderInfo *provider_info = NULL;
...@@ -819,7 +820,7 @@ static BOOL xrandr14_get_gpus2( struct x11drv_gpu **new_gpus, int *count, BOOL g ...@@ -819,7 +820,7 @@ static BOOL xrandr14_get_gpus2( struct x11drv_gpu **new_gpus, int *count, BOOL g
/* Make primary GPU the first */ /* Make primary GPU the first */
if (primary_provider > 0) if (primary_provider > 0)
{ {
struct x11drv_gpu tmp = gpus[0]; struct gdi_gpu tmp = gpus[0];
gpus[0] = gpus[primary_provider]; gpus[0] = gpus[primary_provider];
gpus[primary_provider] = tmp; gpus[primary_provider] = tmp;
} }
...@@ -840,19 +841,19 @@ done: ...@@ -840,19 +841,19 @@ done:
return ret; return ret;
} }
static BOOL xrandr14_get_gpus( struct x11drv_gpu **new_gpus, int *count ) static BOOL xrandr14_get_gpus( struct gdi_gpu **new_gpus, int *count )
{ {
return xrandr14_get_gpus2( new_gpus, count, TRUE ); return xrandr14_get_gpus2( new_gpus, count, TRUE );
} }
static void xrandr14_free_gpus( struct x11drv_gpu *gpus ) static void xrandr14_free_gpus( struct gdi_gpu *gpus )
{ {
heap_free( gpus ); heap_free( gpus );
} }
static BOOL xrandr14_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter **new_adapters, int *count ) static BOOL xrandr14_get_adapters( ULONG_PTR gpu_id, struct gdi_adapter **new_adapters, int *count )
{ {
struct x11drv_adapter *adapters = NULL; struct gdi_adapter *adapters = NULL;
XRRScreenResources *screen_resources = NULL; XRRScreenResources *screen_resources = NULL;
XRRProviderInfo *provider_info = NULL; XRRProviderInfo *provider_info = NULL;
XRRCrtcInfo *enum_crtc_info, *crtc_info = NULL; XRRCrtcInfo *enum_crtc_info, *crtc_info = NULL;
...@@ -986,7 +987,7 @@ static BOOL xrandr14_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter **new ...@@ -986,7 +987,7 @@ static BOOL xrandr14_get_adapters( ULONG_PTR gpu_id, struct x11drv_adapter **new
/* Make primary adapter the first */ /* Make primary adapter the first */
if (primary_adapter) if (primary_adapter)
{ {
struct x11drv_adapter tmp = adapters[0]; struct gdi_adapter tmp = adapters[0];
adapters[0] = adapters[primary_adapter]; adapters[0] = adapters[primary_adapter];
adapters[primary_adapter] = tmp; adapters[primary_adapter] = tmp;
} }
...@@ -1011,17 +1012,17 @@ done: ...@@ -1011,17 +1012,17 @@ done:
return ret; return ret;
} }
static void xrandr14_free_adapters( struct x11drv_adapter *adapters ) static void xrandr14_free_adapters( struct gdi_adapter *adapters )
{ {
heap_free( adapters ); heap_free( adapters );
} }
static BOOL xrandr14_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor **new_monitors, int *count ) static BOOL xrandr14_get_monitors( ULONG_PTR adapter_id, struct gdi_monitor **new_monitors, int *count )
{ {
static const WCHAR generic_nonpnp_monitorW[] = { static const WCHAR generic_nonpnp_monitorW[] = {
'G','e','n','e','r','i','c',' ', 'G','e','n','e','r','i','c',' ',
'N','o','n','-','P','n','P',' ','M','o','n','i','t','o','r',0}; 'N','o','n','-','P','n','P',' ','M','o','n','i','t','o','r',0};
struct x11drv_monitor *realloc_monitors, *monitors = NULL; struct gdi_monitor *realloc_monitors, *monitors = NULL;
XRRScreenResources *screen_resources = NULL; XRRScreenResources *screen_resources = NULL;
XRROutputInfo *output_info = NULL, *enum_output_info = NULL; XRROutputInfo *output_info = NULL, *enum_output_info = NULL;
XRRCrtcInfo *crtc_info = NULL, *enum_crtc_info; XRRCrtcInfo *crtc_info = NULL, *enum_crtc_info;
...@@ -1056,7 +1057,7 @@ static BOOL xrandr14_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor * ...@@ -1056,7 +1057,7 @@ static BOOL xrandr14_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor *
{ {
lstrcpyW( monitors[monitor_count].name, generic_nonpnp_monitorW ); lstrcpyW( monitors[monitor_count].name, generic_nonpnp_monitorW );
monitors[monitor_count].state_flags = DISPLAY_DEVICE_ATTACHED; monitors[monitor_count].state_flags = DISPLAY_DEVICE_ATTACHED;
get_edid( adapter_id, &monitors[monitor_count].edid, &monitors[monitor_count].edid_len ); monitors[monitor_count].edid_len = get_edid( adapter_id, &monitors[monitor_count].edid );
monitor_count = 1; monitor_count = 1;
} }
/* Active monitors, need to find other monitors with the same coordinates as mirrored */ /* Active monitors, need to find other monitors with the same coordinates as mirrored */
...@@ -1113,8 +1114,8 @@ static BOOL xrandr14_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor * ...@@ -1113,8 +1114,8 @@ static BOOL xrandr14_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor *
if (is_crtc_primary( primary_rect, crtc_info )) if (is_crtc_primary( primary_rect, crtc_info ))
primary_index = monitor_count; primary_index = monitor_count;
get_edid( screen_resources->outputs[i], &monitors[monitor_count].edid, monitors[monitor_count].edid_len = get_edid( screen_resources->outputs[i],
&monitors[monitor_count].edid_len ); &monitors[monitor_count].edid );
monitor_count++; monitor_count++;
} }
...@@ -1128,7 +1129,7 @@ static BOOL xrandr14_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor * ...@@ -1128,7 +1129,7 @@ static BOOL xrandr14_get_monitors( ULONG_PTR adapter_id, struct x11drv_monitor *
/* Make sure the first monitor is the primary */ /* Make sure the first monitor is the primary */
if (primary_index) if (primary_index)
{ {
struct x11drv_monitor tmp = monitors[0]; struct gdi_monitor tmp = monitors[0];
monitors[0] = monitors[primary_index]; monitors[0] = monitors[primary_index];
monitors[primary_index] = tmp; monitors[primary_index] = tmp;
} }
...@@ -1166,7 +1167,7 @@ done: ...@@ -1166,7 +1167,7 @@ done:
return ret; return ret;
} }
static void xrandr14_free_monitors( struct x11drv_monitor *monitors, int count ) static void xrandr14_free_monitors( struct gdi_monitor *monitors, int count )
{ {
int i; int i;
...@@ -1217,8 +1218,8 @@ static BOOL xrandr14_get_id( const WCHAR *device_name, ULONG_PTR *id ) ...@@ -1217,8 +1218,8 @@ static BOOL xrandr14_get_id( const WCHAR *device_name, ULONG_PTR *id )
struct current_mode *tmp_modes, *new_current_modes = NULL; struct current_mode *tmp_modes, *new_current_modes = NULL;
INT gpu_count, adapter_count, new_current_mode_count = 0; INT gpu_count, adapter_count, new_current_mode_count = 0;
INT gpu_idx, adapter_idx, display_idx; INT gpu_idx, adapter_idx, display_idx;
struct x11drv_adapter *adapters; struct gdi_adapter *adapters;
struct x11drv_gpu *gpus; struct gdi_gpu *gpus;
WCHAR *end; WCHAR *end;
/* Parse \\.\DISPLAY%d */ /* Parse \\.\DISPLAY%d */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment