diff options
author | Yogesh Mohan Marimuthu <yogesh.mohanmarimuthu@amd.com> | 2022-12-01 14:59:34 +0530 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-01-24 12:51:35 +0000 |
commit | c712419c1a1549562aea73c9533ce40edfc7b163 (patch) | |
tree | 6f8f84a2946d23344c8b0c2771a299deb73116d9 /src/egl | |
parent | 967b9ad084ecf28f639aeb21b5bdf76813e65a8a (diff) | |
download | mesa-c712419c1a1549562aea73c9533ce40edfc7b163.tar.gz |
egl: add render_gpu tag to dri2_dpy->fd and dri2_dpy->dri_screen variable
v1: add render_gpu_tag (Pierre-Eric)
Signed-off-by: Yogesh Mohan Marimuthu <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>
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/drivers/dri2/egl_dri2.c | 80 | ||||
-rw-r--r-- | src/egl/drivers/dri2/egl_dri2.h | 6 | ||||
-rw-r--r-- | src/egl/drivers/dri2/platform_android.c | 40 | ||||
-rw-r--r-- | src/egl/drivers/dri2/platform_device.c | 18 | ||||
-rw-r--r-- | src/egl/drivers/dri2/platform_drm.c | 20 | ||||
-rw-r--r-- | src/egl/drivers/dri2/platform_surfaceless.c | 26 | ||||
-rw-r--r-- | src/egl/drivers/dri2/platform_wayland.c | 46 | ||||
-rw-r--r-- | src/egl/drivers/dri2/platform_x11.c | 26 | ||||
-rw-r--r-- | src/egl/drivers/dri2/platform_x11_dri3.c | 25 |
9 files changed, 145 insertions, 142 deletions
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index dcdf0b3d4f4..46ebaa37256 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -819,7 +819,7 @@ static int get_screen_param(_EGLDisplay *disp, enum pipe_cap param) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); - struct dri_screen *screen = dri_screen(dri2_dpy->dri_screen); + struct dri_screen *screen = dri_screen(dri2_dpy->dri_screen_render_gpu); return screen->base.screen->get_param(screen->base.screen, param); } @@ -827,7 +827,7 @@ void dri2_setup_screen(_EGLDisplay *disp) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); - struct dri_screen *screen = dri_screen(dri2_dpy->dri_screen); + struct dri_screen *screen = dri_screen(dri2_dpy->dri_screen_render_gpu); struct pipe_screen *pscreen = screen->base.screen; unsigned int api_mask = screen->api_mask; @@ -883,7 +883,7 @@ dri2_setup_screen(_EGLDisplay *disp) if (dri2_dpy->fence->get_fence_from_cl_event) disp->Extensions.KHR_cl_event2 = EGL_TRUE; unsigned capabilities = - dri2_dpy->fence->get_capabilities(dri2_dpy->dri_screen); + dri2_dpy->fence->get_capabilities(dri2_dpy->dri_screen_render_gpu); disp->Extensions.ANDROID_native_fence_sync = (capabilities & __DRI_FENCE_CAP_NATIVE_FD) != 0; } @@ -898,7 +898,7 @@ dri2_setup_screen(_EGLDisplay *disp) dri2_dpy->image->getCapabilities != NULL) { int capabilities; - capabilities = dri2_dpy->image->getCapabilities(dri2_dpy->dri_screen); + capabilities = dri2_dpy->image->getCapabilities(dri2_dpy->dri_screen_render_gpu); disp->Extensions.MESA_drm_image = (capabilities & __DRI_IMAGE_CAP_GLOBAL_NAMES) != 0; if (dri2_dpy->image->base.version >= 11) @@ -946,7 +946,7 @@ dri2_setup_swap_interval(_EGLDisplay *disp, int max_swap_interval) /* Allow driconf to override applications.*/ if (dri2_dpy->config) - dri2_dpy->config->configQueryi(dri2_dpy->dri_screen, + dri2_dpy->config->configQueryi(dri2_dpy->dri_screen_render_gpu, "vblank_mode", &vblank_mode); switch (vblank_mode) { case DRI_CONF_VBLANK_NEVER: @@ -1000,14 +1000,15 @@ dri2_create_screen(_EGLDisplay *disp) } } - int screen_fd = dri2_dpy->swrast ? -1 : dri2_dpy->fd; - dri2_dpy->dri_screen = dri2_dpy->mesa->createNewScreen(0, screen_fd, - dri2_dpy->loader_extensions, - dri2_dpy->driver_extensions, - &dri2_dpy->driver_configs, - disp); + int screen_fd = dri2_dpy->swrast ? -1 : dri2_dpy->fd_render_gpu; + dri2_dpy->dri_screen_render_gpu = + dri2_dpy->mesa->createNewScreen(0, screen_fd, + dri2_dpy->loader_extensions, + dri2_dpy->driver_extensions, + &dri2_dpy->driver_configs, + disp); - if (dri2_dpy->dri_screen == NULL) { + if (dri2_dpy->dri_screen_render_gpu == NULL) { _eglLog(_EGL_WARNING, "egl: failed to create dri2 screen"); return EGL_FALSE; } @@ -1022,7 +1023,7 @@ dri2_setup_extensions(_EGLDisplay *disp) struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); const __DRIextension **extensions; - extensions = dri2_dpy->core->getExtensions(dri2_dpy->dri_screen); + extensions = dri2_dpy->core->getExtensions(dri2_dpy->dri_screen_render_gpu); if (dri2_dpy->image_driver || dri2_dpy->dri2) { if (!loader_bind_extensions(dri2_dpy, dri2_core_extensions, ARRAY_SIZE(dri2_core_extensions), extensions)) @@ -1143,13 +1144,13 @@ dri2_display_destroy(_EGLDisplay *disp) 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); + dri2_dpy->core->destroyScreen(dri2_dpy->dri_screen_render_gpu); 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); + if (dri2_dpy->fd_render_gpu >= 0) + close(dri2_dpy->fd_render_gpu); if (dri2_dpy->fd_display_gpu >= 0) close(dri2_dpy->fd_display_gpu); @@ -1207,7 +1208,7 @@ dri2_egl_surface_alloc_local_buffer(struct dri2_egl_surface *dri2_surf, if (!dri2_surf->local_buffers[att]) { dri2_surf->local_buffers[att] = - dri2_dpy->dri2->allocateBuffer(dri2_dpy->dri_screen, att, format, + dri2_dpy->dri2->allocateBuffer(dri2_dpy->dri_screen_render_gpu, att, format, dri2_surf->base.Width, dri2_surf->base.Height); } @@ -1222,7 +1223,7 @@ dri2_egl_surface_free_local_buffers(struct dri2_egl_surface *dri2_surf) for (int i = 0; i < ARRAY_SIZE(dri2_surf->local_buffers); i++) { if (dri2_surf->local_buffers[i]) { - dri2_dpy->dri2->releaseBuffer(dri2_dpy->dri_screen, + dri2_dpy->dri2->releaseBuffer(dri2_dpy->dri_screen_render_gpu, dri2_surf->local_buffers[i]); dri2_surf->local_buffers[i] = NULL; } @@ -1460,7 +1461,7 @@ dri2_create_context(_EGLDisplay *disp, _EGLConfig *conf, goto cleanup; dri2_ctx->dri_context = - dri2_dpy->mesa->createContext(dri2_dpy->dri_screen, + dri2_dpy->mesa->createContext(dri2_dpy->dri_screen_render_gpu, api, dri_config, shared, @@ -1511,7 +1512,7 @@ dri2_init_surface(_EGLSurface *surf, _EGLDisplay *disp, EGLint type, dri2_surf->out_fence_fd = -1; dri2_surf->enable_out_fence = false; if (dri2_dpy->fence && - (dri2_dpy->fence->get_capabilities(dri2_dpy->dri_screen) & + (dri2_dpy->fence->get_capabilities(dri2_dpy->dri_screen_render_gpu) & __DRI_FENCE_CAP_NATIVE_FD)) { dri2_surf->enable_out_fence = enable_out_fence; } @@ -1566,9 +1567,9 @@ dri2_surf_update_fence_fd(_EGLContext *ctx, fence = dri2_dpy->fence->create_fence_fd(dri_ctx, -1); if (fence) { - fence_fd = dri2_dpy->fence->get_fence_fd(dri2_dpy->dri_screen, + fence_fd = dri2_dpy->fence->get_fence_fd(dri2_dpy->dri_screen_render_gpu, fence); - dri2_dpy->fence->destroy_fence(dri2_dpy->dri_screen, fence); + dri2_dpy->fence->destroy_fence(dri2_dpy->dri_screen_render_gpu, fence); } dri2_surface_set_out_fence_fd(surf, fence_fd); } @@ -1581,7 +1582,8 @@ dri2_create_drawable(struct dri2_egl_display *dri2_dpy, { if (dri2_dpy->kopper) { dri2_surf->dri_drawable = - dri2_dpy->kopper->createNewDrawable(dri2_dpy->dri_screen, config, loaderPrivate, + dri2_dpy->kopper->createNewDrawable(dri2_dpy->dri_screen_render_gpu, + config, loaderPrivate, dri2_surf->base.Type == EGL_PBUFFER_BIT || dri2_surf->base.Type == EGL_PIXMAP_BIT); } else { @@ -1595,7 +1597,7 @@ dri2_create_drawable(struct dri2_egl_display *dri2_dpy, else return _eglError(EGL_BAD_ALLOC, "no createNewDrawable"); - dri2_surf->dri_drawable = createNewDrawable(dri2_dpy->dri_screen, + dri2_surf->dri_drawable = createNewDrawable(dri2_dpy->dri_screen_render_gpu, config, loaderPrivate); } if (dri2_surf->dri_drawable == NULL) @@ -2434,7 +2436,7 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx, } dri_image = - dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen, + dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen_render_gpu, attrs.Width, attrs.Height, format, @@ -2683,7 +2685,7 @@ dri2_query_dma_buf_formats(_EGLDisplay *disp, EGLint max, dri2_dpy->image->queryDmaBufFormats == NULL) goto fail; - if (!dri2_dpy->image->queryDmaBufFormats(dri2_dpy->dri_screen, max, + if (!dri2_dpy->image->queryDmaBufFormats(dri2_dpy->dri_screen_render_gpu, max, formats, count)) goto fail; @@ -2730,7 +2732,7 @@ dri2_query_dma_buf_modifiers(_EGLDisplay *disp, EGLint format, return EGL_FALSE; } - if (dri2_dpy->image->queryDmaBufModifiers(dri2_dpy->dri_screen, format, + if (dri2_dpy->image->queryDmaBufModifiers(dri2_dpy->dri_screen_render_gpu, format, max, modifiers, (unsigned int *) external_only, count) == false) @@ -2814,7 +2816,7 @@ dri2_create_image_dma_buf(_EGLDisplay *disp, _EGLContext *ctx, modifier = DRM_FORMAT_MOD_INVALID; dri_image = - dri2_dpy->image->createImageFromDmaBufs3(dri2_dpy->dri_screen, + dri2_dpy->image->createImageFromDmaBufs3(dri2_dpy->dri_screen_render_gpu, attrs.Width, attrs.Height, attrs.DMABufFourCC.Value, modifier, fds, num_fds, pitches, offsets, attrs.DMABufYuvColorSpaceHint.Value, @@ -2832,7 +2834,7 @@ dri2_create_image_dma_buf(_EGLDisplay *disp, _EGLContext *ctx, return EGL_NO_IMAGE_KHR; } dri_image = - dri2_dpy->image->createImageFromDmaBufs2(dri2_dpy->dri_screen, + dri2_dpy->image->createImageFromDmaBufs2(dri2_dpy->dri_screen_render_gpu, attrs.Width, attrs.Height, attrs.DMABufFourCC.Value, modifier, fds, num_fds, pitches, offsets, attrs.DMABufYuvColorSpaceHint.Value, @@ -2844,7 +2846,7 @@ dri2_create_image_dma_buf(_EGLDisplay *disp, _EGLContext *ctx, } else { dri_image = - dri2_dpy->image->createImageFromDmaBufs(dri2_dpy->dri_screen, + dri2_dpy->image->createImageFromDmaBufs(dri2_dpy->dri_screen_render_gpu, attrs.Width, attrs.Height, attrs.DMABufFourCC.Value, fds, num_fds, pitches, offsets, attrs.DMABufYuvColorSpaceHint.Value, @@ -2923,7 +2925,7 @@ dri2_create_drm_image_mesa(_EGLDisplay *disp, const EGLint *attr_list) _eglInitImage(&dri2_img->base, disp); dri2_img->dri_image = - dri2_dpy->image->createImage(dri2_dpy->dri_screen, + dri2_dpy->image->createImage(dri2_dpy->dri_screen_render_gpu, attrs.Width, attrs.Height, format, dri_use, dri2_img); if (dri2_img->dri_image == NULL) { @@ -3139,7 +3141,7 @@ dri2_wl_reference_buffer(void *user_data, uint32_t name, int fd, int dri_components = 0; if (fd == -1) - img = dri2_dpy->image->createImageFromNames(dri2_dpy->dri_screen, + img = dri2_dpy->image->createImageFromNames(dri2_dpy->dri_screen_render_gpu, buffer->width, buffer->height, buffer->format, @@ -3148,7 +3150,7 @@ dri2_wl_reference_buffer(void *user_data, uint32_t name, int fd, buffer->offset, NULL); else - img = dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen, + img = dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen_render_gpu, buffer->width, buffer->height, buffer->format, @@ -3199,13 +3201,13 @@ dri2_bind_wayland_display_wl(_EGLDisplay *disp, struct wl_display *wl_dpy) if (dri2_dpy->wl_server_drm) goto fail; - device_name = drmGetRenderDeviceNameFromFd(dri2_dpy->fd); + device_name = drmGetRenderDeviceNameFromFd(dri2_dpy->fd_render_gpu); if (!device_name) device_name = strdup(dri2_dpy->device_name); if (!device_name) goto fail; - if (drmGetCap(dri2_dpy->fd, DRM_CAP_PRIME, &cap) == 0 && + if (drmGetCap(dri2_dpy->fd_render_gpu, DRM_CAP_PRIME, &cap) == 0 && cap == (DRM_PRIME_CAP_IMPORT | DRM_PRIME_CAP_EXPORT) && dri2_dpy->image->base.version >= 7 && dri2_dpy->image->createImageFromFds != NULL) @@ -3302,7 +3304,7 @@ dri2_egl_unref_sync(struct dri2_egl_display *dri2_dpy, } if (dri2_sync->fence) - dri2_dpy->fence->destroy_fence(dri2_dpy->dri_screen, dri2_sync->fence); + dri2_dpy->fence->destroy_fence(dri2_dpy->dri_screen_render_gpu, dri2_sync->fence); free(dri2_sync); } @@ -3342,7 +3344,7 @@ dri2_create_sync(_EGLDisplay *disp, EGLenum type, const EGLAttrib *attrib_list) case EGL_SYNC_CL_EVENT_KHR: dri2_sync->fence = dri2_dpy->fence->get_fence_from_cl_event( - dri2_dpy->dri_screen, + dri2_dpy->dri_screen_render_gpu, dri2_sync->base.CLEvent); /* this can only happen if the cl_event passed in is invalid. */ if (!dri2_sync->fence) { @@ -3451,7 +3453,7 @@ dri2_dup_native_fence_fd(_EGLDisplay *disp, _EGLSync *sync) /* try to retrieve the actual native fence fd.. if rendering is * not flushed this will just return -1, aka NO_NATIVE_FENCE_FD: */ - sync->SyncFd = dri2_dpy->fence->get_fence_fd(dri2_dpy->dri_screen, + sync->SyncFd = dri2_dpy->fence->get_fence_fd(dri2_dpy->dri_screen_render_gpu, dri2_sync->fence); } @@ -3474,7 +3476,7 @@ dri2_set_blob_cache_funcs(_EGLDisplay *disp, EGLGetBlobFuncANDROID get) { struct dri2_egl_display *dri2_dpy = dri2_egl_display_lock(disp); - dri2_dpy->blob->set_cache_funcs(dri2_dpy->dri_screen, set, get); + dri2_dpy->blob->set_cache_funcs(dri2_dpy->dri_screen_render_gpu, set, get); mtx_unlock(&dri2_dpy->lock); } diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h index 31c0d405ca7..d97371c14b1 100644 --- a/src/egl/drivers/dri2/egl_dri2.h +++ b/src/egl/drivers/dri2/egl_dri2.h @@ -222,7 +222,7 @@ struct dri2_egl_display int dri2_major; int dri2_minor; - __DRIscreen *dri_screen; + __DRIscreen *dri_screen_render_gpu; __DRIscreen *dri_screen_display_gpu; bool own_dri_screen; const __DRIconfig **driver_configs; @@ -244,7 +244,7 @@ struct dri2_egl_display const __DRI2interopExtension *interop; const __DRIconfigOptionsExtension *configOptions; const __DRImutableRenderBufferDriverExtension *mutable_render_buffer; - int fd; + int fd_render_gpu; int fd_display_gpu; /* dri2_initialize/dri2_terminate increment/decrement this count, so does @@ -613,7 +613,7 @@ dri2_set_WL_bind_wayland_display(_EGLDisplay *disp) int capabilities; capabilities = - dri2_dpy->image->getCapabilities(dri2_dpy->dri_screen); + dri2_dpy->image->getCapabilities(dri2_dpy->dri_screen_render_gpu); disp->Extensions.WL_bind_wayland_display = (capabilities & __DRI_IMAGE_CAP_GLOBAL_NAMES) != 0; } else { diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index 937a9415f3a..7a2161b8091 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -419,7 +419,7 @@ droid_create_image_from_buffer_info(struct dri2_egl_display *dri2_dpy, if (dri2_dpy->image->base.version >= 15 && dri2_dpy->image->createImageFromDmaBufs2 != NULL) { return dri2_dpy->image->createImageFromDmaBufs2( - dri2_dpy->dri_screen, buf_info->width, buf_info->height, + dri2_dpy->dri_screen_render_gpu, buf_info->width, buf_info->height, buf_info->drm_fourcc, buf_info->modifier, buf_info->fds, buf_info->num_planes, buf_info->pitches, buf_info->offsets, buf_info->yuv_color_space, buf_info->sample_range, @@ -428,7 +428,7 @@ droid_create_image_from_buffer_info(struct dri2_egl_display *dri2_dpy, } return dri2_dpy->image->createImageFromDmaBufs( - dri2_dpy->dri_screen, buf_info->width, buf_info->height, + dri2_dpy->dri_screen_render_gpu, buf_info->width, buf_info->height, buf_info->drm_fourcc, buf_info->fds, buf_info->num_planes, buf_info->pitches, buf_info->offsets, buf_info->yuv_color_space, buf_info->sample_range, buf_info->horizontal_siting, @@ -835,7 +835,7 @@ get_front_bo(struct dri2_egl_surface *dri2_surf, unsigned int format) _eglLog(_EGL_DEBUG, "DRI driver requested unsupported front buffer for window surface"); } else if (dri2_surf->base.Type == EGL_PBUFFER_BIT) { dri2_surf->dri_image_front = - dri2_dpy->image->createImage(dri2_dpy->dri_screen, + dri2_dpy->image->createImage(dri2_dpy->dri_screen_render_gpu, dri2_surf->base.Width, dri2_surf->base.Height, format, @@ -1066,7 +1066,7 @@ droid_create_image_from_name(_EGLDisplay *disp, return NULL; return - dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen, + dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen_render_gpu, buf->width, buf->height, format, @@ -1469,7 +1469,7 @@ droid_load_driver(_EGLDisplay *disp, bool swrast) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); - dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd); + dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd_render_gpu); if (dri2_dpy->driver_name == NULL) return false; @@ -1574,11 +1574,11 @@ droid_open_device(_EGLDisplay *disp, bool swrast) return EGL_FALSE; } - dri2_dpy->fd = os_dupfd_cloexec(fd); - if (dri2_dpy->fd < 0) + dri2_dpy->fd_render_gpu = os_dupfd_cloexec(fd); + if (dri2_dpy->fd_render_gpu < 0) return EGL_FALSE; - if (drmGetNodeTypeFromFd(dri2_dpy->fd) == DRM_NODE_RENDER) + if (drmGetNodeTypeFromFd(dri2_dpy->fd_render_gpu) == DRM_NODE_RENDER) return EGL_FALSE; return droid_probe_device(disp, swrast); @@ -1614,8 +1614,8 @@ droid_open_device(_EGLDisplay *disp, bool swrast) if (!(device->available_nodes & (1 << node_type))) continue; - dri2_dpy->fd = loader_open_device(device->nodes[node_type]); - if (dri2_dpy->fd < 0) { + dri2_dpy->fd_render_gpu = loader_open_device(device->nodes[node_type]); + if (dri2_dpy->fd_render_gpu < 0) { _eglLog(_EGL_WARNING, "%s() Failed to open DRM device %s", __func__, device->nodes[node_type]); continue; @@ -1625,18 +1625,18 @@ droid_open_device(_EGLDisplay *disp, bool swrast) * Otherwise we fall-back the first device that is supported. */ if (vendor_name) { - if (droid_filter_device(disp, dri2_dpy->fd, vendor_name)) { + if (droid_filter_device(disp, dri2_dpy->fd_render_gpu, vendor_name)) { /* Device does not match - try next device */ - close(dri2_dpy->fd); - dri2_dpy->fd = -1; + close(dri2_dpy->fd_render_gpu); + dri2_dpy->fd_render_gpu = -1; continue; } /* If the requested device matches - use it. Regardless if * init fails, do not fall-back to any other device. */ if (!droid_probe_device(disp, false)) { - close(dri2_dpy->fd); - dri2_dpy->fd = -1; + close(dri2_dpy->fd_render_gpu); + dri2_dpy->fd_render_gpu = -1; } break; @@ -1645,12 +1645,12 @@ droid_open_device(_EGLDisplay *disp, bool swrast) break; /* No explicit request - attempt the next device */ - close(dri2_dpy->fd); - dri2_dpy->fd = -1; + close(dri2_dpy->fd_render_gpu); + dri2_dpy->fd_render_gpu = -1; } drmFreeDevices(devices, num_devices); - if (dri2_dpy->fd < 0) { + if (dri2_dpy->fd_render_gpu < 0) { _eglLog(_EGL_WARNING, "Failed to open %s DRM device", vendor_name ? "desired": "any"); return EGL_FALSE; @@ -1675,7 +1675,7 @@ dri2_initialize_android(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; dri2_dpy->fd_display_gpu = -1; ret = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, (const hw_module_t **)&dri2_dpy->gralloc); @@ -1692,7 +1692,7 @@ dri2_initialize_android(_EGLDisplay *disp) goto cleanup; } - dev = _eglAddDevice(dri2_dpy->fd, false); + dev = _eglAddDevice(dri2_dpy->fd_render_gpu, false); if (!dev) { err = "DRI2: failed to find EGLDevice"; goto cleanup; diff --git a/src/egl/drivers/dri2/platform_device.c b/src/egl/drivers/dri2/platform_device.c index 1181fb08053..d107697ae51 100644 --- a/src/egl/drivers/dri2/platform_device.c +++ b/src/egl/drivers/dri2/platform_device.c @@ -49,7 +49,7 @@ device_alloc_image(struct dri2_egl_display *dri2_dpy, struct dri2_egl_surface *dri2_surf) { return dri2_dpy->image->createImage( - dri2_dpy->dri_screen, + dri2_dpy->dri_screen_render_gpu, dri2_surf->base.Width, dri2_surf->base.Height, dri2_surf->visual, @@ -279,11 +279,11 @@ device_probe_device(_EGLDisplay *disp) if (request_software) _eglLog(_EGL_WARNING, "Not allowed to force software rendering when " "API explicitly selects a hardware device."); - dri2_dpy->fd = device_get_fd(disp, disp->Device); - if (dri2_dpy->fd < 0) + dri2_dpy->fd_render_gpu = device_get_fd(disp, disp->Device); + if (dri2_dpy->fd_render_gpu < 0) return false; - dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd); + dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd_render_gpu); if (!dri2_dpy->driver_name) goto err_name; @@ -310,8 +310,8 @@ err_load: dri2_dpy->driver_name = NULL; err_name: - close(dri2_dpy->fd); - dri2_dpy->fd = -1; + close(dri2_dpy->fd_render_gpu); + dri2_dpy->fd_render_gpu = -1; return false; } @@ -321,7 +321,7 @@ device_probe_device_sw(_EGLDisplay *disp) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; dri2_dpy->driver_name = strdup(disp->Options.Zink ? "zink" : "swrast"); if (!dri2_dpy->driver_name) return false; @@ -351,7 +351,7 @@ dri2_initialize_device(_EGLDisplay *disp) /* Extension requires a PlatformDisplay - the EGLDevice. */ dev = disp->PlatformDisplay; - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; dri2_dpy->fd_display_gpu = -1; disp->Device = dev; disp->DriverData = (void *) dri2_dpy; @@ -379,7 +379,7 @@ dri2_initialize_device(_EGLDisplay *disp) dri2_setup_screen(disp); #ifdef HAVE_WAYLAND_PLATFORM - dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd); + dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd_render_gpu); #endif dri2_set_WL_bind_wayland_display(disp); diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index ce906e97714..e506288bba1 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -507,7 +507,7 @@ dri2_drm_authenticate(_EGLDisplay *disp, uint32_t id) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); - return drmAuthMagic(dri2_dpy->fd, id); + return drmAuthMagic(dri2_dpy->fd_render_gpu, id); } static void @@ -691,7 +691,7 @@ dri2_initialize_drm(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; dri2_dpy->fd_display_gpu = -1; disp->DriverData = (void *) dri2_dpy; @@ -700,16 +700,16 @@ dri2_initialize_drm(_EGLDisplay *disp) char buf[64]; int n = snprintf(buf, sizeof(buf), DRM_DEV_NAME, DRM_DIR_NAME, 0); if (n != -1 && n < sizeof(buf)) - dri2_dpy->fd = loader_open_device(buf); - gbm = gbm_create_device(dri2_dpy->fd); + dri2_dpy->fd_render_gpu = loader_open_device(buf); + gbm = gbm_create_device(dri2_dpy->fd_render_gpu); if (gbm == NULL) { err = "DRI2: failed to create gbm device"; goto cleanup; } dri2_dpy->own_device = true; } else { - dri2_dpy->fd = os_dupfd_cloexec(gbm_device_get_fd(gbm)); - if (dri2_dpy->fd < 0) { + dri2_dpy->fd_render_gpu = os_dupfd_cloexec(gbm_device_get_fd(gbm)); + if (dri2_dpy->fd_render_gpu < 0) { err = "DRI2: failed to fcntl() existing gbm device"; goto cleanup; } @@ -721,7 +721,7 @@ dri2_initialize_drm(_EGLDisplay *disp) goto cleanup; } - dev = _eglAddDevice(dri2_dpy->fd, dri2_dpy->gbm_dri->software); + dev = _eglAddDevice(dri2_dpy->fd_render_gpu, dri2_dpy->gbm_dri->software); if (!dev) { err = "DRI2: failed to find EGLDevice"; goto cleanup; @@ -730,7 +730,7 @@ dri2_initialize_drm(_EGLDisplay *disp) disp->Device = dev; dri2_dpy->driver_name = strdup(dri2_dpy->gbm_dri->driver_name); - dri2_dpy->is_render_node = drmGetNodeTypeFromFd(dri2_dpy->fd) == DRM_NODE_RENDER; + dri2_dpy->is_render_node = drmGetNodeTypeFromFd(dri2_dpy->fd_render_gpu) == DRM_NODE_RENDER; /* render nodes cannot use Gem names, and thus do not support * the __DRI_DRI2_LOADER extension */ @@ -746,7 +746,7 @@ dri2_initialize_drm(_EGLDisplay *disp) } } - dri2_dpy->dri_screen = dri2_dpy->gbm_dri->screen; + dri2_dpy->dri_screen_render_gpu = dri2_dpy->gbm_dri->screen; dri2_dpy->core = dri2_dpy->gbm_dri->core; dri2_dpy->dri2 = dri2_dpy->gbm_dri->dri2; dri2_dpy->swrast = dri2_dpy->gbm_dri->swrast; @@ -786,7 +786,7 @@ dri2_initialize_drm(_EGLDisplay *disp) disp->Extensions.EXT_buffer_age = EGL_TRUE; #ifdef HAVE_WAYLAND_PLATFORM - dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd); + dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd_render_gpu); #endif dri2_set_WL_bind_wayland_display(disp); diff --git a/src/egl/drivers/dri2/platform_surfaceless.c b/src/egl/drivers/dri2/platform_surfaceless.c index 82d44e3cd22..8f59aa9290c 100644 --- a/src/egl/drivers/dri2/platform_surfaceless.c +++ b/src/egl/drivers/dri2/platform_surfaceless.c @@ -42,7 +42,7 @@ surfaceless_alloc_image(struct dri2_egl_display *dri2_dpy, struct dri2_egl_surface *dri2_surf) { return dri2_dpy->image->createImage( - dri2_dpy->dri_screen, + dri2_dpy->dri_screen_render_gpu, dri2_surf->base.Width, dri2_surf->base.Height, dri2_surf->visual, @@ -250,18 +250,18 @@ surfaceless_probe_device(_EGLDisplay *disp, bool swrast) if (!(device->available_nodes & (1 << node_type))) continue; - dri2_dpy->fd = loader_open_device(device->nodes[node_type]); - if (dri2_dpy->fd < 0) + dri2_dpy->fd_render_gpu = loader_open_device(device->nodes[node_type]); + if (dri2_dpy->fd_render_gpu < 0) continue; - disp->Device = _eglAddDevice(dri2_dpy->fd, swrast); + disp->Device = _eglAddDevice(dri2_dpy->fd_render_gpu, swrast); if (!disp->Device) { - close(dri2_dpy->fd); - dri2_dpy->fd = -1; + close(dri2_dpy->fd_render_gpu); + dri2_dpy->fd_render_gpu = -1; continue; } - char *driver_name = loader_get_driver_for_fd(dri2_dpy->fd); + char *driver_name = loader_get_driver_for_fd(dri2_dpy->fd_render_gpu); if (swrast) { /* Use kms swrast only with vgem / virtio_gpu. * virtio-gpu fallbacks to software rendering when 3D features @@ -283,8 +283,8 @@ surfaceless_probe_device(_EGLDisplay *disp, bool swrast) free(dri2_dpy->driver_name); dri2_dpy->driver_name = NULL; - close(dri2_dpy->fd); - dri2_dpy->fd = -1; + close(dri2_dpy->fd_render_gpu); + dri2_dpy->fd_render_gpu = -1; } drmFreeDevices(devices, num_devices); @@ -304,8 +304,8 @@ surfaceless_probe_device_sw(_EGLDisplay *disp) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); - dri2_dpy->fd = -1; - disp->Device = _eglAddDevice(dri2_dpy->fd, true); + dri2_dpy->fd_render_gpu = -1; + disp->Device = _eglAddDevice(dri2_dpy->fd_render_gpu, true); assert(disp->Device); dri2_dpy->driver_name = strdup(disp->Options.Zink ? "zink" : "swrast"); @@ -333,7 +333,7 @@ dri2_initialize_surfaceless(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; dri2_dpy->fd_display_gpu = -1; disp->DriverData = (void *) dri2_dpy; @@ -363,7 +363,7 @@ dri2_initialize_surfaceless(_EGLDisplay *disp) dri2_setup_screen(disp); #ifdef HAVE_WAYLAND_PLATFORM - dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd); + dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd_render_gpu); #endif dri2_set_WL_bind_wayland_display(disp); diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 7614389d3e4..30699836ac0 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -934,7 +934,7 @@ create_dri_image_from_dmabuf_feedback(struct dri2_egl_surface *dri2_surf, flags |= __DRI_IMAGE_USE_SCANOUT; dri2_surf->back->dri_image = - loader_dri_create_image(dri2_dpy->dri_screen, dri2_dpy->image, + loader_dri_create_image(dri2_dpy->dri_screen_render_gpu, dri2_dpy->image, dri2_surf->base.Width, dri2_surf->base.Height, dri_image_format, @@ -972,7 +972,7 @@ create_dri_image(struct dri2_egl_surface *dri2_surf, * then fall back to the old createImage, and hope it allocates an image * which is acceptable to the winsys. */ dri2_surf->back->dri_image = - loader_dri_create_image(dri2_dpy->dri_screen, dri2_dpy->image, + loader_dri_create_image(dri2_dpy->dri_screen_render_gpu, dri2_dpy->image, dri2_surf->base.Width, dri2_surf->base.Height, dri_image_format, @@ -1110,7 +1110,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf) * need to make it visible to render GPU */ dri2_surf->back->linear_copy = - dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen, + dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen_render_gpu, dri2_surf->base.Width, dri2_surf->base.Height, loader_image_format_to_fourcc( @@ -1129,7 +1129,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf) if (!dri2_surf->back->linear_copy) { dri2_surf->back->linear_copy = - loader_dri_create_image(dri2_dpy->dri_screen, dri2_dpy->image, + loader_dri_create_image(dri2_dpy->dri_screen_render_gpu, dri2_dpy->image, dri2_surf->base.Width, dri2_surf->base.Height, linear_dri_image_format, @@ -1776,8 +1776,8 @@ drm_handle_device(void *data, struct wl_drm *drm, const char *device) if (!dri2_dpy->device_name) return; - dri2_dpy->fd = loader_open_device(dri2_dpy->device_name); - if (dri2_dpy->fd == -1) { + dri2_dpy->fd_render_gpu = loader_open_device(dri2_dpy->device_name); + if (dri2_dpy->fd_render_gpu == -1) { _eglLog(_EGL_WARNING, "wayland-egl: could not open %s (%s)", dri2_dpy->device_name, strerror(errno)); free(dri2_dpy->device_name); @@ -1785,12 +1785,12 @@ drm_handle_device(void *data, struct wl_drm *drm, const char *device) return; } - if (drmGetNodeTypeFromFd(dri2_dpy->fd) == DRM_NODE_RENDER) { + if (drmGetNodeTypeFromFd(dri2_dpy->fd_render_gpu) == DRM_NODE_RENDER) { dri2_dpy->authenticated = true; } else { - if (drmGetMagic(dri2_dpy->fd, &magic)) { - close(dri2_dpy->fd); - dri2_dpy->fd = -1; + if (drmGetMagic(dri2_dpy->fd_render_gpu, &magic)) { + close(dri2_dpy->fd_render_gpu); + dri2_dpy->fd_render_gpu = -1; free(dri2_dpy->device_name); dri2_dpy->device_name = NULL; _eglLog(_EGL_WARNING, "wayland-egl: drmGetMagic failed"); @@ -1915,7 +1915,7 @@ default_dmabuf_feedback_main_device(void *data, } dri2_dpy->device_name = node; - dri2_dpy->fd = fd; + dri2_dpy->fd_render_gpu = fd; dri2_dpy->authenticated = true; } @@ -2156,7 +2156,7 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; dri2_dpy->fd_display_gpu = -1; disp->DriverData = (void *) dri2_dpy; @@ -2213,7 +2213,7 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) /* We couldn't retrieve a render node from the dma-buf feedback (or the * feedback was not advertised at all), so we must fallback to wl_drm. */ - if (dri2_dpy->fd == -1) { + if (dri2_dpy->fd_render_gpu == -1) { /* wl_drm not advertised by compositor, so can't continue */ if (dri2_dpy->wl_drm_name == 0) goto cleanup; @@ -2221,7 +2221,7 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) if (dri2_dpy->wl_drm == NULL) goto cleanup; - if (roundtrip(dri2_dpy) < 0 || dri2_dpy->fd == -1) + if (roundtrip(dri2_dpy) < 0 || dri2_dpy->fd_render_gpu == -1) goto cleanup; if (!dri2_dpy->authenticated && @@ -2229,15 +2229,15 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) goto cleanup; } - dri2_dpy->fd_display_gpu = fcntl(dri2_dpy->fd, F_DUPFD_CLOEXEC, 3); - dri2_dpy->fd = loader_get_user_preferred_fd(dri2_dpy->fd, - &dri2_dpy->is_different_gpu); + dri2_dpy->fd_display_gpu = fcntl(dri2_dpy->fd_render_gpu, F_DUPFD_CLOEXEC, 3); + dri2_dpy->fd_render_gpu = loader_get_user_preferred_fd(dri2_dpy->fd_render_gpu, + &dri2_dpy->is_different_gpu); if (!dri2_dpy->is_different_gpu) { close(dri2_dpy->fd_display_gpu); dri2_dpy->fd_display_gpu = -1; } - dev = _eglAddDevice(dri2_dpy->fd, false); + dev = _eglAddDevice(dri2_dpy->fd_render_gpu, false); if (!dev) { _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); goto cleanup; @@ -2247,7 +2247,7 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) if (dri2_dpy->is_different_gpu) { free(dri2_dpy->device_name); - dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd); + dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd_render_gpu); if (!dri2_dpy->device_name) { _eglError(EGL_BAD_ALLOC, "wayland-egl: failed to get device name " "for requested GPU"); @@ -2259,9 +2259,9 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) * will return a render-node when the requested gpu is different * to the server, but also if the client asks for the same gpu than * the server by requesting its pci-id */ - dri2_dpy->is_render_node = drmGetNodeTypeFromFd(dri2_dpy->fd) == DRM_NODE_RENDER; + dri2_dpy->is_render_node = drmGetNodeTypeFromFd(dri2_dpy->fd_render_gpu) == DRM_NODE_RENDER; - dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd); + dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd_render_gpu); if (dri2_dpy->driver_name == NULL) { _eglError(EGL_BAD_ALLOC, "DRI2: failed to get driver name"); goto cleanup; @@ -2769,7 +2769,7 @@ dri2_initialize_wayland_swrast(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; disp->DriverData = (void *) dri2_dpy; if (dri2_wl_formats_init(&dri2_dpy->formats) < 0) @@ -2784,7 +2784,7 @@ dri2_initialize_wayland_swrast(_EGLDisplay *disp) dri2_dpy->wl_dpy = disp->PlatformDisplay; } - dev = _eglAddDevice(dri2_dpy->fd, true); + dev = _eglAddDevice(dri2_dpy->fd_render_gpu, true); if (!dev) { _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); goto cleanup; diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index 93a7d6a3c70..f9b82557e08 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -634,7 +634,7 @@ dri2_x11_local_authenticate(struct dri2_egl_display *dri2_dpy) #ifdef HAVE_LIBDRM drm_magic_t magic; - if (drmGetMagic(dri2_dpy->fd, &magic)) { + if (drmGetMagic(dri2_dpy->fd_render_gpu, &magic)) { _eglLog(_EGL_WARNING, "DRI2: failed to get drm magic"); return EGL_FALSE; } @@ -716,8 +716,8 @@ dri2_x11_connect(struct dri2_egl_display *dri2_dpy) device_name = xcb_dri2_connect_device_name (connect); - dri2_dpy->fd = loader_open_device(device_name); - if (dri2_dpy->fd == -1) { + dri2_dpy->fd_render_gpu = loader_open_device(device_name); + if (dri2_dpy->fd_render_gpu == -1) { _eglLog(_EGL_WARNING, "DRI2: could not open %s (%s)", device_name, strerror(errno)); free(connect); @@ -725,7 +725,7 @@ dri2_x11_connect(struct dri2_egl_display *dri2_dpy) } if (!dri2_x11_local_authenticate(dri2_dpy)) { - close(dri2_dpy->fd); + close(dri2_dpy->fd_render_gpu); free(connect); return EGL_FALSE; } @@ -735,7 +735,7 @@ dri2_x11_connect(struct dri2_egl_display *dri2_dpy) /* If Mesa knows about the appropriate driver for this fd, then trust it. * Otherwise, default to the server's value. */ - loader_driver_name = loader_get_driver_for_fd(dri2_dpy->fd); + loader_driver_name = loader_get_driver_for_fd(dri2_dpy->fd_render_gpu); if (loader_driver_name) { dri2_dpy->driver_name = loader_driver_name; } else { @@ -745,7 +745,7 @@ dri2_x11_connect(struct dri2_egl_display *dri2_dpy) } if (dri2_dpy->driver_name == NULL) { - close(dri2_dpy->fd); + close(dri2_dpy->fd_render_gpu); free(connect); return EGL_FALSE; } @@ -1142,7 +1142,7 @@ dri2_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx, stride = buffers[0].pitch / buffers[0].cpp; dri2_img->dri_image = - dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen, + dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen_render_gpu, buffers_reply->width, buffers_reply->height, format, @@ -1451,12 +1451,12 @@ dri2_initialize_x11_swrast(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; dri2_dpy->fd_display_gpu = -1; if (!dri2_get_xcb_connection(disp, dri2_dpy)) goto cleanup; - dev = _eglAddDevice(dri2_dpy->fd, true); + dev = _eglAddDevice(dri2_dpy->fd_render_gpu, true); if (!dev) { _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); goto cleanup; @@ -1541,7 +1541,7 @@ dri2_initialize_x11_dri3(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; dri2_dpy->fd_display_gpu = -1; if (!dri2_get_xcb_connection(disp, dri2_dpy)) goto cleanup; @@ -1549,7 +1549,7 @@ dri2_initialize_x11_dri3(_EGLDisplay *disp) if (!dri3_x11_connect(dri2_dpy)) goto cleanup; - dev = _eglAddDevice(dri2_dpy->fd, false); + dev = _eglAddDevice(dri2_dpy->fd_render_gpu, false); if (!dev) { _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); goto cleanup; @@ -1651,7 +1651,7 @@ dri2_initialize_x11_dri2(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd = -1; + dri2_dpy->fd_render_gpu = -1; dri2_dpy->fd_display_gpu = -1; if (!dri2_get_xcb_connection(disp, dri2_dpy)) goto cleanup; @@ -1659,7 +1659,7 @@ dri2_initialize_x11_dri2(_EGLDisplay *disp) if (!dri2_x11_connect(dri2_dpy)) goto cleanup; - dev = _eglAddDevice(dri2_dpy->fd, false); + dev = _eglAddDevice(dri2_dpy->fd_render_gpu, false); if (!dev) { _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); goto cleanup; diff --git a/src/egl/drivers/dri2/platform_x11_dri3.c b/src/egl/drivers/dri2/platform_x11_dri3.c index 04d0fe8285e..51483318aa7 100644 --- a/src/egl/drivers/dri2/platform_x11_dri3.c +++ b/src/egl/drivers/dri2/platform_x11_dri3.c @@ -84,7 +84,7 @@ egl_dri3_get_dri_screen(void) if (!ctx) return NULL; dri2_ctx = dri2_egl_context(ctx); - return dri2_egl_display(dri2_ctx->base.Resource.Display)->dri_screen; + return dri2_egl_display(dri2_ctx->base.Resource.Display)->dri_screen_render_gpu; } static void @@ -188,7 +188,7 @@ dri3_create_surface(_EGLDisplay *disp, EGLint type, _EGLConfig *conf, if (loader_dri3_drawable_init(dri2_dpy->conn, drawable, egl_to_loader_dri3_drawable_type(type), - dri2_dpy->dri_screen, + dri2_dpy->dri_screen_render_gpu, dri2_dpy->dri_screen_display_gpu, dri2_dpy->is_different_gpu, dri2_dpy->multibuffers_available, @@ -326,7 +326,7 @@ dri3_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx, dri2_img->dri_image = loader_dri3_create_image(dri2_dpy->conn, bp_reply, format, - dri2_dpy->dri_screen, + dri2_dpy->dri_screen_render_gpu, dri2_dpy->image, dri2_img); @@ -378,7 +378,7 @@ dri3_create_image_khr_pixmap_from_buffers(_EGLDisplay *disp, _EGLContext *ctx, dri2_img->dri_image = loader_dri3_create_image_from_buffers(dri2_dpy->conn, bp_reply, format, - dri2_dpy->dri_screen, + dri2_dpy->dri_screen_render_gpu, dri2_dpy->image, dri2_img); free(bp_reply); @@ -511,7 +511,7 @@ dri3_close_screen_notify(_EGLDisplay *disp) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); - loader_dri3_close_screen(dri2_dpy->dri_screen); + loader_dri3_close_screen(dri2_dpy->dri_screen_render_gpu); } struct dri2_egl_display_vtbl dri3_x11_display_vtbl = { @@ -624,8 +624,8 @@ dri3_x11_connect(struct dri2_egl_display *dri2_dpy) } free(xfixes_query); - dri2_dpy->fd = loader_dri3_open(dri2_dpy->conn, dri2_dpy->screen->root, 0); - if (dri2_dpy->fd < 0) { + dri2_dpy->fd_render_gpu = loader_dri3_open(dri2_dpy->conn, dri2_dpy->screen->root, 0); + if (dri2_dpy->fd_render_gpu < 0) { int conn_error = xcb_connection_has_error(dri2_dpy->conn); _eglLog(_EGL_WARNING, "DRI3: Screen seems not DRI3 capable"); @@ -635,17 +635,18 @@ dri3_x11_connect(struct dri2_egl_display *dri2_dpy) return EGL_FALSE; } - dri2_dpy->fd_display_gpu = fcntl(dri2_dpy->fd, F_DUPFD_CLOEXEC, 3); - dri2_dpy->fd = loader_get_user_preferred_fd(dri2_dpy->fd, &dri2_dpy->is_different_gpu); + dri2_dpy->fd_display_gpu = fcntl(dri2_dpy->fd_render_gpu, F_DUPFD_CLOEXEC, 3); + dri2_dpy->fd_render_gpu = loader_get_user_preferred_fd(dri2_dpy->fd_render_gpu, + &dri2_dpy->is_different_gpu); if (!dri2_dpy->is_different_gpu) { close(dri2_dpy->fd_display_gpu); dri2_dpy->fd_display_gpu = -1; } - dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd); + dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd_render_gpu); if (!dri2_dpy->driver_name) { _eglLog(_EGL_WARNING, "DRI3: No driver found"); - close(dri2_dpy->fd); + close(dri2_dpy->fd_render_gpu); return EGL_FALSE; } @@ -653,7 +654,7 @@ dri3_x11_connect(struct dri2_egl_display *dri2_dpy) /* Only try to get a render device name since dri3 doesn't provide a * mechanism for authenticating client opened device node fds. If this * fails then don't advertise the extension. */ - dri2_dpy->device_name = drmGetRenderDeviceNameFromFd(dri2_dpy->fd); + dri2_dpy->device_name = drmGetRenderDeviceNameFromFd(dri2_dpy->fd_render_gpu); #endif return EGL_TRUE; |