Войти
ПрограммированиеФорумГрафика

Производительность при отрисовке геометрии. (2 стр)

Страницы: 1 2 3 410 Следующая »
#15
0:48, 7 дек. 2018

san
> Только сначала скажи - ты сам замерял время отрисовки просто треугольников на
> разных картах или просто хочется пофлеймить?
Что значит замерял? У меня есть участки, где обработка треугольников - это ботлнек, и да, с видеокартами меняется производительность.


#16
0:50, 7 дек. 2018

san
> Если я выложу полный график (а я просто вырезал все лишнее для экономии места
> на странице), то что по нему ты можешь сказать полезного?
Ты думаешь я тебя прошу сделать скрин лучше просто так чтоль?
Идеальный вариант был бы вообще *.etl выложить.

#17
(Правка: 1:21) 1:08, 7 дек. 2018

MrShoor
Да ради бога, но файл весит несколько мегов. И дело то не в тормозах, как я уже писал. Для AMD R9 600.000 вершин за 5 мс не такой плохой результат, но почему Titan V и Titan Xp не делают это за 1-2 мс, вот что странно.

#18
1:20, 7 дек. 2018

MrShoor
Файл неплохо зажался, но все равно тянет на 108 мег. Вот тут лежит: http://www.sanbasestudio.com/tmp/test1.zip

#19
1:42, 7 дек. 2018

san
> У меня не самая сложная сцена - 200.000 треугольников.
Я на телефоне в VR до 500к треугольников в 60 фпс рисовал...
Возможно надо было использовать DX11, а то в DX12/Vulkan из-за неправильного использования можно сильно замедлить рендер.

#20
2:02, 7 дек. 2018

/A\
> Возможно надо было использовать DX11, а то в DX12/Vulkan из-за неправильного использования можно сильно замедлить рендер.
Поздно что-то менять. Да и работаю с DX12 я уже давно, просто раньше кучу треугольников не выводил.
Но твой пример как-раз может говорить о том, что на любой карте отрисовка треугольников идет за то же самое время :)
У меня не 500к треугольников а 200к но и время не 16 мс а всего 5 (хоть на AMD хоть на Titan'e).
Шучу конечно, но пока я никакого внятного обьяснению не нахожу.

#21
2:09, 7 дек. 2018

san
> но и время не 16 мс
на мобилках жесткий vsync на 60фпс (на некоторых старых вообще 30фпс) и даже замеры времени показывают некорректные результаты, чтоб замерить точное время кадра нужен профайлер от вендора.

#22
(Правка: 3:14) 3:10, 7 дек. 2018

/A\
Ну раз в 60 фпс укладывался, значит было от 16 мс и ниже. По моей безумной теории должно быть 500/200 * 5мс = 12.5 мс. Осталось подтвердить экспериментально :)

#23
5:59, 7 дек. 2018

глупый вопрос, что показывает диспетчер задач по поводу загрузки CPU?

#24
(Правка: 6:05) 6:04, 7 дек. 2018

san
Судя по логам у тебя просто синхронизация в OculusDash.exe процессе:
fence | Производительность при отрисовке геометрии.
Оно тупо на Fence стоит. Вероятнее всего в окулусе это аналог VSync, только реализованный на уровне процесса OculusDash.exe
А твой процесс:
sleep | Производительность при отрисовке геометрии.
Тупо простаивает не нагружая CPU вообще никак. Видно многократный запас по CPU и по GPU.

Короче проблемы никакой нет.

#25
6:14, 7 дек. 2018

Suslik
> глупый вопрос, что показывает диспетчер задач по поводу загрузки CPU?
Щас посмотрим... 2.4%. Не тут дело не в процессоре.
Есть у меня одно смутное подозрение:
Я всю геометрую (все 600.000 вертексов и индексов) засовываю в два очень больших буфера на видеокарте. Ну и индексация в нем разумеется 32 битная. Но может быть карты заточены на работу с отдельными сравнительно небольшими буферами, т.е. надо каждую модель совать в собственный ресурс с 16 битными индексами? Это надо проверить, но уже не сегодня, у меня на часах 22:15.

#26
(Правка: 6:44) 6:20, 7 дек. 2018

MrShoor
>Тупо простаивает не нагружая CPU вообще никак. Видно многократный запас по CPU и по GPU.
Я же все это показал еще в первом своем посте, не знаю что ты пытался еще выяснить.

> Короче проблемы никакой нет.
Я не проблему ищу, все работает. Я же обьяснял... Я пытаюсь понять логику, по которой разные видеокарты имеют одинаковую производительность при выводе большого массива треугольников. Не по фпсам, а по реальному времени выполнения. Но фпс тут тоже косвенно замешан, поскольку я вылезаю за 11 мс на любой карте, включая Titan V. Ну и фпс падает вдвое. Для такого поведения есть какая-то общая причина. Я уже ответил Суслику про мои подозрения. Завтра проверю.

#27
(Правка: 6:43) 6:42, 7 дек. 2018

san
> Я пытаюсь понять логику, по которой разные видеокарты имеют одинаковую производительность.
И? Да, имеют. Только ботлнек у тебя не производительность твоей карты. Время твоего рендера на R9 примерно 1 миллисекунда. Может чуть больше. Могло бы быть 1000FPS. Оно просто ждет на какой-то синхронизации. Наверняка это особенность окулуса.м Так что ты можешь спокойно в 10-20 раз сильнее нагрузить рендер, и фреймрейт не просядет.

wait | Производительность при отрисовке геометрии.


А на скрине в нульпосте ты привел не свой Device Context контекст, а какой-то левый, который ты видимо сам и не создавал. Этот второй контекст по всей видимости тоже стоит в синхронизации, скорее всего в каком-то memory barier-е. Т.е. GPU в это время не работает.
А твой контекст отличить легко, потому что в нем есть Present token packet.

#28
(Правка: 7:05) 6:59, 7 дек. 2018

MrShoor
> Время твоего рендера на R9 примерно 1 миллисекунда
Время рендера порядка 5 мс на каждый глаз. Надо смотреть не на CPU а на GPU. Смотри в самом вверху, там показана загрузка каждой из моих видеокарт. И ты еще меня обвинял в незнании GPUviewe... К R9 у меня поключен монитор, он же отбражает контрольное окно. А работа приложения идет на Титане V. Если ты посмотришь внимательно, то заметишь, что в компе стоят три видеокарты.

#29
(Правка: 7:24) 7:23, 7 дек. 2018

san
> Надо смотреть не на CPU а на GPU.
Так и смотри. Я тебе показал где твой Device Context, в котором ты рендеришь. Рендеришь ты там, где есть Present. Контекст у тебя такой один. На остальное смотреть не надо, потому что там может быть много ожиданий в синхронизациях, связанных с внутренней кухней драйверов, и из-за этого может казаться, что GPU долго работает, хотя по факту он не работает, а просто ждет. И собственно из-за того, что идет ожидание - время этого самого ожидания не меняется, вне зависимости от того, на какой ты видеокарте рендеришь.
Можешь запустить NSight, и посмотреть, сколько времени занимает непосредственно отрисовка. Там ты сможешь увидеть время каждого дравколла.

> И ты еще меня обвинял в незнании GPUviewe... К R9 у меня поключен монитор, он же отбражает контрольное окно.
Вот только GPUView не показывает на каком именно GPU ты рендеришь. Он просто показывает Device Context-ы без привязки к GPU.

Страницы: 1 2 3 410 Следующая »
ПрограммированиеФорумГрафика