[PATCH weston] shell: Bypass fullscreen scaling if surface width and height match output

Rob Bradford robert.bradford at intel.com
Tue Feb 12 03:53:47 PST 2013


From: Rob Bradford <rob at linux.intel.com>

If our surface has width and height set to the same dimensions as the output
then we can bypassing the scale factor calculation and addition of the
transformation.

The use case that led to this optimisation is the playback of video using
gstreamer-vaapi with the "scale" method. The video is the same dimensions as
the output (1080p.)
---
 src/shell.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/shell.c b/src/shell.c
index 368fa5b..19ccdfd 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1672,6 +1672,13 @@ shell_configure_fullscreen(struct shell_surface *shsurf)
 			center_on_output(surface, shsurf->fullscreen_output);
 		break;
 	case WL_SHELL_SURFACE_FULLSCREEN_METHOD_SCALE:
+		/* 1:1 mapping between surface and output dimensions */
+		if (output->width == surface->geometry.width &&
+		    output->height == surface->geometry.height) {
+			weston_surface_set_position(surface, output->x, output->y);
+			break;
+		}
+
 		matrix = &shsurf->fullscreen.transform.matrix;
 		weston_matrix_init(matrix);
 
-- 
1.8.1



More information about the wayland-devel mailing list