wgl: Add stw_winsys callback to check which PFD flags should be added
Reviewed-by: Charmaine Lee <charmainel@vmware.com> Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7535>
This commit is contained in:
committed by
Erik Faye-Lund
parent
bb9cc7ede4
commit
c28eb3c6aa
@@ -38,6 +38,12 @@ struct pipe_resource;
|
||||
|
||||
struct stw_shared_surface;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
stw_pfd_gdi_support = 1 << 0,
|
||||
stw_pfd_double_buffer = 1 << 1,
|
||||
} stw_pfd_flag;
|
||||
|
||||
struct stw_winsys
|
||||
{
|
||||
struct pipe_screen *
|
||||
@@ -91,6 +97,13 @@ struct stw_winsys
|
||||
struct stw_shared_surface *dest,
|
||||
LPCRECT pRect,
|
||||
ULONGLONG PresentHistoryToken );
|
||||
|
||||
/**
|
||||
* Query whether the driver can support GDI and/or double-buffering in its
|
||||
* pixel formats (optional).
|
||||
*/
|
||||
unsigned
|
||||
(*get_pfd_flags)( struct pipe_screen *screen );
|
||||
};
|
||||
|
||||
boolean
|
||||
|
||||
@@ -84,13 +84,21 @@ gdi_get_adapter_luid(struct pipe_screen *screen,
|
||||
}
|
||||
|
||||
|
||||
static unsigned
|
||||
gdi_get_pfd_flags(struct pipe_screen *screen)
|
||||
{
|
||||
return d3d12_wgl_get_pfd_flags(screen);
|
||||
}
|
||||
|
||||
|
||||
static const struct stw_winsys stw_winsys = {
|
||||
&gdi_screen_create,
|
||||
&gdi_present,
|
||||
&gdi_get_adapter_luid,
|
||||
NULL, /* shared_surface_open */
|
||||
NULL, /* shared_surface_close */
|
||||
NULL /* compose */
|
||||
NULL, /* compose */
|
||||
&gdi_get_pfd_flags
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -218,6 +218,17 @@ gdi_get_adapter_luid(struct pipe_screen* screen,
|
||||
#endif
|
||||
|
||||
|
||||
static unsigned
|
||||
gdi_get_pfd_flags(struct pipe_screen *screen)
|
||||
{
|
||||
#ifdef GALLIUM_D3D12
|
||||
if (use_d3d12)
|
||||
return d3d12_wgl_get_pfd_flags(screen);
|
||||
#endif
|
||||
return stw_pfd_gdi_support;
|
||||
}
|
||||
|
||||
|
||||
static const struct stw_winsys stw_winsys = {
|
||||
&gdi_screen_create,
|
||||
&gdi_present,
|
||||
@@ -228,7 +239,8 @@ static const struct stw_winsys stw_winsys = {
|
||||
#endif
|
||||
NULL, /* shared_surface_open */
|
||||
NULL, /* shared_surface_close */
|
||||
NULL /* compose */
|
||||
NULL, /* compose */
|
||||
&gdi_get_pfd_flags,
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -43,6 +43,9 @@ d3d12_wgl_present(struct pipe_screen *screen,
|
||||
struct pipe_resource *res,
|
||||
HDC hDC);
|
||||
|
||||
unsigned
|
||||
d3d12_wgl_get_pfd_flags(struct pipe_screen *screen);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -48,3 +48,10 @@ d3d12_wgl_present(struct pipe_screen *screen,
|
||||
{
|
||||
screen->flush_frontbuffer(screen, res, 0, 0, hDC, NULL);
|
||||
}
|
||||
|
||||
unsigned
|
||||
d3d12_wgl_get_pfd_flags(struct pipe_screen *screen)
|
||||
{
|
||||
(void)screen;
|
||||
return stw_pfd_gdi_support;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user