summarylogtreecommitdiffstats
path: root/0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch
diff options
context:
space:
mode:
Diffstat (limited to '0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch')
-rw-r--r--0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch89
1 files changed, 47 insertions, 42 deletions
diff --git a/0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch b/0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch
index 2449df0669fb..1ab6d5cf0900 100644
--- a/0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch
+++ b/0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch
@@ -1,4 +1,4 @@
-From 0bc696502b2cf1266e30dfc35146d85282eaa629 Mon Sep 17 00:00:00 2001
+From e3914a22b9dfb64705b2bcc8d497ebb464fa2fc7 Mon Sep 17 00:00:00 2001
From: "Miguel A. Vico" <mvicomoya@nvidia.com>
Date: Mon, 2 May 2016 16:34:01 +0200
Subject: [PATCH 2/6] gl-renderer: Add support for EGLDevice composited frame
@@ -41,18 +41,27 @@ Reviewed-by: Andy Ritger <aritger@nvidia.com>
Reviewed-by: Adam Cheney <acheney@nvidia.com>
Reviewed-by: James Jones <jajones@nvidia.com>
---
- libweston/renderer-gl/egl-glue.c | 37 ++++
- libweston/renderer-gl/gl-renderer-internal.h | 22 ++
- libweston/renderer-gl/gl-renderer.c | 199 ++++++++++++++++++-
+ libweston/renderer-gl/egl-glue.c | 45 +++++
+ libweston/renderer-gl/gl-renderer-internal.h | 22 +++
+ libweston/renderer-gl/gl-renderer.c | 197 ++++++++++++++++++-
libweston/renderer-gl/gl-renderer.h | 15 ++
shared/weston-egl-ext.h | 40 ++++
- 5 files changed, 308 insertions(+), 5 deletions(-)
+ 5 files changed, 314 insertions(+), 5 deletions(-)
diff --git a/libweston/renderer-gl/egl-glue.c b/libweston/renderer-gl/egl-glue.c
-index d96efeae..24d647b8 100644
+index 28be4ffe..60cebd8f 100644
--- a/libweston/renderer-gl/egl-glue.c
+++ b/libweston/renderer-gl/egl-glue.c
-@@ -504,6 +504,19 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
+@@ -503,6 +503,8 @@ platform_to_extension(EGLenum platform)
+ return "x11";
+ case EGL_PLATFORM_SURFACELESS_MESA:
+ return "surfaceless";
++ case EGL_PLATFORM_DEVICE_EXT:
++ return "device";
+ default:
+ assert(0 && "bad EGL platform enum");
+ }
+@@ -600,6 +602,19 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
(void *) eglGetProcAddress("eglQueryWaylandBufferWL");
gr->set_damage_region =
(void *) eglGetProcAddress("eglSetDamageRegionKHR");
@@ -72,7 +81,7 @@ index d96efeae..24d647b8 100644
extensions =
(const char *) eglQueryString(gr->egl_display, EGL_EXTENSIONS);
-@@ -593,6 +606,30 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
+@@ -689,5 +704,35 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
"to missing EGL_KHR_wait_sync extension\n");
}
@@ -100,16 +109,21 @@ index d96efeae..24d647b8 100644
+ if (weston_check_egl_extension(extensions, "EGL_EXT_stream_acquire_mode"))
+ gr->has_egl_stream_acquire_mode = true;
+
- renderer_setup_egl_client_extensions(gr);
-
++ if (weston_check_egl_extension(extensions, "EGL_KHR_stream_consumer_gltexture"))
++ gr->has_egl_stream_consumer_gltexture = true;
++
++ if (weston_check_egl_extension(extensions, "EGL_WL_wayland_eglstream"))
++ gr->has_egl_wayland_eglstream = true;
++
return 0;
+ }
diff --git a/libweston/renderer-gl/gl-renderer-internal.h b/libweston/renderer-gl/gl-renderer-internal.h
-index 00f617a9..b7c374a2 100644
+index 529cb2f9..e122f64a 100644
--- a/libweston/renderer-gl/gl-renderer-internal.h
+++ b/libweston/renderer-gl/gl-renderer-internal.h
-@@ -87,6 +87,28 @@ struct gl_renderer {
- bool has_dmabuf_import;
+@@ -91,6 +91,28 @@ struct gl_renderer {
struct wl_list dmabuf_images;
+ struct wl_list dmabuf_formats;
+ PFNEGLGETOUTPUTLAYERSEXTPROC get_output_layers;
+ PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC query_output_layer_attrib;
@@ -137,7 +151,7 @@ index 00f617a9..b7c374a2 100644
struct gl_shader texture_shader_rgba;
diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c
-index 4bf95e60..fe4f1087 100644
+index 0c9e197a..6fc469ba 100644
--- a/libweston/renderer-gl/gl-renderer.c
+++ b/libweston/renderer-gl/gl-renderer.c
@@ -91,6 +91,8 @@ struct gl_output_state {
@@ -149,7 +163,7 @@ index 4bf95e60..fe4f1087 100644
struct weston_matrix output_matrix;
EGLSyncKHR begin_render_sync, end_render_sync;
-@@ -1514,6 +1516,38 @@ gl_renderer_repaint_output(struct weston_output *output,
+@@ -1521,6 +1523,38 @@ gl_renderer_repaint_output(struct weston_output *output,
update_buffer_release_fences(compositor, output);
}
@@ -188,7 +202,7 @@ index 4bf95e60..fe4f1087 100644
static int
gl_renderer_read_pixels(struct weston_output *output,
pixman_format_code_t format, void *pixels,
-@@ -3142,9 +3176,93 @@ gl_renderer_create_window_surface(struct gl_renderer *gr,
+@@ -3238,9 +3272,93 @@ gl_renderer_create_window_surface(struct gl_renderer *gr,
return egl_surface;
}
@@ -283,7 +297,7 @@ index 4bf95e60..fe4f1087 100644
{
struct gl_output_state *go;
int i;
-@@ -3154,6 +3272,7 @@ gl_renderer_output_create(struct weston_output *output,
+@@ -3250,6 +3368,7 @@ gl_renderer_output_create(struct weston_output *output,
return -1;
go->egl_surface = surface;
@@ -291,7 +305,7 @@ index 4bf95e60..fe4f1087 100644
for (i = 0; i < BUFFER_DAMAGE_COUNT; i++)
pixman_region32_init(&go->buffer_damage[i]);
-@@ -3190,7 +3309,7 @@ gl_renderer_output_window_create(struct weston_output *output,
+@@ -3283,7 +3402,7 @@ gl_renderer_output_window_create(struct weston_output *output,
return -1;
}
@@ -300,7 +314,7 @@ index 4bf95e60..fe4f1087 100644
if (ret < 0)
weston_platform_destroy_egl_surface(gr->egl_display, egl_surface);
-@@ -3232,13 +3351,41 @@ gl_renderer_output_pbuffer_create(struct weston_output *output,
+@@ -3322,13 +3441,41 @@ gl_renderer_output_pbuffer_create(struct weston_output *output,
return -1;
}
@@ -343,7 +357,7 @@ index 4bf95e60..fe4f1087 100644
static void
gl_renderer_output_destroy(struct weston_output *output)
{
-@@ -3268,6 +3415,9 @@ gl_renderer_output_destroy(struct weston_output *output)
+@@ -3358,6 +3505,9 @@ gl_renderer_output_destroy(struct weston_output *output)
if (go->end_render_sync != EGL_NO_SYNC_KHR)
gr->destroy_sync(gr->egl_display, go->end_render_sync);
@@ -353,30 +367,21 @@ index 4bf95e60..fe4f1087 100644
free(go);
}
-@@ -3402,6 +3552,8 @@ platform_to_extension(EGLenum platform)
- return "x11";
- case EGL_PLATFORM_SURFACELESS_MESA:
- return "surfaceless";
-+ case EGL_PLATFORM_DEVICE_EXT:
-+ return "device";
- default:
- assert(0 && "bad EGL platform enum");
- }
-@@ -3530,7 +3682,8 @@ gl_renderer_display_create(struct weston_compositor *ec,
+@@ -3503,7 +3653,8 @@ gl_renderer_display_create(struct weston_compositor *ec,
if (gl_renderer_setup_egl_extensions(ec) < 0)
goto fail_with_error;
- if (!gr->has_configless_context) {
+ if (!gr->has_configless_context ||
-+ platform == EGL_PLATFORM_DEVICE_EXT) {
- if (!gr->has_surfaceless_context)
- egl_surface_type |= EGL_PBUFFER_BIT;
++ options->egl_platform == EGL_PLATFORM_DEVICE_EXT) {
+ EGLint egl_surface_type = options->egl_surface_type;
-@@ -3550,6 +3703,38 @@ gl_renderer_display_create(struct weston_compositor *ec,
+ if (!gr->has_surfaceless_context)
+@@ -3526,6 +3677,38 @@ gl_renderer_display_create(struct weston_compositor *ec,
if (gr->has_native_fence_sync && gr->has_wait_sync)
ec->capabilities |= WESTON_CAP_EXPLICIT_SYNC;
-+ if (platform == EGL_PLATFORM_DEVICE_EXT) {
++ if (options->egl_platform == EGL_PLATFORM_DEVICE_EXT) {
+ if (!gr->has_egl_output_base ||
+ !gr->has_egl_output_drm ||
+ !gr->has_egl_stream ||
@@ -411,7 +416,7 @@ index 4bf95e60..fe4f1087 100644
wl_list_init(&gr->dmabuf_images);
if (gr->has_dmabuf_import) {
gr->base.import_dmabuf = gl_renderer_import_dmabuf;
-@@ -3914,9 +4099,13 @@ WL_EXPORT struct gl_renderer_interface gl_renderer_interface = {
+@@ -3892,9 +4075,13 @@ WL_EXPORT struct gl_renderer_interface gl_renderer_interface = {
.display_create = gl_renderer_display_create,
.output_window_create = gl_renderer_output_window_create,
.output_pbuffer_create = gl_renderer_output_pbuffer_create,
@@ -427,12 +432,12 @@ index 4bf95e60..fe4f1087 100644
+ .output_stream_flip = gl_renderer_output_stream_flip
};
diff --git a/libweston/renderer-gl/gl-renderer.h b/libweston/renderer-gl/gl-renderer.h
-index b60a6463..ecf7368d 100644
+index 80c3379b..f46c21c6 100644
--- a/libweston/renderer-gl/gl-renderer.h
+++ b/libweston/renderer-gl/gl-renderer.h
-@@ -163,6 +163,9 @@ struct gl_renderer_interface {
- const uint32_t *drm_formats,
- unsigned drm_formats_count);
+@@ -179,6 +179,9 @@ struct gl_renderer_interface {
+ int (*output_pbuffer_create)(struct weston_output *output,
+ const struct gl_renderer_pbuffer_options *options);
+ int (*output_stream_create)(struct weston_output *output,
+ uint32_t plane_id, uint32_t crtc_id);
@@ -440,7 +445,7 @@ index b60a6463..ecf7368d 100644
void (*output_destroy)(struct weston_output *output);
/* Sets the output border.
-@@ -210,4 +213,16 @@ struct gl_renderer_interface {
+@@ -226,4 +229,16 @@ struct gl_renderer_interface {
int (*get_drm_device_file)(EGLDeviceEXT device,
const char **drm_device_file);
@@ -516,5 +521,5 @@ index 4a757c8b..dc07c04a 100644
#endif /* ENABLE_EGL */
--
-2.20.1
+2.25.1