diff options
author | Aaron Plattner | 2016-06-06 15:40:33 -0700 |
---|---|---|
committer | Aaron Plattner | 2016-06-06 15:43:38 -0700 |
commit | 527fba43a5628b8e2697ff253b162622e321b201 (patch) | |
tree | 38308204f797794fc0b30eb229b70550f340929b /0002-gl-renderer-Refactor-gl_renderer_output_window_creat.patch | |
parent | 57673850b273dcf3db6c85abe9bc1d45d090eaf4 (diff) | |
download | aur-527fba43a5628b8e2697ff253b162622e321b201.tar.gz |
Update to Weston 1.11.0
Fetched patches from the nvidia_r364 branch of
git://people.freedesktop.org/~jjones/weston and then rebased on top of the
1.11.0 tag.
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
Diffstat (limited to '0002-gl-renderer-Refactor-gl_renderer_output_window_creat.patch')
-rw-r--r-- | 0002-gl-renderer-Refactor-gl_renderer_output_window_creat.patch | 169 |
1 files changed, 0 insertions, 169 deletions
diff --git a/0002-gl-renderer-Refactor-gl_renderer_output_window_creat.patch b/0002-gl-renderer-Refactor-gl_renderer_output_window_creat.patch deleted file mode 100644 index 2c4528b94998..000000000000 --- a/0002-gl-renderer-Refactor-gl_renderer_output_window_creat.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 1a6f5e3586cf62029a8bed8072bd41e845746bad Mon Sep 17 00:00:00 2001 -From: "Miguel A. Vico" <mvicomoya@nvidia.com> -Date: Mon, 21 Mar 2016 17:37:32 +0100 -Subject: [PATCH 2/7] gl-renderer: Refactor gl_renderer_output_window_create() -X-NVConfidentiality: public - -In preparation for follow-on changes to support frame presentation -through EGLDevice+EGLOutput, this change refactors -gl_renderer_output_window_create() to separate out window surface -creation code from output common creation code. - -Bonus: Fix EGLSurface leakage upon gl_renderer_setup() failure. - -Signed-off-by: Miguel A Vico Moya <mvicomoya@nvidia.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> ---- - src/gl-renderer.c | 91 +++++++++++++++++++++++++++++++++++++------------------ - 1 file changed, 62 insertions(+), 29 deletions(-) - -diff --git a/src/gl-renderer.c b/src/gl-renderer.c -index 0c55e0b9ebd2..1d6d98c9b86b 100644 ---- a/src/gl-renderer.c -+++ b/src/gl-renderer.c -@@ -1,6 +1,7 @@ - /* - * Copyright © 2012 Intel Corporation - * Copyright © 2015 Collabora, Ltd. -+ * Copyright © 2016 NVIDIA Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the -@@ -2546,24 +2547,21 @@ gl_renderer_output_set_border(struct weston_output *output, - static int - gl_renderer_setup(struct weston_compositor *ec, EGLSurface egl_surface); - --static int --gl_renderer_output_window_create(struct weston_output *output, -+static EGLSurface -+gl_renderer_create_window_surface(struct gl_renderer *gr, - EGLNativeWindowType window_for_legacy, - void *window_for_platform, - const EGLint *config_attribs, - const EGLint *visual_id, - int n_ids) - { -- struct weston_compositor *ec = output->compositor; -- struct gl_renderer *gr = get_renderer(ec); -- struct gl_output_state *go; -+ EGLSurface egl_surface = EGL_NO_SURFACE; - EGLConfig egl_config; -- int i; - - if (egl_choose_config(gr, config_attribs, visual_id, - n_ids, &egl_config) == -1) { - weston_log("failed to choose EGL config for output\n"); -- return -1; -+ return EGL_NO_SURFACE; - } - - if (egl_config != gr->egl_config && -@@ -2571,48 +2569,83 @@ gl_renderer_output_window_create(struct weston_output *output, - weston_log("attempted to use a different EGL config for an " - "output but EGL_MESA_configless_context is not " - "supported\n"); -- return -1; -+ return EGL_NO_SURFACE; - } - -- go = zalloc(sizeof *go); -- if (go == NULL) -- return -1; -+ log_egl_config_info(gr->egl_display, egl_config); - -- if (gr->create_platform_window) { -- go->egl_surface = -- gr->create_platform_window(gr->egl_display, -- egl_config, -- window_for_platform, -- NULL); -- } else { -- go->egl_surface = -- eglCreateWindowSurface(gr->egl_display, -- egl_config, -- window_for_legacy, NULL); -- } -+ if (gr->create_platform_window) -+ egl_surface = gr->create_platform_window(gr->egl_display, -+ egl_config, -+ window_for_platform, -+ NULL); -+ else -+ egl_surface = eglCreateWindowSurface(gr->egl_display, -+ egl_config, -+ window_for_legacy, NULL); -+ -+ return egl_surface; -+} -+ -+static int -+gl_renderer_output_create(struct weston_output *output, -+ EGLSurface surface) -+{ -+ struct weston_compositor *ec = output->compositor; -+ struct gl_renderer *gr = get_renderer(ec); -+ struct gl_output_state *go; -+ int i; - -- if (go->egl_surface == EGL_NO_SURFACE) { -+ if (surface == EGL_NO_SURFACE) { - weston_log("failed to create egl surface\n"); -- free(go); - return -1; - } - - if (gr->egl_context == NULL) -- if (gl_renderer_setup(ec, go->egl_surface) < 0) { -- free(go); -+ if (gl_renderer_setup(ec, surface) < 0) { - return -1; - } - -+ go = zalloc(sizeof *go); -+ if (go == NULL) -+ return -1; -+ -+ go->egl_surface = surface; -+ - for (i = 0; i < BUFFER_DAMAGE_COUNT; i++) - pixman_region32_init(&go->buffer_damage[i]); - - output->renderer_state = go; - -- log_egl_config_info(gr->egl_display, egl_config); -- - return 0; - } - -+static int -+gl_renderer_output_window_create(struct weston_output *output, -+ EGLNativeWindowType window_for_legacy, -+ void *window_for_platform, -+ const EGLint *config_attribs, -+ const EGLint *visual_id, -+ int n_ids) -+{ -+ struct weston_compositor *ec = output->compositor; -+ struct gl_renderer *gr = get_renderer(ec); -+ EGLSurface egl_surface = EGL_NO_SURFACE; -+ int ret = 0; -+ -+ egl_surface = gl_renderer_create_window_surface(gr, -+ window_for_legacy, -+ window_for_platform, -+ config_attribs, -+ visual_id, n_ids); -+ -+ ret = gl_renderer_output_create(output, egl_surface); -+ if (ret < 0 && egl_surface != EGL_NO_SURFACE) -+ eglDestroySurface(gr->egl_display, egl_surface); -+ -+ return ret; -+} -+ - static void - gl_renderer_output_destroy(struct weston_output *output) - { --- -2.7.4 - |