<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><a href="#file1">Makefile.am</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">2b237e3417dd -> 580436b01b6c</td></tr>
<tr class="alt" style=";" ><td><tt><a href="#file2">Makefile.in</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+49</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-32</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">2b237e3417dd -> 580436b01b6c</td></tr>
<tr><td><tt><a href="#file3">display.h</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+43</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">2b237e3417dd -> 580436b01b6c</td></tr>
<tr class="alt" style=";" ><td><tt>drivers/<a href="#file4">video_gl.h</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">2b237e3417dd -> 580436b01b6c</td></tr>
<tr><td><tt>       /<a href="#file5">video_glx.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+1</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">2b237e3417dd -> 580436b01b6c</td></tr>
<tr class="alt" style=";" ><td><tt>       /<a href="#file6">video_nsgl.m</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+1</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">2b237e3417dd -> 580436b01b6c</td></tr>
<tr><td><tt>       /<a href="#file7">video_null.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+10</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">2b237e3417dd -> 580436b01b6c</td></tr>
<tr class="alt" style=";" ><td><tt><a href="#file8">lxdream.h</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+1</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">2b237e3417dd -> 580436b01b6c</td></tr>
<tr><td><tt>pvr2/<a href="#file9">glrender.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+2</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">2b237e3417dd -> 580436b01b6c</td></tr>
<tr class="alt" style=";" ><td><tt>    /<a href="#file10">glutil.c</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+2</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-2</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">2b237e3417dd -> 580436b01b6c</td></tr>
<tr><td><tt>    /<a href="#file11">glutil.h</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">2b237e3417dd -> 580436b01b6c</td></tr>
<tr class="alt" style=";" ><td><tt>    /<a href="#file12">scene.c</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+30</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-82</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">2b237e3417dd -> 580436b01b6c</td></tr>
<tr><td><tt>    /<a href="#file13">scene.h</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+3</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">2b237e3417dd -> 580436b01b6c</td></tr>
<tr><td></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+150</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-120</td><td></td></tr>
</table>
<small id="info" style="color: #888888;" >13 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 vertex array range support, and move buffer operations to gl_vbo.c
</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</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>Makefile.am</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/Makefile.am
+++ lxdream/src/Makefile.am
@@ -65,7 +65,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         vmu/vmuvol.c vmu/vmuvol.h vmu/vmulist.c vmu/vmulist.h \
        display.c display.h dckeysyms.h \
        drivers/audio_null.c drivers/video_null.c \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-   drivers/video_gl.c drivers/video_gl.h drivers/gl_fbo.c \
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     drivers/video_gl.c drivers/video_gl.h drivers/gl_fbo.c <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >drivers/gl_vbo.c </span>\
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >    drivers/serial_unix.c \
        drivers/cdrom/cdrom.h drivers/cdrom/cdrom.c drivers/cdrom/drive.h \
        drivers/cdrom/sector.h drivers/cdrom/sector.c drivers/cdrom/defs.h \
</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</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>Makefile.in</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/Makefile.in
+++ lxdream/src/Makefile.in
@@ -166,7 +166,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >      vmu/vmuvol.h vmu/vmulist.c vmu/vmulist.h display.c display.h \
        dckeysyms.h drivers/audio_null.c drivers/video_null.c \
        drivers/video_gl.c drivers/video_gl.h drivers/gl_fbo.c \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-   drivers/serial_unix.c drivers/cdrom/cdrom.h \
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     drivers/<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >gl_vbo.c drivers/</span>serial_unix.c drivers/cdrom/cdrom.h \
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >    drivers/cdrom/cdrom.c drivers/cdrom/drive.h \
        drivers/cdrom/sector.h drivers/cdrom/sector.c \
        drivers/cdrom/defs.h drivers/cdrom/cd_nrg.c \
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -276,18 +276,19 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >      lxdream-vmulist.$(OBJEXT) lxdream-display.$(OBJEXT) \
        lxdream-audio_null.$(OBJEXT) lxdream-video_null.$(OBJEXT) \
        lxdream-video_gl.$(OBJEXT) lxdream-gl_fbo.$(OBJEXT) \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-   lxdream-serial_unix.$(OBJEXT) lxdream-cdrom.$(OBJEXT) \
-       lxdream-sector.$(OBJEXT) lxdream-cd_nrg.$(OBJEXT) \
-       lxdream-cd_cdi.$(OBJEXT) lxdream-cd_gdi.$(OBJEXT) \
-       lxdream-edc_ecc.$(OBJEXT) lxdream-drive.$(OBJEXT) \
-       lxdream-cd_mmc.$(OBJEXT) lxdream-isofs.$(OBJEXT) \
-       lxdream-isomem.$(OBJEXT) lxdream-hotkeys.$(OBJEXT) \
-       $(am__objects_1) $(am__objects_2) $(am__objects_3) \
-       $(am__objects_4) $(am__objects_5) $(am__objects_6) \
-       $(am__objects_7) $(am__objects_8) $(am__objects_9) \
-       $(am__objects_10) $(am__objects_11) $(am__objects_12) \
-       $(am__objects_13) $(am__objects_14) $(am__objects_15) \
-       $(am__objects_16) $(am__objects_17) $(am__objects_18)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     lxdream-gl_vbo.$(OBJEXT) lxdream-serial_unix.$(OBJEXT) \
+       lxdream-cdrom.$(OBJEXT) lxdream-sector.$(OBJEXT) \
+       lxdream-cd_nrg.$(OBJEXT) lxdream-cd_cdi.$(OBJEXT) \
+       lxdream-cd_gdi.$(OBJEXT) lxdream-edc_ecc.$(OBJEXT) \
+       lxdream-drive.$(OBJEXT) lxdream-cd_mmc.$(OBJEXT) \
+       lxdream-isofs.$(OBJEXT) lxdream-isomem.$(OBJEXT) \
+       lxdream-hotkeys.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
+       $(am__objects_3) $(am__objects_4) $(am__objects_5) \
+       $(am__objects_6) $(am__objects_7) $(am__objects_8) \
+       $(am__objects_9) $(am__objects_10) $(am__objects_11) \
+       $(am__objects_12) $(am__objects_13) $(am__objects_14) \
+       $(am__objects_15) $(am__objects_16) $(am__objects_17) \
+       $(am__objects_18)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > lxdream_OBJECTS = $(am_lxdream_OBJECTS)
 lxdream_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
        $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -455,6 +456,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+PACKAGE_URL = @PACKAGE_URL@
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -586,25 +588,25 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >      gdlist.c gdlist.h vmu/vmuvol.c vmu/vmuvol.h vmu/vmulist.c \
        vmu/vmulist.h display.c display.h dckeysyms.h \
        drivers/audio_null.c drivers/video_null.c drivers/video_gl.c \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-   drivers/video_gl.h drivers/gl_fbo.c drivers/serial_unix.c \
-       drivers/cdrom/cdrom.h drivers/cdrom/cdrom.c \
-       drivers/cdrom/drive.h drivers/cdrom/sector.h \
-       drivers/cdrom/sector.c drivers/cdrom/defs.h \
-       drivers/cdrom/cd_nrg.c drivers/cdrom/cd_cdi.c \
-       drivers/cdrom/cd_gdi.c drivers/cdrom/edc_ecc.c \
-       drivers/cdrom/ecc.h drivers/cdrom/drive.c \
-       drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \
-       drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h \
-       drivers/cdrom/cd_mmc.c drivers/cdrom/isofs.h \
-       drivers/cdrom/isofs.c drivers/cdrom/isomem.c sh4/sh4.def \
-       sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \
-       hotkeys.c hotkeys.h $(am__append_1) $(am__append_2) \
-       $(am__append_4) $(am__append_5) $(am__append_6) \
-       $(am__append_7) $(am__append_8) $(am__append_9) \
-       $(am__append_10) $(am__append_17) $(am__append_19) \
-       $(am__append_21) $(am__append_23) $(am__append_25) \
-       $(am__append_27) $(am__append_28) $(am__append_29) \
-       $(am__append_30)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     drivers/video_gl.h drivers/gl_fbo.c drivers/gl_vbo.c \
+       drivers/serial_unix.c drivers/cdrom/cdrom.h \
+       drivers/cdrom/cdrom.c drivers/cdrom/drive.h \
+       drivers/cdrom/sector.h drivers/cdrom/sector.c \
+       drivers/cdrom/defs.h drivers/cdrom/cd_nrg.c \
+       drivers/cdrom/cd_cdi.c drivers/cdrom/cd_gdi.c \
+       drivers/cdrom/edc_ecc.c drivers/cdrom/ecc.h \
+       drivers/cdrom/drive.c drivers/cdrom/edc_crctable.h \
+       drivers/cdrom/edc_encoder.h drivers/cdrom/edc_l2sq.h \
+       drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \
+       drivers/cdrom/isofs.h drivers/cdrom/isofs.c \
+       drivers/cdrom/isomem.c sh4/sh4.def sh4/sh4core.in \
+       sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in hotkeys.c \
+       hotkeys.h $(am__append_1) $(am__append_2) $(am__append_4) \
+       $(am__append_5) $(am__append_6) $(am__append_7) \
+       $(am__append_8) $(am__append_9) $(am__append_10) \
+       $(am__append_17) $(am__append_19) $(am__append_21) \
+       $(am__append_23) $(am__append_25) $(am__append_27) \
+       $(am__append_28) $(am__append_29) $(am__append_30)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > lxdream_CPPFLAGS = @LXDREAMCPPFLAGS@
 @BUILD_SH4X86_TRUE@test_testsh4x86_LDADD = @LXDREAM_LIBS@ @GLIB_LIBS@ @GTK_LIBS@ @LIBPNG_LIBS@
 @BUILD_SH4X86_TRUE@test_testsh4x86_CPPFLAGS = @LXDREAMCPPFLAGS@
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -819,6 +821,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-gdrom.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-gl_fbo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-gl_sl.Po@am__quote@
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-gl_vbo.Po@am__quote@
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-glrender.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-glutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-gtk_cfg.Po@am__quote@
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -1932,6 +1935,20 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-gl_fbo.obj `if test -f 'drivers/gl_fbo.c'; then $(CYGPATH_W) 'drivers/gl_fbo.c'; else $(CYGPATH_W) '$(srcdir)/drivers/gl_fbo.c'; fi`
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+lxdream-gl_vbo.o: drivers/gl_vbo.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-gl_vbo.o -MD -MP -MF "$(DEPDIR)/lxdream-gl_vbo.Tpo" -c -o lxdream-gl_vbo.o `test -f 'drivers/gl_vbo.c' || echo '$(srcdir)/'`drivers/gl_vbo.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/lxdream-gl_vbo.Tpo" "$(DEPDIR)/lxdream-gl_vbo.Po"; else rm -f "$(DEPDIR)/lxdream-gl_vbo.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/gl_vbo.c' object='lxdream-gl_vbo.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-gl_vbo.o `test -f 'drivers/gl_vbo.c' || echo '$(srcdir)/'`drivers/gl_vbo.c
+
+lxdream-gl_vbo.obj: drivers/gl_vbo.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-gl_vbo.obj -MD -MP -MF "$(DEPDIR)/lxdream-gl_vbo.Tpo" -c -o lxdream-gl_vbo.obj `if test -f 'drivers/gl_vbo.c'; then $(CYGPATH_W) 'drivers/gl_vbo.c'; else $(CYGPATH_W) '$(srcdir)/drivers/gl_vbo.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/lxdream-gl_vbo.Tpo" "$(DEPDIR)/lxdream-gl_vbo.Po"; else rm -f "$(DEPDIR)/lxdream-gl_vbo.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/gl_vbo.c' object='lxdream-gl_vbo.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-gl_vbo.obj `if test -f 'drivers/gl_vbo.c'; then $(CYGPATH_W) 'drivers/gl_vbo.c'; else $(CYGPATH_W) '$(srcdir)/drivers/gl_vbo.c'; fi`
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > lxdream-serial_unix.o: drivers/serial_unix.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-serial_unix.o -MD -MP -MF "$(DEPDIR)/lxdream-serial_unix.Tpo" -c -o lxdream-serial_unix.o `test -f 'drivers/serial_unix.c' || echo '$(srcdir)/'`drivers/serial_unix.c; \
 @am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/lxdream-serial_unix.Tpo" "$(DEPDIR)/lxdream-serial_unix.Po"; else rm -f "$(DEPDIR)/lxdream-serial_unix.Tpo"; exit 1; fi
</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</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>display.h</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/display.h
+++ lxdream/src/display.h
@@ -108,6 +108,43 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     int stencil_bits; /* 0 = no stencil buffer */
 };
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+struct vertex_buffer {
+    /**
+     * Map the buffer into the host address space (if necessary) in preparation
+     * for filling the buffer. This also implies a fence operation.
+     * @param buf previously allocated buffer
+     * @param size number of bytes of the buffer actually to be used. The buffer
+     * will be resized if necessary.
+     * @return a pointer to the start of the buffer.
+     */
+    void *(*map)(vertex_buffer_t buf, uint32_t size);
+
+    /**
+     * Unmap the buffer, after the vertex data is written.
+     * @return the buffer base to use for gl*Pointer calls
+     */
+    void *(*unmap)(vertex_buffer_t buf);
+
+    /**
+     * Mark the buffer as finished, indicating that the vertex data is no
+     * longer required (ie rendering is complete).
+     */
+    void (*finished)(vertex_buffer_t buf);
+
+    /**
+     * Delete the buffer and all associated resources.
+     */
+    void (*destroy)(vertex_buffer_t buf);
+
+    /* Private data */
+    void *data;
+    GLuint id;
+    uint32_t capacity;
+    uint32_t mapped_size;
+    GLuint fence;
+};
+
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /**
  * Core video driver - exports function to setup a GL context, as well as handle
  * keyboard input and display resultant output.
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -213,11 +250,17 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >             int rowstride, int format );
 
     /**
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     * Create a new vertex buffer
+     */
+    vertex_buffer_t (*create_vertex_buffer)( );
+
+    /**
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >      * Dump driver-specific information about the implementation to the given stream
      */
     void (*print_info)( FILE *out );
 
     struct display_capabilities capabilities;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > } *display_driver_t;
 
 /**
</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/drivers</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>video_gl.h</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/video_gl.h
+++ lxdream/src/drivers/video_gl.h
@@ -70,6 +70,12 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > void gl_fbo_init( display_driver_t driver );
 void gl_fbo_detach();
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+/** VBO/VAR handling (gl_vbo.c) ******/
+void gl_vbo_init( display_driver_t driver );
+
+/* Set the fallback vertex buffer handling, for drivers with no GL */
+void gl_vbo_fallback_init( display_driver_t driver );
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #ifdef __cplusplus
 }
 #endif
</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/drivers</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>video_glx.c</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/video_glx.c
+++ lxdream/src/drivers/video_glx.c
@@ -243,6 +243,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         video_glx_shutdown();
         return FALSE;
     }
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    gl_vbo_init(driver);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     return TRUE;
 }
 
</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/drivers</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>video_nsgl.m</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/video_nsgl.m
+++ lxdream/src/drivers/video_nsgl.m
@@ -52,6 +52,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         ERROR( "FBO not supported" );
         return FALSE;
     }
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    gl_vbo_init(driver);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
     return TRUE;
 }
</pre></div>
<hr /><a name="file7" /><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_null.c</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/video_null.c
+++ lxdream/src/drivers/video_null.c
@@ -17,6 +17,9 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  */
 
 #include "display.h"
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#include "drivers/video_gl.h"
+
+static gboolean video_null_init( void );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 static render_buffer_t video_null_create_render_buffer( uint32_t hres, uint32_t vres, GLuint tex_id )
 {
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -63,7 +66,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > struct display_driver display_null_driver = { 
         "null",
         N_("Null (no video) driver"),
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        NULL,
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        video_null_init,
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         NULL,
         NULL,
         NULL, 
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -78,3 +81,9 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         video_null_swap_buffers,
         video_null_read_render_buffer,
         NULL };
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+
+static gboolean video_null_init( void )
+{
+    gl_vbo_fallback_init(&display_null_driver);
+    return TRUE;
+}
</pre></div>
<hr /><a name="file8" /><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</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>lxdream.h</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/lxdream.h
+++ lxdream/src/lxdream.h
@@ -61,6 +61,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 typedef struct render_buffer *render_buffer_t;
 typedef struct frame_buffer *frame_buffer_t;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+typedef struct vertex_buffer *vertex_buffer_t;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 /*************************** Logging ****************************/
 
</pre></div>
<hr /><a name="file9" /><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;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/glrender.c
+++ lxdream/src/pvr2/glrender.c
@@ -518,6 +518,8 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     glDisable( GL_FOG );
     glsl_clear_shader();
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    pvr2_scene_finished();
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     gettimeofday( &end_tv, NULL );
     ms = (end_tv.tv_sec - tex_tv.tv_sec) * 1000 +
     (end_tv.tv_usec - tex_tv.tv_usec)/1000;
</pre></div>
<hr /><a name="file10" /><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>glutil.c</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/glutil.c
+++ lxdream/src/pvr2/glutil.c
@@ -187,7 +187,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         } else {
             WARN( "GL error: %x (%s)\n", err, s );
         }
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        return <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >TRU</span>E;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        return <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >FALS</span>E;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     }
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    return <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >FALS</span>E;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    return <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >TRU</span>E;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > }
</pre></div>
<hr /><a name="file11" /><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>glutil.h</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/glutil.h
+++ lxdream/src/pvr2/glutil.h
@@ -42,7 +42,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /**
  * Check for a GL error and print a message if there is one
  * @param context If not null, a string to be printed along side an error message
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >- * @return TRUE if there was an error, otherwise FALSE
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ * @return FALSE if there was an error, otherwise TRUE
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  */
 gboolean gl_check_error( const char *context );
 /**
</pre></div>
<hr /><a name="file12" /><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;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/scene.c
+++ lxdream/src/pvr2/scene.c
@@ -2,7 +2,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  * $Id$
  *
  * Manage the internal vertex/polygon buffers and scene data structure.
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >- * Where possible this uses VBOs for the vertex + index data.
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  *
  * Copyright (c) 2005 Nathan Keynes.
  *
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -69,33 +68,33 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > }
 
 struct pvr2_scene_struct pvr2_scene;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static float scene_shadow_intensity = 0.0;
+static vertex_buffer_t vbuf = NULL;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-static gboolean vbo_init = FALSE;
-static float scene_shadow_intensity = 0.0;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static void vertex_buffer_map()
+{
+    // Allow 8 vertexes for the background (4+4)
+    uint32_t size = (pvr2_scene.vertex_count + 8) * sizeof(struct vertex_struct);
+    pvr2_scene.vertex_array = vbuf->map(vbuf, size);
+}
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-#ifdef ENABLE_VERTEX_BUFFER
-static gboolean vbo_supported = FALSE;
-#endif
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static void vertex_buffer_unmap()
+{
+    pvr2_scene.vertex_array = vbuf->unmap(vbuf);
+}
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 /**
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >- * Test for VBO support, and allocate all the system memory needed for the
- * temporary structures. GL context must have been initialized before this
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ * Allocate vertex buffer + temporary structures. GL context must have been initialized before this
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  * point.
  */
 void pvr2_scene_init()
 {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    if( !vbo_init ) {
-#ifdef ENABLE_VERTEX_BUFFER
-        if( isGLVertexBufferSupported() ) {
-            vbo_supported = TRUE;
-            pvr2_scene.vbo_id = 1;
-        }
-#endif
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    if( vbuf == NULL ) {
+        vbuf = display_driver->create_vertex_buffer();
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         pvr2_scene.vertex_array = NULL;
         pvr2_scene.vertex_array_size = 0;
         pvr2_scene.poly_array = g_malloc( MAX_POLY_BUFFER_SIZE );
         pvr2_scene.buf_to_poly_map = g_malloc0( BUF_POLY_MAP_SIZE );
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        vbo_init = TRUE;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     }
 }
 
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -110,72 +109,16 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     }
     pvr2_scene.poly_count = 0;
     pvr2_scene.vertex_count = 0;
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-}
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" > </span>}
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 void pvr2_scene_shutdown()
 {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-#ifdef ENABLE_VERTEX_BUFFER
-    if( vbo_supported ) {
-        glBindBufferARB( GL_ARRAY_BUFFER_ARB, 0 );
-        glDeleteBuffersARB( 1, &pvr2_scene.vbo_id );
-        pvr2_scene.vbo_id = 0;
-    } else {
-#endif
-        g_free( pvr2_scene.vertex_array );
-        pvr2_scene.vertex_array = NULL;
-#ifdef ENABLE_VERTEX_BUFFER
-    }
-#endif
-
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    vbuf->destroy(vbuf);
+    vbuf = NULL;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     g_free( pvr2_scene.poly_array );
     pvr2_scene.poly_array = NULL;
     g_free( pvr2_scene.buf_to_poly_map );
     pvr2_scene.buf_to_poly_map = NULL;
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    vbo_init = FALSE;
-}
-
-void *vertex_buffer_map()
-{
-    // Allow 8 vertexes for the background (4+4)
-    uint32_t size = (pvr2_scene.vertex_count + 8) * sizeof(struct vertex_struct);
-#ifdef ENABLE_VERTEX_BUFFER
-    if( vbo_supported ) {
-        glGetError();
-        glBindBufferARB( GL_ARRAY_BUFFER_ARB, pvr2_scene.vbo_id );
-        if( size > pvr2_scene.vertex_array_size ) {
-            glBufferDataARB( GL_ARRAY_BUFFER_ARB, size, NULL, GL_DYNAMIC_DRAW_ARB );
-            int status = glGetError();
-            if( status != 0 ) {
-                fprintf( stderr, "Error %08X allocating vertex buffer\n", status );
-                abort();
-            }
-            pvr2_scene.vertex_array_size = size;
-        }
-        pvr2_scene.vertex_array = glMapBufferARB( GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB );
-        assert(pvr2_scene.vertex_array != NULL );
-    } else {
-#endif
-        if( size > pvr2_scene.vertex_array_size ) {
-            pvr2_scene.vertex_array = g_realloc( pvr2_scene.vertex_array, size );
-        }
-#ifdef ENABLE_VERTEX_BUFFER
-    }
-#endif
-    return pvr2_scene.vertex_array;
-}
-
-gboolean vertex_buffer_unmap()
-{
-#ifdef ENABLE_VERTEX_BUFFER
-    if( vbo_supported ) {
-        pvr2_scene.vertex_array = NULL;
-        return glUnmapBufferARB( GL_ARRAY_BUFFER_ARB );
-    } else {
-        return TRUE;
-    }
-#else
-    return TRUE;
-#endif
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > }
 
 static struct polygon_struct *scene_add_polygon( pvraddr_t poly_idx, int vertex_count,
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -252,7 +195,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  * @param modify_offset Offset in 32-bit words to the tex/color data. 0 for
  *        the normal vertex, half the vertex length for the modified vertex.
  */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-static void <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >pvr2_decode_render</span>_vertex( struct vertex_struct *vert, uint32_t poly1,
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static void <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >scene_decode</span>_vertex( struct vertex_struct *vert, uint32_t poly1,
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                                        uint32_t poly2, uint32_t tex, uint32_t *pvr2_data,
                                        int modify_offset )
 {
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -560,7 +503,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         assert( poly != NULL );
         assert( pvr2_scene.vertex_index + poly->vertex_count <= pvr2_scene.vertex_count );
         for( i=0; i<poly->vertex_count; i++ ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-            <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >pvr2_decode_render</span>_vertex( &pvr2_scene.vertex_array[pvr2_scene.vertex_index++], context[0], context[1], context[2], ptr, 0 );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+            <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >scene_decode</span>_vertex( &pvr2_scene.vertex_array[pvr2_scene.vertex_index++], context[0], context[1], context[2], ptr, 0 );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >             ptr += vertex_length;
         }
         if( is_modified ) {
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -570,7 +513,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                 int mod_offset = (vertex_length - 3)>>1;
                 ptr = &pvr2_scene.pvr2_pbuf[poly_idx] + 5;
                 for( i=0; i<poly->vertex_count; i++ ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-                    <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >pvr2_decode_render</span>_vertex( &pvr2_scene.vertex_array[pvr2_scene.vertex_index++], context[0], context[3], context[4], ptr, mod_offset );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+                    <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >scene_decode</span>_vertex( &pvr2_scene.vertex_array[pvr2_scene.vertex_index++], context[0], context[3], context[4], ptr, mod_offset );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                     ptr += vertex_length;
                 }
             } else {
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -601,7 +544,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         ptr += (is_modified == SHADOW_FULL ? 5 : 3 );
         poly->vertex_index = pvr2_scene.vertex_index;
         for( i=0; i<4; i++ ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-            <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >pvr2_decode_render</span>_vertex( &quad[i], context[0], context[1], context[2], ptr, 0 );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+            <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >scene_decode</span>_vertex( &quad[i], context[0], context[1], context[2], ptr, 0 );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >             ptr += vertex_length;
         }
         scene_compute_vertexes( &quad[3], 1, &quad[0], !POLY1_GOURAUD_SHADED(context[0]) );
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -618,7 +561,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                 int mod_offset = (vertex_length - 3)>>1;
                 ptr = &pvr2_scene.pvr2_pbuf[poly_idx] + 5;
                 for( i=0; i<4; i++ ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-                    <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >pvr2_decode_render</span>_vertex( &quad[4], context[0], context[3], context[4], ptr, mod_offset );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+                    <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >scene_decode</span>_vertex( &quad[4], context[0], context[3], context[4], ptr, mod_offset );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                     ptr += vertex_length;
                 }
                 scene_compute_vertexes( &quad[3], 1, &quad[0], !POLY1_GOURAUD_SHADED(context[0]) );
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -788,7 +731,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     struct vertex_struct base_vertexes[3];
     uint32_t *ptr = context + context_length;
     for( i=0; i<3; i++ ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >pvr2_decode_render</span>_vertex( &base_vertexes[i], context[0], context[1], context[2],
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >scene_decode</span>_vertex( &base_vertexes[i], context[0], context[1], context[2],
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                 ptr, 0 );
         ptr += vertex_length;
     }
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -803,7 +746,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         int mod_offset = (vertex_length - 3)>>1;
         ptr = context + context_length;
         for( i=0; i<3; i++ ) {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-            <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >pvr2_decode_render</span>_vertex( &base_vertexes[i], context[0], context[3], context[4],
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+            <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >scene_decode</span>_vertex( &base_vertexes[i], context[0], context[3], context[4],
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >                     ptr, mod_offset );
             ptr += vertex_length;
         }
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -937,6 +880,11 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     vertex_buffer_unmap();
 }
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+void pvr2_scene_finished( )
+{
+    vbuf->finished(vbuf);
+}
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /**
  * Dump the current scene to file in a (mostly) human readable form
  */
</pre></div>
<hr /><a name="file13" /><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.h</b></big> <small id="info" style="color: #888888;" >2b237e3417dd -> 580436b01b6c</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/scene.h
+++ lxdream/src/pvr2/scene.h
@@ -36,7 +36,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 struct vertex_struct {
     float u,v,r,tex_mode; /* tex-coord quad */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    float x,y,z;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    float x,y,z<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >,w</span>;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     float rgba[4];
     float offset_rgba[4];
 };
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -54,6 +54,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 void pvr2_scene_init(void);
 void pvr2_scene_read(void);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+void pvr2_scene_finished(void);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > void pvr2_scene_shutdown();
 
 uint32_t pvr2_scene_buffer_width();
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -72,6 +73,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  */
 #define MAX_VERTEXES 262144
 #define MAX_VERTEX_BUFFER_SIZE (MAX_VERTEXES*sizeof(struct vertex_struct))
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#define MIN_VERTEX_BUFFER_SIZE (2024*1024)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 /**
  * Maximum polygons - smallest is 1 polygon in 48 bytes, giving
</pre></div>
<center><small>Chaos Theory</small></center>
</div></body></html>