comparison Renderer/Engine/spe/CreateSpan.cc @ 626:ab866bc8a624

64bit mode compatibility on Cell
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 16 Nov 2009 11:37:26 +0900
parents 735f76483bb2
children
comparison
equal deleted inserted replaced
625:60aa3f241b10 626:ab866bc8a624
277 tmp_spack = g->spack; 277 tmp_spack = g->spack;
278 g->spack = g->send_spack; 278 g->spack = g->send_spack;
279 g->send_spack = tmp_spack; 279 g->send_spack = tmp_spack;
280 280
281 smanager->dma_wait(SPAN_PACK_STORE); 281 smanager->dma_wait(SPAN_PACK_STORE);
282 smanager->dma_store(g->send_spack, (uint32)spackList[g->prev_index], 282 smanager->dma_store(g->send_spack, (memaddr)spackList[g->prev_index],
283 sizeof(SpanPack), SPAN_PACK_STORE); 283 sizeof(SpanPack), SPAN_PACK_STORE);
284 284
285 smanager->dma_load(g->spack, (uint32)spackList[index], 285 smanager->dma_load(g->spack, (memaddr)spackList[index],
286 sizeof(SpanPack), SPAN_PACK_LOAD); 286 sizeof(SpanPack), SPAN_PACK_LOAD);
287 g->prev_index = index; 287 g->prev_index = index;
288 smanager->dma_wait(SPAN_PACK_LOAD); 288 smanager->dma_wait(SPAN_PACK_LOAD);
289 } 289 }
290 290
307 tmp_spack = g->spack; 307 tmp_spack = g->spack;
308 g->spack = g->send_spack; 308 g->spack = g->send_spack;
309 g->send_spack = tmp_spack; 309 g->send_spack = tmp_spack;
310 310
311 smanager->dma_wait(SPAN_PACK_STORE); 311 smanager->dma_wait(SPAN_PACK_STORE);
312 smanager->dma_store(g->send_spack, (uint32)spackList[index], 312 smanager->dma_store(g->send_spack, (memaddr)spackList[index],
313 sizeof(SpanPack), SPAN_PACK_STORE); 313 sizeof(SpanPack), SPAN_PACK_STORE);
314 314
315 spackList[index] = next; 315 spackList[index] = next;
316 316
317 smanager->dma_load(g->spack, (uint32)spackList[index], 317 smanager->dma_load(g->spack, (memaddr)spackList[index],
318 sizeof(SpanPack), SPAN_PACK_LOAD); 318 sizeof(SpanPack), SPAN_PACK_LOAD);
319 smanager->dma_wait(SPAN_PACK_LOAD); 319 smanager->dma_wait(SPAN_PACK_LOAD);
320 g->spack->init((index+1)*split_screen_h); 320 g->spack->init((index+1)*split_screen_h);
321 } 321 }
322 } else { 322 } else {
431 = (VertexPackPtr)smanager->allocate(sizeof(VertexPack)); 431 = (VertexPackPtr)smanager->allocate(sizeof(VertexPack));
432 432
433 SpanPackPtr *spackList = (SpanPackPtr*)smanager->get_input(1); 433 SpanPackPtr *spackList = (SpanPackPtr*)smanager->get_input(1);
434 g->spack = (SpanPackPtr)smanager->get_input(2); 434 g->spack = (SpanPackPtr)smanager->get_input(2);
435 g->send_spack = (SpanPackPtr)smanager->allocate(sizeof(SpanPack)); 435 g->send_spack = (SpanPackPtr)smanager->allocate(sizeof(SpanPack));
436 g->prev_index = (int)smanager->get_param(0); 436 g->prev_index = (long)smanager->get_param(0);
437 437
438 // spack と send_spack は swap しながら DMA を繰り返すので 438 // spack と send_spack は swap しながら DMA を繰り返すので
439 // 自分で allocate した send_spack を覚えてないといけない 439 // 自分で allocate した send_spack を覚えてないといけない
440 SpanPackPtr free_spack = g->send_spack; 440 SpanPackPtr free_spack = g->send_spack;
441 441
442 int charge_y_top = smanager->get_param(1); 442 int charge_y_top = (long)smanager->get_param(1);
443 int charge_y_end = smanager->get_param(2); 443 int charge_y_end = (long)smanager->get_param(2);
444 444
445 do { 445 do {
446 __debug_spe("CreateSpan allocated 0x%x\n",(uint32)next_pp); 446 __debug_spe("CreateSpan allocated 0x%x\n",(uint32)next_pp);
447 447
448 if (pp->next != NULL) { 448 if (pp->next != NULL) {
449 smanager->dma_load(next_pp, (uint32)pp->next, 449 smanager->dma_load(next_pp, (memaddr)pp->next,
450 sizeof(PolygonPack), POLYGON_PACK_LOAD); 450 sizeof(PolygonPack), POLYGON_PACK_LOAD);
451 } else { 451 } else {
452 next_pp = NULL; 452 next_pp = NULL;
453 } 453 }
454 454
494 pp = next_pp; 494 pp = next_pp;
495 next_pp = tmp_pp; 495 next_pp = tmp_pp;
496 } while (pp); 496 } while (pp);
497 497
498 smanager->dma_wait(SPAN_PACK_STORE); 498 smanager->dma_wait(SPAN_PACK_STORE);
499 smanager->dma_store(g->spack, (uint32)spackList[g->prev_index], 499 smanager->dma_store(g->spack, (memaddr)spackList[g->prev_index],
500 sizeof(SpanPack), SPAN_PACK_STORE); 500 sizeof(SpanPack), SPAN_PACK_STORE);
501 smanager->dma_wait(SPAN_PACK_STORE); 501 smanager->dma_wait(SPAN_PACK_STORE);
502 __debug_spe("CreateSpan spack_stored 0x%x\n",(uint32)spackList[g->prev_index]); 502 __debug_spe("CreateSpan spack_stored 0x%x\n",(uint32)spackList[g->prev_index]);
503 503
504 // smanager で allocate したのだから free も smanager でやるべき 504 // smanager で allocate したのだから free も smanager でやるべき