render/egl: fail to create wlr_egl on software renderer
The creation of `wlr_egl` will fail is the device extension EGL_MESA_device_software is defined. The creation process is allowed to continue only if the environment variable `WLR_RENDERER_ALLOW_SOFTWARE` is defined to the value 1.
This commit is contained in:
		
							parent
							
								
									5a2ef794dc
								
							
						
					
					
						commit
						6becc69ec9
					
				|  | @ -39,6 +39,11 @@ wlroots reads these environment variables | |||
| 
 | ||||
| * *WLR_X11_OUTPUTS*: when using the X11 backend specifies the number of outputs | ||||
| 
 | ||||
| ## gles2 renderer | ||||
| 
 | ||||
| * *WLR_RENDERER_ALLOW_SOFTWARE*: allows the gles2 renderer to use software | ||||
|   rendering | ||||
| 
 | ||||
| # Generic | ||||
| 
 | ||||
| * *DISPLAY*: if set probe X11 backend in `wlr_backend_autocreate` | ||||
|  |  | |||
							
								
								
									
										12
									
								
								render/egl.c
								
								
								
								
							
							
						
						
									
										12
									
								
								render/egl.c
								
								
								
								
							|  | @ -272,6 +272,18 @@ struct wlr_egl *wlr_egl_create(EGLenum platform, void *remote_display, | |||
| 			goto error; | ||||
| 		} | ||||
| 
 | ||||
| 		if (check_egl_ext(device_exts_str, "EGL_MESA_device_software")) { | ||||
| 			const char *allow_software = getenv("WLR_RENDERER_ALLOW_SOFTWARE"); | ||||
| 			if (strcmp(allow_software, "1") == 0) { | ||||
| 				wlr_log(WLR_INFO, "Using software rendering"); | ||||
| 			} else { | ||||
| 				wlr_log(WLR_ERROR, "Software rendering detected, please use " | ||||
| 						"the WLR_RENDERER_ALLOW_SOFTWARE environment variable " | ||||
| 						"to proceed"); | ||||
| 				goto error; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		egl->exts.device_drm_ext = | ||||
| 			check_egl_ext(device_exts_str, "EGL_EXT_device_drm"); | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue