# HG changeset patch # User game@henri.cr.ie.u-ryukyu.ac.jp # Date 1253530658 -32400 # Node ID c29cbad1150ded78b0f6f694567d091865963d60 # Parent 4bea73c83c35e05fde98c8f14d1b2d74ff99e569 fix viewer.cpp diff -r 4bea73c83c35 -r c29cbad1150d TaskManager/Test/test_render/viewer.cpp --- a/TaskManager/Test/test_render/viewer.cpp Mon Sep 21 18:03:31 2009 +0900 +++ b/TaskManager/Test/test_render/viewer.cpp Mon Sep 21 19:57:38 2009 +0900 @@ -40,7 +40,6 @@ Viewer::Viewer(int b, int w, int h, int _num) { - //this->manager = manager; bpp = b; width = w; height = h; @@ -240,22 +239,9 @@ { HTaskPtr task_next = initLoop(); - task_next->set_post(post2runLoop, (void *)this); // set_post(function(this->run_loop()), NULL) + task_next->set_post(&post2runLoop, (void *)this); // set_post(function(this->run_loop()), NULL) task_next->spawn(); // TASK_INIT_TEXTURE が全て終わったら DUMMY_TASK が Viewer::run_loop() を呼ぶ - - - /* - HTaskPtr move_task = manager->create_task(RUN_MOVE_TASK); - HTaskPtr draw_task = manager->create_task(RUN_DRAW_TASK); - move_task->spawn(); - draw_task->spawn(); - - task_next->wait_for(RUN_MOVE_TASK); - task_next->wait_for(RUN_DRAW_TASK); - task_next->set_post(post2runExchange, (void *)this); - task_next->spawn(); - */ } @@ -302,12 +288,10 @@ void Viewer::rendering(HTaskPtr task_next) { - printf("start rendering\n"); - HTaskPtr task_create_pp = NULL; - HTaskPtr task_create_sp = NULL; + HTaskPtr task_create_pp = manager->create_task(TASK_CREATE_PP2); // SceneGraph(木構造) -> PolygonPack - task_create_pp = manager->create_task(TASK_CREATE_PP2); + task_create_pp->add_param((uint32)sgroot->getDrawSceneGraph()); task_create_pp->add_param((uint32)ppack); @@ -317,14 +301,12 @@ // 切り上げのつもり int range = (spackList_length + range_base - 1) / range_base; - printf("rendering 1\n"); - for (int i = 0; i < range_base; i++) { int index_start = range*i; int index_end = (index_start + range >= spackList_length) ? spackList_length : index_start + range; - task_create_sp = manager->create_task(TASK_CREATE_SPAN); + HTaskPtr task_create_sp = manager->create_task(TASK_CREATE_SPAN); task_create_sp->add_inData(ppack, sizeof(PolygonPack)); task_create_sp->add_inData(spackList_ptr, sizeof(SpanPack*)*spackList_length_align); @@ -356,9 +338,8 @@ // Barrier 同期 // run_draw() を呼ぶ post2runDraw task_next->set_post(post2runDraw, (void*)this); // set_post(function(this->run_draw()), NULL) - printf("rendering 2\n"); task_next->spawn(); - printf("task_next\n"); + // TASK_CREATE_SPAN が全て終わったら DUMMY_TASK が Viewer::run_draw() を呼ぶ } @@ -394,154 +375,12 @@ //sgroot->checkRemove(); // ここから下は Rendering という関数にする - printf("run_loop\n"); rendering(task_next); } -/* -void -Viewer::run_loop(HTaskPtr task_next) -{ - HTaskPtr task_create_pp = NULL; - HTaskPtr task_create_sp = NULL; - //HTaskPtr task_next; - bool quit_flg; - - quit_flg = quit_check(); - - if (quit_flg == true) { - this_time = get_ticks(); - run_finish(); - return; - } - - clean_pixels(); - - for (int i = 1; i <= spackList_length; i++) { - spackList[i-1].reinit(i*split_screen_h); - } - - //task_next = manager->create_task(TASK_DUMMY); - - sgroot->updateControllerState(); - sgroot->allExecute(width, height); - - // SceneGraph(木構造) -> PolygonPack - task_create_pp = manager->create_task(TASK_CREATE_PP2); - task_create_pp->add_param((uint32)sgroot->getDrawSceneGraph()); - task_create_pp->add_param((uint32)ppack); - - task_next->wait_for(task_create_pp); - int range_base = spe_num; - // 切り上げのつもり - int range = (spackList_length + range_base - 1) / range_base; - for (int i = 0; i < range_base; i++) { - int index_start = range*i; - int index_end = (index_start + range >= spackList_length) - ? spackList_length : index_start + range; - - task_create_sp = manager->create_task(TASK_CREATE_SPAN); - task_create_sp->add_inData(ppack, sizeof(PolygonPack)); - task_create_sp->add_inData(spackList_ptr, - sizeof(SpanPack*)*spackList_length_align); - task_create_sp->add_inData(&spackList[index_start], sizeof(SpanPack)); - - task_create_sp->add_param(index_start); - - task_create_sp->add_param(index_start*split_screen_h + 1); - task_create_sp->add_param(index_end*split_screen_h); - - task_next->wait_for(task_create_sp); - task_create_sp->wait_for(task_create_pp); - - task_create_sp->set_cpu(SPE_ANY); - task_create_sp->spawn(); - } - - task_create_pp->spawn(); - - // Barrier 同期 - task_next->set_post(post2runDraw, NULL); // set_post(function(this->run_draw()), NULL) - task_next->spawn(); - // TASK_CREATE_SPAN が全て終わったら DUMMY_TASK が Viewer::run_draw() を呼ぶ -} -*/ - - -/* -void -Viewer::run_loop(HTaskPtr task_next) -{ - HTaskPtr task_create_pp = NULL; - HTaskPtr task_create_sp = NULL; - HTaskPtr task_next; - bool quit_flg; - - quit_flg = quit_check(); - - if (quit_flg == true) { - this_time = get_ticks(); - run_finish(); - return; - } - - clean_pixels(); - - for (int i = 1; i <= spackList_length; i++) { - spackList[i-1].reinit(i*split_screen_h); - } - - task_next = manager->create_task(TASK_DUMMY); - - sgroot->updateControllerState(); - sgroot->allExecute(width, height); - - // SceneGraph(木構造) -> PolygonPack - task_create_pp = manager->create_task(TASK_CREATE_PP2); - task_create_pp->add_param((uint32)sgroot->getDrawSceneGraph()); - task_create_pp->add_param((uint32)ppack); - - task_next->wait_for(task_create_pp); - - int range_base = spe_num; - // 切り上げのつもり - int range = (spackList_length + range_base - 1) / range_base; - - for (int i = 0; i < range_base; i++) { - int index_start = range*i; - int index_end = (index_start + range >= spackList_length) - ? spackList_length : index_start + range; - - task_create_sp = manager->create_task(TASK_CREATE_SPAN); - task_create_sp->add_inData(ppack, sizeof(PolygonPack)); - task_create_sp->add_inData(spackList_ptr, - sizeof(SpanPack*)*spackList_length_align); - task_create_sp->add_inData(&spackList[index_start], sizeof(SpanPack)); - - task_create_sp->add_param(index_start); - task_create_sp->add_param(index_start*split_screen_h + 1); - task_create_sp->add_param(index_end*split_screen_h); - - task_next->wait_for(task_create_sp); - task_create_sp->wait_for(task_create_pp); - - task_create_sp->set_cpu(SPE_ANY); - task_create_sp->spawn(); - } - - task_create_pp->spawn(); - - // Barrier 同期 - task_next->set_post(post2runDraw, NULL); // set_post(function(this->run_draw()), NULL) - task_next->spawn(); - // TASK_CREATE_SPAN が全て終わったら DUMMY_TASK が Viewer::run_draw() を呼ぶ -} -*/ - static void post2runDraw(void *viewer_) { - printf("post2runDraw 1\n"); Viewer *viewer = (Viewer*)viewer_; HTaskPtr task_next = viewer->manager->create_task(TASK_DUMMY); viewer->run_draw(task_next); @@ -551,7 +390,6 @@ void Viewer::run_draw(HTaskPtr task_next) // 引数に post2runLoop を入れるようにする { - printf("start run_draw\n"); HTaskPtr task_draw; //task_next = manager->create_task(TASK_DUMMY); @@ -583,7 +421,6 @@ break; } - task_next->spawn(); task_draw->add_param(startx); task_draw->add_param(endx); task_draw->add_param(rangey); @@ -606,7 +443,6 @@ // TASK_DRAW_SPAN が全て終わったら DUMMY_TASK が Viewer::run_loop() を呼ぶ frames++; - printf("end run_draw\n"); } void