Mercurial > hg > Members > kono > Cerium
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 でやるべき |