WebKit Bugzilla
Attachment 371385 Details for
Bug 198558
: [WPE] Use new exported image API from fdo backend
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
wpe-exported-image.diff (text/plain), 9.10 KB, created by
Carlos Garcia Campos
on 2019-06-05 02:36:26 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Carlos Garcia Campos
Created:
2019-06-05 02:36:26 PDT
Size:
9.10 KB
patch
obsolete
>diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 99a71daf4de..f364e9b3411 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,26 @@ >+2019-06-05 Carlos Garcia Campos <cgarcia@igalia.com> >+ >+ [WPE] Use new exported image API from fdo backend >+ https://bugs.webkit.org/show_bug.cgi?id=198558 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * WebKitTestRunner/PlatformWPE.cmake: Do not find fdo backend and libxkb again here, since WKTR depends on >+ WPEToolingBackends that already depends on fdo backend and libxkb >+ * wpe/backends/CMakeLists.txt: Bump fdo requirements to 1.3.0 version. >+ * wpe/backends/HeadlessViewBackend.cpp: >+ (WPEToolingBackends::HeadlessViewBackend::HeadlessViewBackend): >+ (WPEToolingBackends::HeadlessViewBackend::createSnapshot): >+ (WPEToolingBackends::HeadlessViewBackend::performUpdate): >+ (WPEToolingBackends::HeadlessViewBackend::displayBuffer): >+ * wpe/backends/HeadlessViewBackend.h: >+ * wpe/backends/ViewBackend.cpp: >+ (WPEToolingBackends::ViewBackend::initialize): >+ * wpe/backends/ViewBackend.h: >+ * wpe/backends/WindowViewBackend.cpp: >+ (WPEToolingBackends::WindowViewBackend::displayBuffer): >+ * wpe/backends/WindowViewBackend.h: >+ > 2019-06-04 Chris Dumez <cdumez@apple.com> > > Cookies set via [WKHTTPCookieStore setCookie:] on store right after constructing WKWebView get lost >diff --git a/Tools/WebKitTestRunner/PlatformWPE.cmake b/Tools/WebKitTestRunner/PlatformWPE.cmake >index e20087ca55a..2bed80a018c 100644 >--- a/Tools/WebKitTestRunner/PlatformWPE.cmake >+++ b/Tools/WebKitTestRunner/PlatformWPE.cmake >@@ -1,6 +1,3 @@ >-find_package(Libxkbcommon 0.4.0 REQUIRED) >-find_package(WPEBackend-fdo REQUIRED) >- > add_custom_target(WebKitTestRunner-forwarding-headers > COMMAND ${PERL_EXECUTABLE} ${WEBKIT_DIR}/Scripts/generate-forwarding-headers.pl --include-path ${WEBKIT_TESTRUNNER_DIR} --output ${FORWARDING_HEADERS_DIR} --platform wpe > ) >diff --git a/Tools/wpe/backends/CMakeLists.txt b/Tools/wpe/backends/CMakeLists.txt >index 570c4530f54..9788ab56abe 100644 >--- a/Tools/wpe/backends/CMakeLists.txt >+++ b/Tools/wpe/backends/CMakeLists.txt >@@ -1,7 +1,7 @@ > find_package(Libxkbcommon 0.4.0 REQUIRED) > find_package(Wayland REQUIRED) > find_package(WaylandProtocols 1.12 REQUIRED) >-find_package(WPEBackend-fdo REQUIRED) >+find_package(WPEBackend-fdo 1.3.0 REQUIRED) > > set(DERIVED_SOURCES_WPETOOLINGBACKENDS_DIR "${CMAKE_BINARY_DIR}/DerivedSources/WPEToolingBackends") > >diff --git a/Tools/wpe/backends/HeadlessViewBackend.cpp b/Tools/wpe/backends/HeadlessViewBackend.cpp >index eada21ab3aa..1d04104ac05 100644 >--- a/Tools/wpe/backends/HeadlessViewBackend.cpp >+++ b/Tools/wpe/backends/HeadlessViewBackend.cpp >@@ -65,8 +65,6 @@ static EGLDisplay getEGLDisplay() > > HeadlessViewBackend::HeadlessViewBackend(uint32_t width, uint32_t height) > : ViewBackend(width, height) >- , m_pendingImage(EGL_NO_IMAGE_KHR) >- , m_lockedImage(EGL_NO_IMAGE_KHR) > { > m_eglDisplay = getEGLDisplay(); > if (!initialize()) >@@ -121,7 +119,7 @@ cairo_surface_t* HeadlessViewBackend::createSnapshot() > glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); > glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT, m_width, m_height, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, nullptr); > >- imageTargetTexture2DOES(GL_TEXTURE_2D, m_lockedImage); >+ imageTargetTexture2DOES(GL_TEXTURE_2D, wpe_fdo_egl_exported_image_get_egl_image(m_lockedImage)); > glBindTexture(GL_TEXTURE_2D, 0); > > GLuint imageFramebuffer; >@@ -165,13 +163,13 @@ void HeadlessViewBackend::performUpdate() > > wpe_view_backend_exportable_fdo_dispatch_frame_complete(m_exportable); > if (m_lockedImage) >- wpe_view_backend_exportable_fdo_egl_dispatch_release_image(m_exportable, m_lockedImage); >+ wpe_view_backend_exportable_fdo_egl_dispatch_release_exported_image(m_exportable, m_lockedImage); > > m_lockedImage = m_pendingImage; >- m_pendingImage = EGL_NO_IMAGE_KHR; >+ m_pendingImage = nullptr; > } > >-void HeadlessViewBackend::displayBuffer(EGLImageKHR image) >+void HeadlessViewBackend::displayBuffer(struct wpe_fdo_egl_exported_image* image) > { > if (m_pendingImage) > std::abort(); >diff --git a/Tools/wpe/backends/HeadlessViewBackend.h b/Tools/wpe/backends/HeadlessViewBackend.h >index b0d66e39f3e..2734a7457ef 100644 >--- a/Tools/wpe/backends/HeadlessViewBackend.h >+++ b/Tools/wpe/backends/HeadlessViewBackend.h >@@ -30,8 +30,6 @@ > #include <glib.h> > #include <unordered_map> > >-typedef void* EGLImageKHR; >- > namespace WPEToolingBackends { > > class HeadlessViewBackend final : public ViewBackend { >@@ -42,12 +40,12 @@ public: > cairo_surface_t* createSnapshot(); > > private: >- void displayBuffer(EGLImageKHR) override; >+ void displayBuffer(struct wpe_fdo_egl_exported_image*) override; > > void performUpdate(); > >- EGLImageKHR m_pendingImage; >- EGLImageKHR m_lockedImage; >+ struct wpe_fdo_egl_exported_image* m_pendingImage { nullptr }; >+ struct wpe_fdo_egl_exported_image* m_lockedImage { nullptr }; > > GSource* m_updateSource { nullptr }; > gint64 m_frameRate { G_USEC_PER_SEC / 60 }; >diff --git a/Tools/wpe/backends/ViewBackend.cpp b/Tools/wpe/backends/ViewBackend.cpp >index b344317ef3f..02fb46bda72 100644 >--- a/Tools/wpe/backends/ViewBackend.cpp >+++ b/Tools/wpe/backends/ViewBackend.cpp >@@ -189,13 +189,15 @@ bool ViewBackend::initialize() > return false; > > static struct wpe_view_backend_exportable_fdo_egl_client exportableClient = { >- // export_buffer_resource >- [](void* data, EGLImageKHR image) >+ // export_egl_image >+ nullptr, >+ // export_fdo_egl_image >+ [](void* data, struct wpe_fdo_egl_exported_image* image) > { > static_cast<ViewBackend*>(data)->displayBuffer(image); > }, > // padding >- nullptr, nullptr, nullptr, nullptr >+ nullptr, nullptr, nullptr > }; > m_exportable = wpe_view_backend_exportable_fdo_egl_create(&exportableClient, this, m_width, m_height); > >diff --git a/Tools/wpe/backends/ViewBackend.h b/Tools/wpe/backends/ViewBackend.h >index 0970b5f5cae..009ce468068 100644 >--- a/Tools/wpe/backends/ViewBackend.h >+++ b/Tools/wpe/backends/ViewBackend.h >@@ -31,8 +31,8 @@ > typedef void* EGLConfig; > typedef void* EGLContext; > typedef void* EGLDisplay; >-typedef void* EGLImageKHR; > typedef struct _AtkObject AtkObject; >+struct wpe_fdo_egl_exported_image; > > // Manually provide the EGL_CAST C++ definition in case eglplatform.h doesn't provide it. > #ifndef EGL_CAST >@@ -76,7 +76,7 @@ protected: > void dispatchInputKeyboardEvent(struct wpe_input_keyboard_event*); > void dispatchInputTouchEvent(struct wpe_input_touch_event*); > >- virtual void displayBuffer(EGLImageKHR) = 0; >+ virtual void displayBuffer(struct wpe_fdo_egl_exported_image*) = 0; > > uint32_t m_width { 0 }; > uint32_t m_height { 0 }; >diff --git a/Tools/wpe/backends/WindowViewBackend.cpp b/Tools/wpe/backends/WindowViewBackend.cpp >index fc21f4c5538..50c41c26a9b 100644 >--- a/Tools/wpe/backends/WindowViewBackend.cpp >+++ b/Tools/wpe/backends/WindowViewBackend.cpp >@@ -631,12 +631,12 @@ const struct wl_callback_listener WindowViewBackend::s_frameListener = { > wpe_view_backend_exportable_fdo_dispatch_frame_complete(window.m_exportable); > > if (window.m_committedImage) >- wpe_view_backend_exportable_fdo_egl_dispatch_release_image(window.m_exportable, window.m_committedImage); >- window.m_committedImage = EGL_NO_IMAGE_KHR; >+ wpe_view_backend_exportable_fdo_egl_dispatch_release_exported_image(window.m_exportable, window.m_committedImage); >+ window.m_committedImage = nullptr; > } > }; > >-void WindowViewBackend::displayBuffer(EGLImageKHR image) >+void WindowViewBackend::displayBuffer(struct wpe_fdo_egl_exported_image* image) > { > if (!m_eglContext) > return; >@@ -650,7 +650,7 @@ void WindowViewBackend::displayBuffer(EGLImageKHR image) > > glActiveTexture(GL_TEXTURE0); > glBindTexture(GL_TEXTURE_2D, m_viewTexture); >- imageTargetTexture2DOES(GL_TEXTURE_2D, image); >+ imageTargetTexture2DOES(GL_TEXTURE_2D, wpe_fdo_egl_exported_image_get_egl_image(image)); > glUniform1i(m_textureUniform, 0); > > m_committedImage = image; >diff --git a/Tools/wpe/backends/WindowViewBackend.h b/Tools/wpe/backends/WindowViewBackend.h >index b7737fc1069..24a7b274ae0 100644 >--- a/Tools/wpe/backends/WindowViewBackend.h >+++ b/Tools/wpe/backends/WindowViewBackend.h >@@ -30,7 +30,6 @@ > #include <glib.h> > #include <unordered_map> > >-typedef void* EGLImageKHR; > typedef void* EGLSurface; > typedef struct wl_egl_window *EGLNativeWindowType; > >@@ -42,7 +41,7 @@ public: > virtual ~WindowViewBackend(); > > private: >- void displayBuffer(EGLImageKHR) override; >+ void displayBuffer(struct wpe_fdo_egl_exported_image*) override; > > static const struct wl_registry_listener s_registryListener; > static const struct zxdg_shell_v6_listener s_xdgWmBaseListener; >@@ -106,7 +105,7 @@ private: > unsigned m_program { 0 }; > unsigned m_textureUniform { 0 }; > unsigned m_viewTexture { 0 }; >- EGLImageKHR m_committedImage; >+ struct wpe_fdo_egl_exported_image* m_committedImage { nullptr }; > }; > > } // WPEToolingBackends
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
pnormand
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198558
: 371385