<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/pvr2</tt></b></td></tr>
<tr><td><tt><a href="#file1">pvr2.h</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+5</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">36123decfb24 -> 52be323fcab4</td></tr>
<tr class="alt" style=";" ><td><tt><a href="#file2">pvr2mem.c</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+15</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-18</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">36123decfb24 -> 52be323fcab4</td></tr>
<tr><td></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+20</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-18</td><td></td></tr>
</table>
<small id="info" style="color: #888888;" >2 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;" >
Invalidate render buffers when vram32 region is written from DMA / store
queue. Patch from Guinux, thanks!
</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/pvr2</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>pvr2.h</b></big> <small id="info" style="color: #888888;" >36123decfb24 -> 52be323fcab4</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/pvr2.h
+++ lxdream/src/pvr2/pvr2.h
@@ -149,6 +149,11 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > void pvr2_dma_write( sh4addr_t dest, unsigned char *src, uint32_t length );
 
 /**
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ * Write to the linear memory address space (aka 32-bit address space).
+ */
+void pvr2_vram32_write( sh4addr_t dest, unsigned char *src, uint32_t length );
+
+/**
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  * Write to the interleaved memory address space (aka 64-bit address space).
  */
 void pvr2_vram64_write( sh4addr_t dest, unsigned char *src, uint32_t length );
</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>pvr2mem.c</b></big> <small id="info" style="color: #888888;" >36123decfb24 -> 52be323fcab4</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/pvr2/pvr2mem.c
+++ lxdream/src/pvr2/pvr2mem.c
@@ -140,9 +140,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     if( region == 0 ) {
         pvr2_vram64_write( destaddr, src, 32 );
     } else {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        destaddr &= PVR2_RAM_MASK;
-        unsigned char *dest = pvr2_main_ram + destaddr;
-        memcpy( dest, src, 32 );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        pvr2_vram32_write( destaddr, src, 32 );
</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;" >@@ -152,9 +150,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     if( region == 0 ) {
         pvr2_vram64_write( destaddr, src, 32 );
     } else {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        destaddr &= PVR2_RAM_MASK;
-        unsigned char *dest = pvr2_main_ram + destaddr;
-        memcpy( dest, src, 32 );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+        pvr2_vram32_write( destaddr, src, 32 );
</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;" >@@ -203,12 +199,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         if( region == 0 ) {
             pvr2_vram64_write( destaddr, src, count );
         } else {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-            destaddr &= PVR2_RAM_MASK;
-            unsigned char *dest = pvr2_main_ram + destaddr;
-            if( PVR2_RAM_SIZE - destaddr < count ) {
-                count = PVR2_RAM_SIZE - destaddr;
-            }
-            memcpy( dest, src, count );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+            pvr2_vram32_write( destaddr, src, count );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         }
         break;
     case 0x10800000:
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -221,16 +212,22 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         if( region == 0 ) {
             pvr2_vram64_write( destaddr, src, count );
         } else {
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-            destaddr &= PVR2_RAM_MASK;
-            unsigned char *dest = pvr2_main_ram + destaddr;
-            if( PVR2_RAM_SIZE - destaddr < count ) {
-                count = PVR2_RAM_SIZE - destaddr;
-            }
-            memcpy( dest, src, count );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+            pvr2_vram32_write( destaddr, src, count );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         }
     }
 }
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+void pvr2_vram32_write( sh4addr_t destaddr, unsigned char *src, uint32_t length )
+{
+    destaddr &= PVR2_RAM_MASK;
+    pvr2_render_buffer_invalidate( PVR2_RAM_BASE + destaddr, TRUE );
+    unsigned char *dest = pvr2_main_ram + destaddr;
+    if( PVR2_RAM_SIZE - destaddr < length ) {
+        length = PVR2_RAM_SIZE - destaddr;
+    }
+    memcpy( dest, src, length );
+}
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > void pvr2_vram64_write( sh4addr_t destaddr, unsigned char *src, uint32_t length )
 {
     int bank_flag = (destaddr & 0x04) >> 2;
</pre></div>
<center><small>Chaos Theory</small></center>
</div></body></html>