[Webkit-unassigned] [Bug 159928] [GStreamer] Support a direct GPU-to-GPU copy of video textures to WebGL
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Sep 22 03:28:14 PDT 2016
https://bugs.webkit.org/show_bug.cgi?id=159928
Carlos Garcia Campos <cgarcia at igalia.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #289542|review?, commit-queue? |review+, commit-queue-
Flags| |
--- Comment #19 from Carlos Garcia Campos <cgarcia at igalia.com> ---
Comment on attachment 289542
--> https://bugs.webkit.org/attachment.cgi?id=289542
Patch
View in context: https://bugs.webkit.org/attachment.cgi?id=289542&action=review
> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:701
> +GLContext* MediaPlayerPrivateGStreamerBase::prepareContextForCairoPaint(cairo_device_t*& device, GstVideoInfo& videoInfo, IntSize& size, IntSize& rotatedSize)
We don't need to return the device, you can get it from the context.
> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:710
> + cairo_gl_device_set_thread_aware(device, FALSE);
You can do cairo_gl_device_set_thread_aware(glContext->cairoDevice(), FALSE); directly.
> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:773
> + cairo_device_t* device;
So, this is not needed.
> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:778
> + if (!prepareContextForCairoPaint(device, videoInfo, size, rotatedSize))
> + return false;
Get the context here and use it below to pass the cairo device to paintToCairoSurface()
> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:784
> + // cairo_gl_surface_create_for_texture sets these parameters to GL_NEAREST, so we need to backup them
Nit: finish comments with '.'
> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:806
> + cairo_device_t* device;
Same here.
> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:813
> + GLContext* context = prepareContextForCairoPaint(device, videoInfo, size, rotatedSize);
> + if (!context)
> + return nullptr;
> + context->makeContextCurrent();
I still think that making the context current in prepareContextForCairoPaint wouldn't hurt even if it's not needed in the other case.
> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:819
> + cairo_surface_t* rotatedSurface = cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, rotatedSize.width(), rotatedSize.height());
> + if (!paintToCairoSurface(rotatedSurface, device, videoInfo, size, rotatedSize))
> + return nullptr;
> +
> + return adoptRef(rotatedSurface);
The smart pointer was correct here, now you are leaking the surface if paintToCairoSurface() returns false.
> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:136
> + bool paintToCairoSurface(cairo_surface_t* outputSurface, cairo_device_t*, GstVideoInfo&, const IntSize&, const IntSize&);
outputSurface can be omitted in this case
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20160922/955eeb9e/attachment.html>
More information about the webkit-unassigned
mailing list