|  |  |  | @ -27,10 +27,6 @@ | 
			
		
	
		
			
				
					|  |  |  |  | #include "sway/tree/view.h" | 
			
		
	
		
			
				
					|  |  |  |  | #include "sway/tree/workspace.h" | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #if WLR_HAS_GLES2_RENDERER | 
			
		
	
		
			
				
					|  |  |  |  | #include <wlr/render/gles2.h> | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | struct render_data { | 
			
		
	
		
			
				
					|  |  |  |  | 	struct render_context *ctx; | 
			
		
	
		
			
				
					|  |  |  |  | 	const pixman_region32_t *damage; | 
			
		
	
	
		
			
				
					|  |  |  | @ -71,30 +67,15 @@ static int scale_length(int length, int offset, float scale) { | 
			
		
	
		
			
				
					|  |  |  |  | 	return roundf((offset + length) * scale) - roundf(offset * scale); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | static void set_scale_filter(struct wlr_output *wlr_output, | 
			
		
	
		
			
				
					|  |  |  |  | 		struct wlr_texture *texture, enum scale_filter_mode scale_filter) { | 
			
		
	
		
			
				
					|  |  |  |  | #if WLR_HAS_GLES2_RENDERER | 
			
		
	
		
			
				
					|  |  |  |  | 	if (!wlr_texture_is_gles2(texture)) { | 
			
		
	
		
			
				
					|  |  |  |  | 		return; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	struct wlr_gles2_texture_attribs attribs; | 
			
		
	
		
			
				
					|  |  |  |  | 	wlr_gles2_texture_get_attribs(texture, &attribs); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	glBindTexture(attribs.target, attribs.tex); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	switch (scale_filter) { | 
			
		
	
		
			
				
					|  |  |  |  | static enum wlr_scale_filter_mode get_scale_filter(struct sway_output *output) { | 
			
		
	
		
			
				
					|  |  |  |  | 	switch (output->scale_filter) { | 
			
		
	
		
			
				
					|  |  |  |  | 	case SCALE_FILTER_LINEAR: | 
			
		
	
		
			
				
					|  |  |  |  | 		glTexParameteri(attribs.target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | 
			
		
	
		
			
				
					|  |  |  |  | 		break; | 
			
		
	
		
			
				
					|  |  |  |  | 		return WLR_SCALE_FILTER_BILINEAR; | 
			
		
	
		
			
				
					|  |  |  |  | 	case SCALE_FILTER_NEAREST: | 
			
		
	
		
			
				
					|  |  |  |  | 		glTexParameteri(attribs.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 
			
		
	
		
			
				
					|  |  |  |  | 		break; | 
			
		
	
		
			
				
					|  |  |  |  | 	case SCALE_FILTER_DEFAULT: | 
			
		
	
		
			
				
					|  |  |  |  | 	case SCALE_FILTER_SMART: | 
			
		
	
		
			
				
					|  |  |  |  | 		assert(false); // unreachable
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return WLR_SCALE_FILTER_NEAREST; | 
			
		
	
		
			
				
					|  |  |  |  | 	default: | 
			
		
	
		
			
				
					|  |  |  |  | 		abort(); // unreachable
 | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | static void render_texture(struct render_context *ctx, struct wlr_texture *texture, | 
			
		
	
	
		
			
				
					|  |  |  | @ -128,7 +109,6 @@ static void render_texture(struct render_context *ctx, struct wlr_texture *textu | 
			
		
	
		
			
				
					|  |  |  |  | 	transform_output_damage(&damage, output->wlr_output); | 
			
		
	
		
			
				
					|  |  |  |  | 	transform = wlr_output_transform_compose(transform, output->wlr_output->transform); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	set_scale_filter(output->wlr_output, texture, output->scale_filter); | 
			
		
	
		
			
				
					|  |  |  |  | 	wlr_render_pass_add_texture(ctx->pass, &(struct wlr_render_texture_options) { | 
			
		
	
		
			
				
					|  |  |  |  | 		.texture = texture, | 
			
		
	
		
			
				
					|  |  |  |  | 		.src_box = src_box, | 
			
		
	
	
		
			
				
					|  |  |  | @ -136,6 +116,7 @@ static void render_texture(struct render_context *ctx, struct wlr_texture *textu | 
			
		
	
		
			
				
					|  |  |  |  | 		.transform = transform, | 
			
		
	
		
			
				
					|  |  |  |  | 		.alpha = &alpha, | 
			
		
	
		
			
				
					|  |  |  |  | 		.clip = &damage, | 
			
		
	
		
			
				
					|  |  |  |  | 		.filter_mode = get_scale_filter(output), | 
			
		
	
		
			
				
					|  |  |  |  | 	}); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | damage_finish: | 
			
		
	
	
		
			
				
					|  |  |  | 
 |