xref: /aosp_15_r20/external/mesa3d/src/gallium/winsys/freedreno/drm/freedreno_drm_winsys.c (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /*
2  * Copyright © 2012 Rob Clark <[email protected]>
3  * SPDX-License-Identifier: MIT
4  *
5  * Authors:
6  *    Rob Clark <[email protected]>
7  */
8 
9 #include "util/u_inlines.h"
10 #include "util/u_screen.h"
11 
12 #include "freedreno_drm_public.h"
13 
14 #include "freedreno/freedreno_screen.h"
15 
16 #include "virtio/virtio-gpu/drm_hw.h"
17 
18 struct pipe_screen *
fd_drm_screen_create_renderonly(int fd,struct renderonly * ro,const struct pipe_screen_config * config)19 fd_drm_screen_create_renderonly(int fd, struct renderonly *ro,
20 		const struct pipe_screen_config *config)
21 {
22 	return u_pipe_screen_lookup_or_create(fd, config, ro, fd_screen_create);
23 }
24 
25 /**
26  * Check if the native-context type exposed by virtgpu is one we
27  * support, and that we support the underlying device.
28  */
29 bool
fd_drm_probe_nctx(int fd,const struct virgl_renderer_capset_drm * caps)30 fd_drm_probe_nctx(int fd, const struct virgl_renderer_capset_drm *caps)
31 {
32 	if (caps->context_type != VIRTGPU_DRM_CONTEXT_MSM)
33 		return false;
34 
35 	struct fd_dev_id dev_id = {
36 		.gpu_id = caps->u.msm.gpu_id,
37 		.chip_id = caps->u.msm.chip_id,
38 	};
39 	const struct fd_dev_info info = fd_dev_info(&dev_id);
40 
41 	return info.chip != 0;
42 }
43