Mercurial > hg > Members > kono > Cerium
comparison Renderer/Engine/viewer.cc @ 625:60aa3f241b10
64bit mode worked on Mac OS X.
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 16 Nov 2009 10:59:55 +0900 |
parents | f21603a335aa |
children | dbe137505f2e |
comparison
equal
deleted
inserted
replaced
624:c7b5c99252ad | 625:60aa3f241b10 |
---|---|
236 static void | 236 static void |
237 post2runMoveDrawLoop(SchedTask *m, void *viewer_, void *arg) | 237 post2runMoveDrawLoop(SchedTask *m, void *viewer_, void *arg) |
238 { | 238 { |
239 Viewer *viewer = (Viewer*)viewer_; | 239 Viewer *viewer = (Viewer*)viewer_; |
240 | 240 |
241 // 同じ PPE 上なので sgroot(ポインタ) を add_param で送る。 | 241 // 同じ PPE 上なので sgroot(ポインタ) を set_param で送る。 |
242 //HTaskPtr send_key_task = viewer->manager->create_task(SendKey); | 242 //HTaskPtr send_key_task = viewer->manager->create_task(SendKey); |
243 //send_key_task->add_param((int)sgroot); | 243 //send_key_task->set_param((int)sgroot); |
244 // set input data -> viewer keyPtr | 244 // set input data -> viewer keyPtr |
245 viewer->getKey(); | 245 viewer->getKey(); |
246 HTaskPtr update_key = viewer->manager->create_task(UpdateKey); | 246 HTaskPtr update_key = viewer->manager->create_task(UpdateKey); |
247 update_key->add_inData(viewer->keyPtr, sizeof(key_stat)); | 247 update_key->add_inData(viewer->keyPtr, sizeof(key_stat)); |
248 update_key->set_cpu(SPE_0); | 248 update_key->set_cpu(SPE_0); |
249 update_key->spawn(); | 249 update_key->spawn(); |
250 | 250 |
251 /* TASK_MOVE は外から引数で取ってくるべき */ | 251 /* TASK_MOVE は外から引数で取ってくるべき */ |
252 //HTaskPtr move_task = viewer->manager->create_task(viewer->app->move_taskid); | 252 //HTaskPtr move_task = viewer->manager->create_task(viewer->app->move_taskid); |
253 HTaskPtr move_task = viewer->manager->create_task(Move); | 253 HTaskPtr move_task = viewer->manager->create_task(Move); |
254 //move_task->add_param(sgroot); | 254 //move_task->set_param(sgroot); |
255 | 255 |
256 //HTaskPtr draw_task = viewer->manager->create_task(Draw); | 256 //HTaskPtr draw_task = viewer->manager->create_task(Draw); |
257 | 257 |
258 /* rendering task test */ | 258 /* rendering task test */ |
259 HTaskPtr draw_task = viewer->manager->create_task(Dummy); | 259 HTaskPtr draw_task = viewer->manager->create_task(Dummy); |
450 { | 450 { |
451 HTaskPtr task_create_pp = manager->create_task(CreatePolygonFromSceneGraph); | 451 HTaskPtr task_create_pp = manager->create_task(CreatePolygonFromSceneGraph); |
452 | 452 |
453 // SceneGraph(木構造) -> PolygonPack | 453 // SceneGraph(木構造) -> PolygonPack |
454 | 454 |
455 task_create_pp->add_param((memaddr)sgroot->getDrawSceneGraph()); | 455 task_create_pp->set_param(0,(memaddr)sgroot->getDrawSceneGraph()); |
456 task_create_pp->add_param((memaddr)ppack); | 456 task_create_pp->set_param(1,(memaddr)ppack); |
457 | 457 |
458 task_next->wait_for(task_create_pp); | 458 task_next->wait_for(task_create_pp); |
459 | 459 |
460 int range_base = spe_num; | 460 int range_base = spe_num; |
461 // 切り上げのつもり | 461 // 切り上げのつもり |
470 task_create_sp->add_inData(ppack, sizeof(PolygonPack)); | 470 task_create_sp->add_inData(ppack, sizeof(PolygonPack)); |
471 task_create_sp->add_inData(spackList_ptr, | 471 task_create_sp->add_inData(spackList_ptr, |
472 sizeof(SpanPack*)*spackList_length_align); | 472 sizeof(SpanPack*)*spackList_length_align); |
473 task_create_sp->add_inData(&spackList[index_start], sizeof(SpanPack)); | 473 task_create_sp->add_inData(&spackList[index_start], sizeof(SpanPack)); |
474 | 474 |
475 task_create_sp->add_param(index_start); | 475 task_create_sp->set_param(0,index_start); |
476 | 476 |
477 /** | 477 /** |
478 * ex. screen_height が 480, spenum が 6 の場合、各SPEのy担当範囲 | 478 * ex. screen_height が 480, spenum が 6 の場合、各SPEのy担当範囲 |
479 * [ 1.. 80] [ 81..160] [161..240] | 479 * [ 1.. 80] [ 81..160] [161..240] |
480 * [241..320] [321..400] [401..480] | 480 * [241..320] [321..400] [401..480] |
481 * | 481 * |
482 * ex. screen_height が 1080, spenum が 5 の場合、 | 482 * ex. screen_height が 1080, spenum が 5 の場合、 |
483 * [ 1..216] [217..432] [433..648] | 483 * [ 1..216] [217..432] [433..648] |
484 * [649..864] [865..1080] | 484 * [649..864] [865..1080] |
485 */ | 485 */ |
486 task_create_sp->add_param(index_start*split_screen_h + 1); | 486 task_create_sp->set_param(1,index_start*split_screen_h + 1); |
487 task_create_sp->add_param(index_end*split_screen_h); | 487 task_create_sp->set_param(2,index_end*split_screen_h); |
488 | 488 |
489 task_next->wait_for(task_create_sp); | 489 task_next->wait_for(task_create_sp); |
490 task_create_sp->wait_for(task_create_pp); | 490 task_create_sp->wait_for(task_create_pp); |
491 | 491 |
492 task_create_sp->set_cpu(SPE_ANY); | 492 task_create_sp->set_cpu(SPE_ANY); |
519 if (spack->info.size > 0) { | 519 if (spack->info.size > 0) { |
520 // Draw SpanPack | 520 // Draw SpanPack |
521 task_draw = manager->create_task(DrawSpan); | 521 task_draw = manager->create_task(DrawSpan); |
522 task_draw->add_inData(spack, sizeof(SpanPack)); | 522 task_draw->add_inData(spack, sizeof(SpanPack)); |
523 | 523 |
524 task_draw->add_param(0, | 524 task_draw->set_param(0, |
525 (memaddr)&pixels[(startx-1) + this->width*(starty-1)]); | 525 (memaddr)&pixels[(startx-1) + this->width*(starty-1)]); |
526 task_draw->add_param(1,this->width); | 526 task_draw->set_param(1,this->width); |
527 | 527 |
528 for (int i = 0; i < rangey; i++) { | 528 for (int i = 0; i < rangey; i++) { |
529 task_draw->add_outData( | 529 task_draw->add_outData( |
530 &pixels[(startx-1) + this->width*(starty-1 + i) ], | 530 &pixels[(startx-1) + this->width*(starty-1 + i) ], |
531 (endx-startx+1)*sizeof(int)); | 531 (endx-startx+1)*sizeof(int)); |
537 memset(&pixels[(startx-1)+this->width*(starty-1)], | 537 memset(&pixels[(startx-1)+this->width*(starty-1)], |
538 0, (this->width)*sizeof(int)*rangey); | 538 0, (this->width)*sizeof(int)*rangey); |
539 break; | 539 break; |
540 } | 540 } |
541 | 541 |
542 task_draw->add_param(2,startx); | 542 task_draw->set_param(2,startx); |
543 task_draw->add_param(3,endx); | 543 task_draw->set_param(3,endx); |
544 task_draw->add_param(4,rangey); | 544 task_draw->set_param(4,rangey); |
545 task_draw->set_cpu(SPE_ANY); | 545 task_draw->set_cpu(SPE_ANY); |
546 task_next->wait_for(task_draw); | 546 task_next->wait_for(task_draw); |
547 task_draw->spawn(); | 547 task_draw->spawn(); |
548 | 548 |
549 startx += split_screen_w; | 549 startx += split_screen_w; |