mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	backend/drm: remove wlr_drm_surface.{width,height}
This information is stored in wlr_swapchain, no need to duplicate it.
This commit is contained in:
		
							parent
							
								
									e59f4d4ffa
								
							
						
					
					
						commit
						f91f38b79a
					
				
					 2 changed files with 25 additions and 33 deletions
				
			
		| 
						 | 
					@ -48,31 +48,6 @@ void finish_drm_renderer(struct wlr_drm_renderer *renderer) {
 | 
				
			||||||
	wlr_renderer_destroy(renderer->wlr_rend);
 | 
						wlr_renderer_destroy(renderer->wlr_rend);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool init_drm_surface(struct wlr_drm_surface *surf,
 | 
					 | 
				
			||||||
		struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height,
 | 
					 | 
				
			||||||
		const struct wlr_drm_format *drm_format) {
 | 
					 | 
				
			||||||
	if (surf->width == width && surf->height == height) {
 | 
					 | 
				
			||||||
		return true;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	surf->renderer = renderer;
 | 
					 | 
				
			||||||
	surf->width = width;
 | 
					 | 
				
			||||||
	surf->height = height;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	wlr_swapchain_destroy(surf->swapchain);
 | 
					 | 
				
			||||||
	surf->swapchain = NULL;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	surf->swapchain = wlr_swapchain_create(renderer->allocator, width, height,
 | 
					 | 
				
			||||||
			drm_format);
 | 
					 | 
				
			||||||
	if (surf->swapchain == NULL) {
 | 
					 | 
				
			||||||
		wlr_log(WLR_ERROR, "Failed to create swapchain");
 | 
					 | 
				
			||||||
		memset(surf, 0, sizeof(*surf));
 | 
					 | 
				
			||||||
		return false;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return true;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void finish_drm_surface(struct wlr_drm_surface *surf) {
 | 
					static void finish_drm_surface(struct wlr_drm_surface *surf) {
 | 
				
			||||||
	if (!surf || !surf->renderer) {
 | 
						if (!surf || !surf->renderer) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
| 
						 | 
					@ -83,12 +58,33 @@ static void finish_drm_surface(struct wlr_drm_surface *surf) {
 | 
				
			||||||
	memset(surf, 0, sizeof(*surf));
 | 
						memset(surf, 0, sizeof(*surf));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool init_drm_surface(struct wlr_drm_surface *surf,
 | 
				
			||||||
 | 
							struct wlr_drm_renderer *renderer, int width, int height,
 | 
				
			||||||
 | 
							const struct wlr_drm_format *drm_format) {
 | 
				
			||||||
 | 
						if (surf->swapchain->width == width && surf->swapchain->height == height) {
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						finish_drm_surface(surf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						surf->swapchain = wlr_swapchain_create(renderer->allocator, width, height,
 | 
				
			||||||
 | 
								drm_format);
 | 
				
			||||||
 | 
						if (surf->swapchain == NULL) {
 | 
				
			||||||
 | 
							wlr_log(WLR_ERROR, "Failed to create swapchain");
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						surf->renderer = renderer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_buffer *drm_surface_blit(struct wlr_drm_surface *surf,
 | 
					struct wlr_buffer *drm_surface_blit(struct wlr_drm_surface *surf,
 | 
				
			||||||
		struct wlr_buffer *buffer) {
 | 
							struct wlr_buffer *buffer) {
 | 
				
			||||||
	struct wlr_renderer *renderer = surf->renderer->wlr_rend;
 | 
						struct wlr_renderer *renderer = surf->renderer->wlr_rend;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (surf->width != (uint32_t)buffer->width ||
 | 
						if (surf->swapchain->width != buffer->width ||
 | 
				
			||||||
			surf->height != (uint32_t)buffer->height) {
 | 
								surf->swapchain->height != buffer->height) {
 | 
				
			||||||
		wlr_log(WLR_ERROR, "Surface size doesn't match buffer size");
 | 
							wlr_log(WLR_ERROR, "Surface size doesn't match buffer size");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -106,7 +102,7 @@ struct wlr_buffer *drm_surface_blit(struct wlr_drm_surface *surf,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	float mat[9];
 | 
						float mat[9];
 | 
				
			||||||
	wlr_matrix_identity(mat);
 | 
						wlr_matrix_identity(mat);
 | 
				
			||||||
	wlr_matrix_scale(mat, surf->width, surf->height);
 | 
						wlr_matrix_scale(mat, surf->swapchain->width, surf->swapchain->height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!wlr_renderer_begin_with_buffer(renderer, dst)) {
 | 
						if (!wlr_renderer_begin_with_buffer(renderer, dst)) {
 | 
				
			||||||
		wlr_buffer_unlock(dst);
 | 
							wlr_buffer_unlock(dst);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,10 +19,6 @@ struct wlr_drm_renderer {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_drm_surface {
 | 
					struct wlr_drm_surface {
 | 
				
			||||||
	struct wlr_drm_renderer *renderer;
 | 
						struct wlr_drm_renderer *renderer;
 | 
				
			||||||
 | 
					 | 
				
			||||||
	uint32_t width;
 | 
					 | 
				
			||||||
	uint32_t height;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	struct wlr_swapchain *swapchain;
 | 
						struct wlr_swapchain *swapchain;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,7 +36,7 @@ bool init_drm_renderer(struct wlr_drm_backend *drm,
 | 
				
			||||||
void finish_drm_renderer(struct wlr_drm_renderer *renderer);
 | 
					void finish_drm_renderer(struct wlr_drm_renderer *renderer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool init_drm_surface(struct wlr_drm_surface *surf,
 | 
					bool init_drm_surface(struct wlr_drm_surface *surf,
 | 
				
			||||||
	struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height,
 | 
						struct wlr_drm_renderer *renderer, int width, int height,
 | 
				
			||||||
	const struct wlr_drm_format *drm_format);
 | 
						const struct wlr_drm_format *drm_format);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool drm_fb_import(struct wlr_drm_fb **fb, struct wlr_drm_backend *drm,
 | 
					bool drm_fb_import(struct wlr_drm_fb **fb, struct wlr_drm_backend *drm,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue