vl/vl_win32_screen_create_from_d3d12_device: Allow winsys to be injected
Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30996>
This commit is contained in:
@@ -102,7 +102,7 @@ vl_dri3_screen_create(void *display, int screen) { return NULL; };
|
|||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
struct vl_screen *vl_win32_screen_create(LUID *adapter);
|
struct vl_screen *vl_win32_screen_create(LUID *adapter);
|
||||||
struct vl_screen *vl_win32_screen_create_from_d3d12_device(IUnknown* d3d12_device);
|
struct vl_screen *vl_win32_screen_create_from_d3d12_device(IUnknown* d3d12_device, struct sw_winsys* winsys);
|
||||||
#else
|
#else
|
||||||
/* Always enable the DRM vl winsys */
|
/* Always enable the DRM vl winsys */
|
||||||
struct vl_screen *
|
struct vl_screen *
|
||||||
|
|||||||
@@ -88,16 +88,12 @@ release_pipe:
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct vl_screen *
|
struct vl_screen *
|
||||||
vl_win32_screen_create_from_d3d12_device(IUnknown* d3d12_device)
|
vl_win32_screen_create_from_d3d12_device(IUnknown* d3d12_device, struct sw_winsys* winsys)
|
||||||
{
|
{
|
||||||
struct vl_win32_screen *vscreen = CALLOC_STRUCT(vl_win32_screen);
|
struct vl_win32_screen *vscreen = CALLOC_STRUCT(vl_win32_screen);
|
||||||
if (!vscreen)
|
if (!vscreen)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
struct sw_winsys* winsys = gdi_create_sw_winsys(gdi_sw_acquire_hdc_by_value, gdi_sw_release_hdc_by_value);
|
|
||||||
if (!winsys)
|
|
||||||
goto release_pipe;
|
|
||||||
|
|
||||||
vscreen->base.pscreen = d3d12_create_dxcore_screen_from_d3d12_device(winsys, d3d12_device, &vscreen->adapter_luid);
|
vscreen->base.pscreen = d3d12_create_dxcore_screen_from_d3d12_device(winsys, d3d12_device, &vscreen->adapter_luid);
|
||||||
|
|
||||||
if (!vscreen->base.pscreen)
|
if (!vscreen->base.pscreen)
|
||||||
@@ -111,8 +107,6 @@ vl_win32_screen_create_from_d3d12_device(IUnknown* d3d12_device)
|
|||||||
return &vscreen->base;
|
return &vscreen->base;
|
||||||
|
|
||||||
release_pipe:
|
release_pipe:
|
||||||
if(winsys)
|
|
||||||
winsys->destroy(winsys);
|
|
||||||
vl_win32_screen_destroy(&vscreen->base);
|
vl_win32_screen_destroy(&vscreen->base);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user