Search
lxdream.org :: lxdream/src/pvr2/tileiter.h :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename src/pvr2/tileiter.h
changeset 1153:00e507e4025c
prev1151:e1848ca9b5b1
next1298:d0eb2307b847
author nkeynes
date Thu Feb 23 15:24:47 2012 +1000 (12 years ago)
permissions -rw-r--r--
last change Check for existence of glDrawBuffer (assuming that glReadBuffer will
follow). Note only need to guard the common code in gl_fbo.c
file annotate diff log raw
1.1 --- a/src/pvr2/tileiter.h Wed Dec 08 18:33:23 2010 +1000
1.2 +++ b/src/pvr2/tileiter.h Thu Feb 23 15:24:47 2012 +1000
1.3 @@ -84,36 +84,34 @@
1.4 for(;;){
1.5 uint32_t entry = *it->ptr;
1.6 uint32_t tag = entry >> 29;
1.7 - if( tag < 6 ) {
1.8 - if( tag & 0x04 ) {
1.9 - int vertex_count = tag-1; /* 4 == tri, 5 == quad */
1.10 - int vertex_length = (entry >> 21) & 0x07;
1.11 - if( (entry & 0x01000000) && (pvr2_scene.shadow_mode == SHADOW_FULL) ) {
1.12 - it->poly_size = 5 + (vertex_length<<1) * vertex_count;
1.13 - } else {
1.14 - it->poly_size = 3 + vertex_length * vertex_count;
1.15 - }
1.16 - it->strip_count = ((entry >> 25) & 0x0F);
1.17 - it->poly_addr = entry & 0x001FFFFF;
1.18 + if( tag == 0x07 ) {
1.19 + if( tag & 0x10000000 ) {
1.20 + it->ptr = NULL;
1.21 return;
1.22 } else {
1.23 - /* Other polygon */
1.24 - it->strip_count = 0;
1.25 - it->poly_addr = entry & 0x001FFFFF;
1.26 - return;
1.27 + it->ptr = (uint32_t *)(pvr2_main_ram + (entry&0x007FFFFF));
1.28 + it->poly_addr = -1;
1.29 + entry = *it->ptr;
1.30 }
1.31 + } else if( tag == 6 ) {
1.32 + /* Illegal? Skip */
1.33 + it->ptr++;
1.34 + } else if( tag & 0x04 ) {
1.35 + int vertex_count = tag-1; /* 4 == tri, 5 == quad */
1.36 + int vertex_length = (entry >> 21) & 0x07;
1.37 + if( (entry & 0x01000000) && (pvr2_scene.shadow_mode == SHADOW_FULL) ) {
1.38 + it->poly_size = 5 + (vertex_length<<1) * vertex_count;
1.39 + } else {
1.40 + it->poly_size = 3 + vertex_length * vertex_count;
1.41 + }
1.42 + it->strip_count = ((entry >> 25) & 0x0F);
1.43 + it->poly_addr = entry & 0x001FFFFF;
1.44 + return;
1.45 } else {
1.46 - if( tag == 0x07 ) {
1.47 - if( entry & 0x10000000 ) {
1.48 - it->ptr = NULL;
1.49 - return;
1.50 - } else {
1.51 - it->ptr = (uint32_t *)(pvr2_main_ram + (entry&0x007FFFFF));
1.52 - }
1.53 - } else if( tag == 6 ) {
1.54 - /* Illegal? Skip */
1.55 - it->ptr++;
1.56 - }
1.57 + /* Other polygon */
1.58 + it->strip_count = 0;
1.59 + it->poly_addr = entry & 0x001FFFFF;
1.60 + return;
1.61 }
1.62 }
1.63 }
.