egl: create DRI screen for display GPU in case of prime

The created DRI screen can be used to allocate VRAM memory from
display GPU in case of prime.

v2: remove extra whitespace (Marek Olšák)

Signed-off-by: Yogesh Mohanmarimuthu <yogesh.mohanmarimuthu@amd.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13422>
This commit is contained in:
Yogesh Mohanmarimuthu 2021-10-18 09:52:16 +05:30 committed by Marge Bot
parent b8da022da4
commit 5519dd0bd1
2 changed files with 24 additions and 0 deletions

View file

@ -980,6 +980,25 @@ EGLBoolean
dri2_create_screen(_EGLDisplay *disp)
{
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
char *driver_name_display_gpu;
if (dri2_dpy->fd_display_gpu >= 0) {
driver_name_display_gpu = loader_get_driver_for_fd(dri2_dpy->fd_display_gpu);
if (driver_name_display_gpu) {
/* check if driver name is matching so that non mesa drivers
* will not crash.
*/
if (strcmp(dri2_dpy->driver_name, driver_name_display_gpu) == 0) {
dri2_dpy->dri_screen_display_gpu =
dri2_dpy->mesa->createNewScreen(0, dri2_dpy->fd_display_gpu,
dri2_dpy->loader_extensions,
dri2_dpy->driver_extensions,
&dri2_dpy->driver_configs,
disp);
}
free(driver_name_display_gpu);
}
}
int screen_fd = dri2_dpy->swrast ? -1 : dri2_dpy->fd;
dri2_dpy->dri_screen = dri2_dpy->mesa->createNewScreen(0, screen_fd,
@ -1123,7 +1142,11 @@ dri2_display_destroy(_EGLDisplay *disp)
if (dri2_dpy->own_dri_screen) {
if (dri2_dpy->vtbl && dri2_dpy->vtbl->close_screen_notify)
dri2_dpy->vtbl->close_screen_notify(disp);
dri2_dpy->core->destroyScreen(dri2_dpy->dri_screen);
if (dri2_dpy->dri_screen_display_gpu)
dri2_dpy->core->destroyScreen(dri2_dpy->dri_screen_display_gpu);
}
if (dri2_dpy->fd >= 0)
close(dri2_dpy->fd);

View file

@ -223,6 +223,7 @@ struct dri2_egl_display
int dri2_major;
int dri2_minor;
__DRIscreen *dri_screen;
__DRIscreen *dri_screen_display_gpu;
bool own_dri_screen;
const __DRIconfig **driver_configs;
void *driver;