From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36411) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YDEzh-0002Dq-45 for qemu-devel@nongnu.org; Mon, 19 Jan 2015 11:16:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YDEzc-0002kn-4S for qemu-devel@nongnu.org; Mon, 19 Jan 2015 11:16:01 -0500 Received: from mx1.redhat.com ([209.132.183.28]:42586) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YDEzb-0002ki-TU for qemu-devel@nongnu.org; Mon, 19 Jan 2015 11:15:56 -0500 Message-ID: <54BD2DB4.9080507@redhat.com> Date: Mon, 19 Jan 2015 11:15:48 -0500 From: Max Reitz MIME-Version: 1.0 References: <1421674603-31575-1-git-send-email-kraxel@redhat.com> <1421674603-31575-6-git-send-email-kraxel@redhat.com> In-Reply-To: <1421674603-31575-6-git-send-email-kraxel@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v2 5/7] console-gl: externalize shader programs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gerd Hoffmann , qemu-devel@nongnu.org Cc: Anthony Liguori On 2015-01-19 at 08:36, Gerd Hoffmann wrote: > --- S-o-b is missing. > Makefile | 17 +++++++++++++++++ > scripts/shaderinclude.pl | 16 ++++++++++++++++ > ui/console-gl.c | 28 ++-------------------------- > ui/shader/texture-blit.frag | 10 ++++++++++ > ui/shader/texture-blit.vert | 11 +++++++++++ > 5 files changed, 56 insertions(+), 26 deletions(-) > create mode 100644 scripts/shaderinclude.pl > create mode 100644 ui/shader/texture-blit.frag > create mode 100644 ui/shader/texture-blit.vert > > diff --git a/Makefile b/Makefile > index 6817c6f..6d77782 100644 > --- a/Makefile > +++ b/Makefile > @@ -292,6 +292,7 @@ clean: > rm -f fsdev/*.pod > rm -rf .libs */.libs > rm -f qemu-img-cmds.h > + rm -f ui/shader/*-vert.h ui/shader/*-frag.h > @# May not be present in GENERATED_HEADERS > rm -f trace/generated-tracers-dtrace.dtrace* > rm -f trace/generated-tracers-dtrace.h* > @@ -437,6 +438,22 @@ cscope: > find "$(SRC_PATH)" -name "*.[chsS]" -print | sed 's,^\./,,' > ./csco= pe.files > cscope -b > =20 > +# opengl shader programs > +ui/shader/%-vert.h: $(SRC_PATH)/ui/shader/%.vert $(SRC_PATH)/scripts/s= haderinclude.pl > + @mkdir -p $(dir $@) > + $(call quiet-command,\ > + perl $(SRC_PATH)/scripts/shaderinclude.pl $< > $@,\ > + " VERT $@") > + > +ui/shader/%-frag.h: $(SRC_PATH)/ui/shader/%.frag $(SRC_PATH)/scripts/s= haderinclude.pl > + @mkdir -p $(dir $@) > + $(call quiet-command,\ > + perl $(SRC_PATH)/scripts/shaderinclude.pl $< > $@,\ > + " FRAG $@") > + > +ui/console-gl.o: $(SRC_PATH)/ui/console-gl.c \ > + ui/shader/texture-blit-vert.h ui/shader/texture-blit-frag.h > + > # documentation > MAKEINFO=3Dmakeinfo > MAKEINFOFLAGS=3D--no-headers --no-split --number-sections > diff --git a/scripts/shaderinclude.pl b/scripts/shaderinclude.pl > new file mode 100644 > index 0000000..81b5146 > --- /dev/null > +++ b/scripts/shaderinclude.pl > @@ -0,0 +1,16 @@ > +#!/usr/bin/perl > +use strict; > +use warnings; > + > +my $file =3D shift; > +open FILE, "<", $file or die "open $file: $!"; > +my $name =3D $file; > +$name =3D~ s|.*/||; > +$name =3D~ s/[-.]/_/g; > +print "static GLchar ${name}_src[] =3D\n"; > +while () { > + chomp; > + printf " \"%s\\n\"\n", $_; > +} > +print " \"\\n\";\n"; > +close FILE; > diff --git a/ui/console-gl.c b/ui/console-gl.c > index 589c682..2c9412d 100644 > --- a/ui/console-gl.c > +++ b/ui/console-gl.c > @@ -33,32 +33,8 @@ struct ConsoleGLState { > =20 > /* ------------------------------------------------------------------= ---- */ > =20 > -static GLchar texture_blit_vert_src[] =3D > - "\n" > - "#version 300 es\n" > - "\n" > - "in vec2 in_position;\n" > - "in vec2 in_tex_coord;\n" > - "out vec2 ex_tex_coord;\n" > - "\n" > - "void main(void) {\n" > - " gl_Position =3D vec4(in_position.x, in_position.y, 0.0, 1.0);= \n" > - " ex_tex_coord =3D in_tex_coord;\n" > - "}\n" > - "\n"; > - > -static GLchar texture_blit_frag_src[] =3D > - "\n" > - "#version 300 es\n" > - "\n" > - "uniform sampler2D image;\n" > - "in highp vec2 ex_tex_coord;\n" > - "out highp vec4 out_frag_color;\n" > - "\n" > - "void main(void) {\n" > - " out_frag_color =3D texture(image, ex_tex_coord);\n" > - "}\n" > - "\n"; > +#include "shader/texture-blit-vert.h" > +#include "shader/texture-blit-frag.h" > =20 > static void gl_run_texture_blit(ConsoleGLState *gls) > { > diff --git a/ui/shader/texture-blit.frag b/ui/shader/texture-blit.frag > new file mode 100644 > index 0000000..148b1aa > --- /dev/null > +++ b/ui/shader/texture-blit.frag > @@ -0,0 +1,10 @@ > + > +#version 300 es > + > +uniform sampler2D image; > +in highp vec2 ex_tex_coord; > +out highp vec4 out_frag_color; Apart from me not knowing what highp really does because I don't know=20 GLES, I can imagine what it's probably supposed to do (high-precision);=20 do we really need it for these values? (I know, I should've said that in the previous patch already=E2=80=A6) > + > +void main(void) { > + out_frag_color =3D texture(image, ex_tex_coord); > +} > diff --git a/ui/shader/texture-blit.vert b/ui/shader/texture-blit.vert > new file mode 100644 > index 0000000..4ffb5d1 > --- /dev/null > +++ b/ui/shader/texture-blit.vert > @@ -0,0 +1,11 @@ > + > +#version 300 es > + > +in vec2 in_position; > +in vec2 in_tex_coord; > +out vec2 ex_tex_coord; > + > +void main(void) { > + gl_Position =3D vec4(in_position.x, in_position.y, 0.0, 1.0); > + ex_tex_coord =3D in_tex_coord; > +} gl_Position =3D vec4(in_position, 0.0, 1.0); ex_tex_coord =3D vec2(1.0 + in_position.x, 1.0 - in_position.y) * 0.5; *duck* Anyway: Reviewed-by: Max Reitz