|
|
|||||
Регистрация: Jun 2015
Сообщений: 7
|
Нагрузка на процессор в Chrome
Размер флеш ролика на всю страницу.
В ENTER_FRAME происходит отрисовка анимации в векторе покадрово, движения непрерывные. FPS установленна на 30. При тестировании ролика вне браузера со всеми вычислениями нагрузка на процессор, равномерна, около 25%. Такая же нагрузка при тестировании Mozilla FireFox (plugin-container.exe) и в IExplorer Но при запуске флеш в браузере Chrome (Adobe Flash Player - Версия: 18.0.0.194, Shockwave Flash 18.0 r0), нагрузка составляет до 95%, независимо он параметра wmode. Если уменьшить размеры рабочей области ролика до области анимации, нагрузка в Chrome снижается к нормальной, но выносить из флеш статичную часть очень не хотелось бы, так как она также формируется во флеш. Пробовал убирать всю статику, делать фон прозрачным (wmode transparent), всё равно пока не уменьшить размер рабочей области всего флеш, в Chrome проблемы. Подскажет ли кто, как можно повлиять на это для Chrome? |
|
|||||
- попробовать избавиться от рисования вектора, рисовать битмапами.
- посмотреть зоны отрисовки, возможно хром принуждает флеш выводить весь кадр заново |
|
|||||
Регистрация: Jun 2015
Сообщений: 7
|
Для того чтобы размер рабочей области изменялся автоматически в случае изменения размеров страницы сайта в html вывожу с помощью swfobject.js и swffit.js.
Код вывода: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="ru"> <head> <title>TestDrawObj</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> <!-- html, body { margin: 0; padding: 0; height: 100%; overflow: hidden; color: #000000; background-color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: 13px; } a:link, a:visited { color: #06C; } a:hover { color: #C30; } --> </style> <!-- embedding SWF --> <script type="text/javascript" src="swfobject.js"></script> <script type="text/javascript" src="swffit.js"></script> <script type="text/javascript"> var flashvars = {}; var params = {}; params.allowfullscreen = true; var attributes = {}; attributes.id = "testdraw"; attributes.name = "testdraw"; swfobject.embedSWF("testdraw.swf", "testdraw", "100%", "100%", "9.0.0", false, flashvars, params, attributes); swffit.fit("testdraw", 200, 200, 1920, 1080); </script> <!-- embedding SWF --> </head> <body> <!-- flash template SWF --> <div id="testdraw"> <br /><br /> <a href="http://www.adobe.com/go/getflashplayer" target="_blank"> <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /> </a> </div> <!-- flash template SWF --> </body> </html> только в Chrome наблюдается изменение нагрузки на процессор в случае увеличения её размера. В первом случае обновляю в векторе: stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var ObjSh: Shape = new Shape(); var ObjGrp: Graphics = ObjSh.graphics; var ObjAng: Number = 0; var ObjRad: int = 70; var CntAng: int = 4; var CenterX: Number = stage.stageWidth / 2; var CenterY: Number = stage.stageHeight / 2; addChild(ObjSh); addEventListener(Event.ENTER_FRAME, doUpdate); function doUpdate(evt:Event):void { var Ang, PosX, PosY, CurRad: Number; ObjGrp.clear(); ObjGrp.lineStyle(1, 0xFFFFFF, 1); for (var I: int = 0; I < (CntAng + 1); I++) { Ang = ObjAng + I * 2 * Math.PI / CntAng; PosX = CenterX + Math.cos(Ang) * ObjRad; PosY = CenterY + Math.sin(Ang) * ObjRad; if (I == 0) ObjGrp.moveTo(PosX, PosY) else ObjGrp.lineTo(PosX, PosY); } ObjAng += Math.PI / 150; } stage.addEventListener(Event.RESIZE, onResizeList); stage.dispatchEvent(new Event(Event.RESIZE)); function onResizeList(e: Event): void { CenterX = stage.stageWidth / 2; CenterY = stage.stageHeight / 2; } stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var DrawBD: BitmapData = new BitmapData(200, 200, true, 0x00000000); var DrawBt: Bitmap = new Bitmap(DrawBD); addChild(DrawBt); var ObjBD: BitmapData = new BitmapData(200, 200, true, 0x00000000); var ObjBt: Bitmap = new Bitmap(ObjBD); ObjBt.x = - ObjBD.width / 2; ObjBt.y = - ObjBD.height / 2; var ObjSh: Shape = new Shape(); var ObjGrp: Graphics = ObjSh.graphics; ObjGrp.lineStyle(1, 0xFFFFFF, 1); ObjGrp.drawRect(DrawBD.width / 2 - 50, DrawBD.height / 2 - 50, 100, 100); ObjBD.draw(ObjSh); var ObjSp: Sprite = new Sprite(); ObjSp.addChild(ObjBt); var ObjAng: Number = 0; addEventListener(Event.ENTER_FRAME, doUpdate); function doUpdate(e: Event):void { var Mtx: Matrix = new Matrix(); Mtx.createBox(1, 1, ObjAng, DrawBD.width / 2, DrawBD.height / 2); DrawBD.fillRect(DrawBD.rect, 0x00000000); DrawBD.draw(ObjSp, Mtx); ObjAng += Math.PI / 150; } stage.addEventListener(Event.RESIZE, onResizeList); stage.dispatchEvent(new Event(Event.RESIZE)); function onResizeList(e: Event): void { DrawBt.x = stage.stageWidth / 2 - DrawBD.width / 2; DrawBt.y = stage.stageHeight / 2 - DrawBD.height / 2; } То что Chrome прорисовывает заново весь флеш это понятно, непонятно следующее: 1. Возможно ли загрузчиком флеш или html кодом повлиять на это? 2. Может ли проблема заключаться именно в моём Chrome или в моей системе? |
|
|||||
Возможно это связано с PPAPI, и полным выводом станицы через GPU
сейчас попробую проверить на игре со старлингом |
|
|||||
Регистрация: Jun 2015
Сообщений: 7
|
Сейчас в обновленных версиях также используется PPAPI?
В chrome://plugins/ выводит: Adobe Flash Player - Версия: 18.0.0.194 Shockwave Flash 18.0 r0 В chrome://gpu/ пишет: Graphics Feature Status: Canvas: Software only, hardware acceleration unavailable Flash: Hardware accelerated Flash Stage3D: Hardware accelerated Flash Stage3D Baseline profile: Hardware accelerated Compositing: Hardware accelerated Multiple Raster Threads: Disabled Rasterization: Hardware accelerated Threaded Rasterization: Enabled Video Decode: Hardware accelerated Video Encode: Hardware accelerated WebGL: Hardware accelerated Driver Bug Workarounds: clear_uniforms_before_first_program_use disable_d3d11 exit_on_context_lost scalarize_vec_and_mat_constructor_args use_current_program_after_successful_link Problems Detected: Hardware video decode is only supported in win7+: 159458 Disabled Features: accelerated_video_decode Disable GPU on all Windows versions prior to and including Vista: 315199 Disabled Features: all GPU rasterization is blacklisted on non-Android: 362779 Disabled Features: gpu_rasterization Always call glUseProgram after a successful link to avoid a driver bug: 349137 Applied Workarounds: use_current_program_after_successful_link Some drivers are unable to reset the D3D device in the GPU process sandbox Applied Workarounds: exit_on_context_lost Disable use of Direct3D 11 on Windows Vista and lower Applied Workarounds: disable_d3d11 Clear uniforms before first program use on all platforms: 124764, 349137 Applied Workarounds: clear_uniforms_before_first_program_use Disable D3D11 on older nVidia drivers: 349929 Applied Workarounds: disable_d3d11 Always rewrite vec/mat constructors to be consistent: 398694 Applied Workarounds: scalarize_vec_and_mat_constructor_args Raster is using a single thread. Disabled Features: multiple_raster_threads Думал проблема что мой Chorome установлен на WinXP, попробовал на другом компе с Win8 и немного другим железом, вроде также показывает на тестовом флеш что нагрузка умножается, точно сложно сказать так как она в отличие от моего компа скачет, однако видно что на на том же яндексбраузере этих проблем нет. Все это для меня особенно критично, когда начинает происходить что либо сложнее того что я привел в примере, так сhrome ложит процессор (E8400 + Nvidia128бит) на лопатки, хотя размеры динамических объектов незначительные, при этом на фоне один большой статичный битмап, но как я говорил и без него почти также. Получается при создании сайта на весь экран chrome вносит серьезные ограничения, которые сводят на нет возможности флеш, заставляет фактически рисовать банер по центру html )) |
|
|||||
собрал игру на старлинг, ничего не тормозит
в хроме нормально, 60 фпс, две текстуры по 2048*2048 разрешение стола 2500*1600 окно чуть меньше, но не суть флеш - 18.0.0.194 хром - 43.0.2357.130 m win 7 x64 nvidia 610gt 64bit - загрузку видно на скрине 100%, но это почти самая дешевая карта сейчас на рынке цпу - i5-2500 4 ядра, не нагружен проект собран на flex 4.6 +air 18 sdk (компилятор 2.0) flashdevelop никаких флешовых вещей поверх старлинга нет видимо наступает эра GPU-онли флеша игра - https://www.mm-game.ru/p/ (сертификат надо принять) Последний раз редактировалось ShockWave512; 28.06.2015 в 14:55. |
|
|||||
Регистрация: Jun 2015
Сообщений: 7
|
У меня 100% нагрузки.
Выяснил, все же используется ppapi: "C:\Program Files\Google\Chrome\Application\chrome.exe" --type=ppapi --channel="1060.76.91971394\1007204892" --ppapi-flash-args=enable_hw_video_decode=1 --lang=ru --ignored=" --type=renderer " /prefetch:-632637702" А в Firefox: 2-4% |
|
|||||
тогда не знаю что предположить,
а дебаг в хроме работает? тормознуть и посмотреть на данные стейджа и Capabilities, может он там рисует как не так если поискать другие совместимые версии флеша? поиграть с хтмл, как например голая флешка в браузере работает? |
|
|||||
Регистрация: Jun 2015
Сообщений: 7
|
Если в флеш убрать с рабочей области движущие объекты, даже если они просчитываются дальше, нагрузка сразу падает почти до нуля, хотя вычислений очень много.
Получается дело именно с обновлением графики. Все дело в том, что мои винды были установлены недавно с нуля, после установил последние версии драйверов, chrome установил онлайн. После нигде ничего не настраивалось, т.е. большое количество систем имеющих WinXP + Chrome, попадают в категорию огромных тормозов при использовании как моего так и вашего сайта, и это касается именно флеш, так как на других движках с этим проблемы не замечал. Также нет проблемы, если происходит вывод видео в флеш проигрывателе. |
|
|||||
доля хр меньше 20% - http://itc.ua/blogs/u-14-letney-wind...este-vzyatyih/
может забить? Сейчас поиграть не могу с хр/хромом, может позже |
Часовой пояс GMT +4, время: 10:39. |
|
« Предыдущая тема | Следующая тема » |
|
|