<html>
<body>
  <div id="body" style="background-color:#ffffff;" >
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head" style="border-bottom-width:1px;border-bottom-style:solid;" ><td class="headtd" style="padding:0;padding-top:.2em;" colspan="4">Commit in <b><tt>lxdream/src</tt></b></td></tr>
<tr><td><tt>drivers/<a href="#file1">video_gl.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+29</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-4</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">be3121267597 -> 190df8a791ca</td></tr>
<tr class="alt" style=";" ><td><tt>pvr2/<a href="#file2">gl_sl.c</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+6</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">be3121267597 -> 190df8a791ca</td></tr>
<tr><td><tt>    /<a href="#file3">glrender.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">be3121267597 -> 190df8a791ca</td></tr>
<tr class="alt" style=";" ><td><tt>    /<a href="#file4">scene.c</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+9</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">be3121267597 -> 190df8a791ca</td></tr>
<tr><td><tt>    /<a href="#file5">shaders.glsl</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+34</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">be3121267597 -> 190df8a791ca</td></tr>
<tr class="alt" style=";" ><td><tt>tools/<a href="#file6">genglsl.c</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+3</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">be3121267597 -> 190df8a791ca</td></tr>
<tr><td></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+82</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-6</td><td></td></tr>
</table>
<small id="info" style="color: #888888;" >6 modified files</small><br />
<pre class="comment" style="white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;padding:4px;border:1px dashed #000000;background-color:#ffffdd;" >
Implement display output for the GLES2 case (no fixed function
rendering)
</pre>
<hr /><a name="file1" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/drivers</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>video_gl.c</b></big> <small id="info" style="color: #888888;" >be3121267597 -> 190df8a791ca</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/video_gl.c
+++ lxdream/src/drivers/video_gl.c
@@ -21,6 +21,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #include "display.h"
 #include "pvr2/pvr2.h"
 #include "pvr2/glutil.h"
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#include "pvr2/shaders.h"
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #include "drivers/video_gl.h"
 
 /* FIXME: Need to actually handle this case */
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -32,7 +33,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > struct video_vertex {
     float x,y;
     float u,v;
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    float r,g,b;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    float r,g,b<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >,a</span>;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > };
 
 static struct video_box_t {
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -98,7 +99,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /**
  * Setup the gl context for writes to the display output.
  */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-void gl_framebuffer_setup()
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >static </span>void gl_framebuffer_setup()
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > {
     glViewport( 0, 0, video_width, video_height );
     glLoadMatrixf(video_box.viewMatrix);
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -112,10 +113,28 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     glEnableClientState( GL_TEXTURE_COORD_ARRAY );
 }
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static void gl_framebuffer_cleanup()
+{
+    glDisableClientState( GL_VERTEX_ARRAY );
+    glDisableClientState( GL_COLOR_ARRAY );
+    glDisableClientState( GL_TEXTURE_COORD_ARRAY );
+}
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #else
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-void gl_framebuffer_setup()
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >static </span>void gl_framebuffer_setup()
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-   /* TODO */
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    glViewport( 0, 0, video_width, video_height );
+    glBlendFunc( GL_ONE, GL_ZERO );
+    glsl_use_basic_shader();
+    glsl_set_basic_shader_view_matrix(video_box.viewMatrix);
+    glsl_set_basic_shader_in_vertex_pointer(&video_box.gap1[0].x, sizeof(struct video_vertex));
+    glsl_set_basic_shader_in_colour_pointer(&video_box.gap1[0].r, sizeof(struct video_vertex));
+    glsl_set_basic_shader_in_texcoord_pointer(&video_box.gap1[0].u, sizeof(struct video_vertex));
+    glsl_set_basic_shader_primary_texture(0);
+}
+
+static void gl_framebuffer_cleanup()
+{
+    glsl_clear_shader();
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > }
 #endif
 
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -154,6 +173,9 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 void gl_texture_window( int width, int height, int tex_id, gboolean inverted )
 {
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    /* Set video box tex alpha to 1 */
+    video_box.video_view[0].a = video_box.video_view[1].a = video_box.video_view[2].a = video_box.video_view[3].a = 1;
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     /* Reset display parameters */
     gl_framebuffer_setup();
     glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -165,6 +187,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     glDrawArrays(GL_TRIANGLE_STRIP, inverted ? 12 : 8, 4);
     glDisable(GL_TEXTURE_2D);
     glFlush();
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    gl_framebuffer_cleanup();
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > }
 
 gboolean gl_load_frame_buffer( frame_buffer_t frame, int tex_id )
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -188,6 +211,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     video_box.video_view[0].r = ((float)(((colour >> 16) & 0xFF) + 1)) / 256.0;
     video_box.video_view[0].g = ((float)(((colour >> 8) & 0xFF) + 1)) / 256.0;
     video_box.video_view[0].b = ((float)((colour & 0xFF) + 1)) / 256.0;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    video_box.video_view[0].a = 0;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     memcpy( &video_box.video_view[1].r, &video_box.video_view[0].r, sizeof(float)*3 );
     memcpy( &video_box.video_view[2].r, &video_box.video_view[0].r, sizeof(float)*3 );
     memcpy( &video_box.video_view[3].r, &video_box.video_view[0].r, sizeof(float)*3 );
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -198,6 +222,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     glDrawArrays(GL_TRIANGLE_STRIP, 4, 4);
     glDrawArrays(GL_TRIANGLE_STRIP, 8, 4);
     glFlush();
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    gl_framebuffer_cleanup();
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > }
 
 /**
</pre></div>
<hr /><a name="file2" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/pvr2</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>gl_sl.c</b></big> <small id="info" style="color: #888888;" >be3121267597 -> 190df8a791ca</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/gl_sl.c
+++ lxdream/src/pvr2/gl_sl.c
@@ -168,9 +168,11 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define glsl_set_uniform_sampler1D(id,v) glUniform1iARB(id,v)
 #define glsl_set_uniform_sampler2D(id,v) glUniform1iARB(id,v)
 #define glsl_set_uniform_float(id,v) glUniform1fARB(id,v)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define glsl_set_uniform_vec2(id,v) glUniform2fvARB(id,1,v)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define glsl_set_uniform_vec3(id,v) glUniform3fvARB(id,1,v)
 #define glsl_set_uniform_vec4(id,v) glUniform4fvARB(id,1,v)
 #define glsl_set_uniform_mat4(id,v) glUniformMatrix4fvARB(id,1,GL_FALSE,v)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define glsl_set_attrib_vec2(id,stride,v) glVertexAttribPointerARB(id, 2, GL_FLOAT, GL_FALSE, stride, v)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define glsl_set_attrib_vec3(id,stride,v) glVertexAttribPointerARB(id, 3, GL_FLOAT, GL_FALSE, stride, v)
 #define glsl_set_attrib_vec4(id,stride,v) glVertexAttribPointerARB(id, 4, GL_FLOAT, GL_FALSE, stride, v)
 #define glsl_enable_attrib(id) glEnableVertexAttribArrayARB(id)
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -296,9 +298,11 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define glsl_set_uniform_sampler1D(id,v) glUniform1i(id,v)
 #define glsl_set_uniform_sampler2D(id,v) glUniform1i(id,v)
 #define glsl_set_uniform_float(id,v) glUniform1f(id,v)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define glsl_set_uniform_vec2(id,v) glUniform2fv(id,1,v)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define glsl_set_uniform_vec3(id,v) glUniform3fv(id,1,v)
 #define glsl_set_uniform_vec4(id,v) glUniform4fv(id,1,v)
 #define glsl_set_uniform_mat4(id,v) glUniformMatrix4fv(id,1,GL_FALSE,v)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define glsl_set_attrib_vec2(id,stride,v) glVertexAttribPointer(id, 2, GL_FLOAT, GL_FALSE, stride, v)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define glsl_set_attrib_vec3(id,stride,v) glVertexAttribPointer(id, 3, GL_FLOAT, GL_FALSE, stride, v)
 #define glsl_set_attrib_vec4(id,stride,v) glVertexAttribPointer(id, 4, GL_FLOAT, GL_FALSE, stride, v)
 #define glsl_enable_attrib(id) glEnableVertexAttribArray(id)
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -356,9 +360,11 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define glsl_set_uniform_sampler1D(id,v)
 #define glsl_set_uniform_sampler2D(id,v)
 #define glsl_set_uniform_float(id,v)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define glsl_set_uniform_vec2(id,v)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define glsl_set_uniform_vec3(id,v)
 #define glsl_set_uniform_vec4(id,v)
 #define glsl_set_uniform_mat4(id,v)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define glsl_set_attrib_vec2(id,stride,v)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #define glsl_set_attrib_vec3(id,stride,v)
 #define glsl_set_attrib_vec4(id,stride,v)
 #define glsl_enable_attrib(id)
</pre></div>
<hr /><a name="file3" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/pvr2</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>glrender.c</b></big> <small id="info" style="color: #888888;" >be3121267597 -> 190df8a791ca</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/glrender.c
+++ lxdream/src/pvr2/glrender.c
@@ -137,7 +137,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     }
 #endif
 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-#ifdef HAVE_OPENGL_FIXEDFUNC
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#if<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >n</span>def HAVE_OPENGL_FIXEDFUNC
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     /* Setup defaults for perspective correction + matrices */
     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
     glMatrixMode(GL_MODELVIEW);
</pre></div>
<hr /><a name="file4" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/pvr2</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>scene.c</b></big> <small id="info" style="color: #888888;" >be3121267597 -> 190df8a791ca</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/scene.c
+++ lxdream/src/pvr2/scene.c
@@ -552,6 +552,11 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index], quad, sizeof(struct vertex_struct)*2 );
         memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index+2], &quad[3], sizeof(struct vertex_struct) );
         memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index+3], &quad[2], sizeof(struct vertex_struct) );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        if( !POLY1_GOURAUD_SHADED(context[0]) ) {
+            memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index].rgba, &pvr2_scene.vertex_array[pvr2_scene.vertex_index+3].rgba, sizeof(float)*8 );
+            memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index+1].rgba, &pvr2_scene.vertex_array[pvr2_scene.vertex_index+3].rgba, sizeof(float)*8 );
+        }
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         pvr2_scene.vertex_index += 4;
 
         if( is_modified ) {
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -568,6 +573,10 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                 memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index], quad, sizeof(struct vertex_struct)*2 );
                 memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index+2], &quad[3], sizeof(struct vertex_struct) );
                 memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index+3], &quad[2], sizeof(struct vertex_struct) );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+                if( !POLY1_GOURAUD_SHADED(context[0]) ) {
+                    memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index].rgba, &pvr2_scene.vertex_array[pvr2_scene.vertex_index+3].rgba, sizeof(float)*8 );
+                    memcpy( &pvr2_scene.vertex_array[pvr2_scene.vertex_index+1].rgba, &pvr2_scene.vertex_array[pvr2_scene.vertex_index+3].rgba, sizeof(float)*8 );
+                }
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >             } else {
                 scene_add_cheap_shadow_vertexes( &pvr2_scene.vertex_array[poly->vertex_index], 
                         &pvr2_scene.vertex_array[poly->mod_vertex_index], poly->vertex_count );
</pre></div>
<hr /><a name="file5" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/pvr2</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>shaders.glsl</b></big> <small id="info" style="color: #888888;" >be3121267597 -> 190df8a791ca</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/shaders.glsl
+++ lxdream/src/pvr2/shaders.glsl
@@ -63,7 +63,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  *   float gl_FragDepth;
 
  */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#include "../config.h"
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 #vertex DEFAULT_VERTEX_SHADER
 uniform mat4 view_matrix;
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -130,3 +130,36 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > }
 
 #program pvr2_shader = DEFAULT_VERTEX_SHADER DEFAULT_FRAGMENT_SHADER
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+
+#ifndef HAVE_OPENGL_FIXEDFUNC
+/* In this case we also need a basic shader to actually display the output */
+#vertex BASIC_VERTEX_SHADER
+uniform mat4 view_matrix;
+attribute vec2 in_vertex;
+attribute vec4 in_colour;
+attribute vec2 in_texcoord; /* uv = coord, z = palette, w = mode */
+
+varying vec4 frag_colour;
+varying vec2 frag_texcoord;
+void main()
+{
+    gl_Position = view_matrix * vec4(in_vertex.x,in_vertex.y,0,1);
+    frag_colour = in_colour;
+    frag_texcoord = in_texcoord;
+}
+
+#fragment BASIC_FRAGMENT_SHADER
+
+uniform sampler2D primary_texture;
+varying vec4 frag_colour;
+varying vec2 frag_texcoord;
+
+void main()
+{
+       vec4 tex = texture2D( primary_texture, frag_texcoord.xy );
+        gl_FragColor.rgb = mix( frag_colour.rgb, tex.rgb, frag_colour.a );
+        gl_FragDepth = gl_FragCoord.z;
+}
+
+#program basic_shader = BASIC_VERTEX_SHADER BASIC_FRAGMENT_SHADER
+#endif
</pre></div>
<hr /><a name="file6" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/tools</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>genglsl.c</b></big> <small id="info" style="color: #888888;" >be3121267597 -> 190df8a791ca</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/tools/genglsl.c
+++ lxdream/src/tools/genglsl.c
@@ -382,6 +382,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >             } else {
                 fprintf( f, "void glsl_set_%s_%s_pointer(%s ptr, GLint stride); /* attribute %s %s */ \n", program->name, var->name, getCType(var->type,var->uniform), var->type, var->name);
                 if( strcmp(var->type,"vec4") == 0 ) { /* Special case */
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+                    fprintf( f, "void glsl_set_%s_%s_vec2_pointer(%s ptr, GLint stride); /* attribute %s %s */ \n", program->name, var->name, getCType(var->type,var->uniform), var->type, var->name);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                     fprintf( f, "void glsl_set_%s_%s_vec3_pointer(%s ptr, GLint stride); /* attribute %s %s */ \n", program->name, var->name, getCType(var->type,var->uniform), var->type, var->name);
                 }
             }
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -472,6 +473,8 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                 if( strcmp(var->type,"vec4") == 0 ) { /* Special case to load vec3 arrays into a vec4 */
                     fprintf( f, "void glsl_set_%s_%s_vec3_pointer(%s ptr, GLsizei stride){ /* attribute %s %s */ \n", program->name, var->name, getCType(var->type,var->uniform), var->type, var->name);
                     fprintf( f, "    glsl_set_attrib_vec3(var_%s_%s_loc,stride, ptr);\n}\n", program->name, var->name );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+                    fprintf( f, "void glsl_set_%s_%s_vec2_pointer(%s ptr, GLsizei stride){ /* attribute %s %s */ \n", program->name, var->name, getCType(var->type,var->uniform), var->type, var->name);
+                    fprintf( f, "    glsl_set_attrib_vec2(var_%s_%s_loc,stride, ptr);\n}\n", program->name, var->name );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                 }
             }
         }
</pre></div>
<center><small>Chaos Theory</small></center>
</div></body></html>