mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	backend/drm: remove wlr_drm_crtc.legacy_crtc
We only need it for one thing: gamma size. Moreover, some bits in the drmModeCrtc will become out-of-date, for instance the current mode, so let's avoid caching the whole struct and only keep what we know won't change.
This commit is contained in:
		
							parent
							
								
									8b18352318
								
							
						
					
					
						commit
						8b8921d57b
					
				
					 2 changed files with 11 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -267,7 +267,15 @@ bool init_drm_resources(struct wlr_drm_backend *drm) {
 | 
			
		|||
	for (size_t i = 0; i < drm->num_crtcs; ++i) {
 | 
			
		||||
		struct wlr_drm_crtc *crtc = &drm->crtcs[i];
 | 
			
		||||
		crtc->id = res->crtcs[i];
 | 
			
		||||
		crtc->legacy_crtc = drmModeGetCrtc(drm->fd, crtc->id);
 | 
			
		||||
 | 
			
		||||
		drmModeCrtc *drm_crtc = drmModeGetCrtc(drm->fd, crtc->id);
 | 
			
		||||
		if (drm_crtc == NULL) {
 | 
			
		||||
			wlr_log_errno(WLR_ERROR, "drmModeGetCrtc failed");
 | 
			
		||||
			goto error_res;
 | 
			
		||||
		}
 | 
			
		||||
		crtc->legacy_gamma_size = drm_crtc->gamma_size;
 | 
			
		||||
		drmModeFreeCrtc(drm_crtc);
 | 
			
		||||
 | 
			
		||||
		get_drm_crtc_props(drm->fd, crtc->id, &crtc->props);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -294,8 +302,6 @@ void finish_drm_resources(struct wlr_drm_backend *drm) {
 | 
			
		|||
	for (size_t i = 0; i < drm->num_crtcs; ++i) {
 | 
			
		||||
		struct wlr_drm_crtc *crtc = &drm->crtcs[i];
 | 
			
		||||
 | 
			
		||||
		drmModeFreeCrtc(crtc->legacy_crtc);
 | 
			
		||||
 | 
			
		||||
		if (crtc->mode_id) {
 | 
			
		||||
			drmModeDestroyPropertyBlob(drm->fd, crtc->mode_id);
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -669,7 +675,7 @@ static bool drm_connector_commit(struct wlr_output *output,
 | 
			
		|||
size_t drm_crtc_get_gamma_lut_size(struct wlr_drm_backend *drm,
 | 
			
		||||
		struct wlr_drm_crtc *crtc) {
 | 
			
		||||
	if (crtc->props.gamma_lut_size == 0 || drm->iface == &legacy_iface) {
 | 
			
		||||
		return (size_t)crtc->legacy_crtc->gamma_size;
 | 
			
		||||
		return (size_t)crtc->legacy_gamma_size;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	uint64_t gamma_lut_size;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ struct wlr_drm_crtc {
 | 
			
		|||
	uint32_t gamma_lut;
 | 
			
		||||
 | 
			
		||||
	// Legacy only
 | 
			
		||||
	drmModeCrtc *legacy_crtc;
 | 
			
		||||
	int legacy_gamma_size;
 | 
			
		||||
 | 
			
		||||
	struct wlr_drm_plane *primary;
 | 
			
		||||
	struct wlr_drm_plane *cursor;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue