[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] ui/console: Precautionary glBindTexture and
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH v2] ui/console: Precautionary glBindTexture and surface->texture validation in surface_gl_update_texture |
Date: |
Tue, 7 May 2019 09:44:10 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 5/7/19 8:49 AM, Hou Qiming wrote:
> My real name is "HOU Qiming". @Marcel Apfelbaum
> <mailto:address@hidden> can you incorporate that in your v2
> patch? Thanks!
Thanks a lot Qiming :)
> On Tue, May 7, 2019 at 2:25 PM Philippe Mathieu-Daudé <address@hidden
> <mailto:address@hidden>> wrote:
>
> Hi Marcel,
>
> On 5/7/19 7:49 AM, Marcel Apfelbaum wrote:
> > From: HQM <address@hidden <mailto:address@hidden>>
> >
> > In a GVT-g setup with dmabuf and GTK GUI, the current 2D texture at
> > surface_gl_update_texture is not necessarily
> > surface->texture. Adding a glBindTexture fixes related crashes and
> > artifacts, and is generally more secure.
> >
> > Signed-off-by: HQM <address@hidden <mailto:address@hidden>>
>
> This looks like an acronym, per
>
> https://wiki.qemu.org/Contribute/SubmitAPatch#Patch_emails_must_include_a_Signed-off-by:_line
>
> "Patch emails must include a Signed-off-by: line [...] Please use your
> real name to sign a patch (not an alias or acronym)."
>
> > Tested-by: Marcel Apfelbaum<address@hidden
> <mailto:address@hidden>>
> > [fixed malformed patch, rebase to master]
> > Signed-off-by: Marcel Apfelbaum <address@hidden
> <mailto:address@hidden>>
> > ---
> >
> > v2:
> > - fixed malformed patch
> > - rebased to master
> >
> > ui/console-gl.c | 18 +++++++++++-------
> > 1 file changed, 11 insertions(+), 7 deletions(-)
> >
> > diff --git a/ui/console-gl.c b/ui/console-gl.c
> > index a56e1cd8eb..c1cb3bd673 100644
> > --- a/ui/console-gl.c
> > +++ b/ui/console-gl.c
> > @@ -92,13 +92,17 @@ void surface_gl_update_texture(QemuGLShader *gls,
> >
> > assert(gls);
> >
> > - glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT,
> > - surface_stride(surface) /
> surface_bytes_per_pixel(surface));
> > - glTexSubImage2D(GL_TEXTURE_2D, 0,
> > - x, y, w, h,
> > - surface->glformat, surface->gltype,
> > - data + surface_stride(surface) * y
> > - + surface_bytes_per_pixel(surface) * x);
> > + if (surface->texture) {
> > + glBindTexture(GL_TEXTURE_2D, surface->texture);
> > + glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT,
> > + surface_stride(surface)
> > + / surface_bytes_per_pixel(surface));
> > + glTexSubImage2D(GL_TEXTURE_2D, 0,
> > + x, y, w, h,
> > + surface->glformat, surface->gltype,
> > + data + surface_stride(surface) * y
> > + + surface_bytes_per_pixel(surface) * x);
> > + }
> > }
> >
> > void surface_gl_render_texture(QemuGLShader *gls,
> >
>