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

Тест производительности видеокарты: OGL vs DX11

Страницы: 1 2 315 16 Следующая »
#0
9:45, 29 сен 2016

Итак народ, мне стало интересно потестить насколько OpenGL медленнее DirectX 11.
Я уже не однократно замечал, что OGL работает всегда чуть медленнее DX, даже когда ботлнек на стороне GPU. Это странно.

Так вот, я подготовил семпл, который может на лету переключаться с DX11 на OGL и обратно. Интересно увидеть цифры на разных видеокартах.
Собственно семпл вот: JF
В архиве картинка и 2 экзешника.
Экзешник JFDistanceField_manualGLSL.exe содержит GLSL шейдера, вручную переписанные мной с HLSL.
Экзешник JFDistanceField_HLSLCC.exe содержит GLSL шейдера, сконвертированные из скомпилированного HLSL с помощью https://github.com/MrShoor/HLSLCrossCompiler

+ Для тех, кто боится сторонних экзешников

На моей Win10 под GF 980 оно выдает:
  manualGLSL:
    DirectX11 = ~500 FPS
    OpenGL = ~445 FPS
  HLSLCC:
    OpenGL = ~455 FPS
То есть DX процентов на 10 быстрее чем OGL.

upd. Результаты, выложенные народом тут:
Считались по этой формуле: (OGL-DX)/DX*100%
Проценты в скобочках - на шейдерах, переписанных мной вручную (JFDistanceField_manualGLSL.exe). Перед скобочками - на шейдерах, сконвертированных бездушной машиной (JFDistanceField_HLSLCC.exe). Одно число по середине - неизвестно какая версия измерялась.

GF980     Win10      : -11%   (-9%)
GF970     Win7       : -10.5% (-9.8%)
hd 5770              : -3.2%  (-3.2%)
hd 5650   Win7       : -3.8%  (-3.8%)
hd 4000              : -34.6% (-23%)
gtx980M              :     -6.8%
R7 265               :     -5%
GF260     Win10      : +5%    (+15.2%)
R9 280    Win10      :      0%
GF960                :     -4.1%
GF210                : сильно скачет
GF540M               : -44.4% (-5.7%)
GF690     Win10      :      +2%
GF660                : +1%    (+4.2%)
GF760     Win7       : -40.9% (-8.9%)
GF970     Win10      : -7.4%  (-8.7%)
GF840M    Win8.1     : crash  (-1.8%)
R7 240    Win7       : -1.4%  (0%)
GF960     Win10      : -3.9%  (-5%)
GF540M    Win10      : -47%   (???)
GF1080    Win10      : -5.3%  (-5.3%)
GF720     Win8.1_x86 : +4.3%  (---)
R HD 7950 Win7       : -3.4%  (-3.4%)
GF640M    Win8.1     : +2%    (+2%)
hd 4000              : crash  (-7.4%)
GF650                : -4.8%  (-3.8)
HD5450    Win7       : 0%     (0%)
#1
9:56, 29 сен 2016
+ Показать
#2
9:59, 29 сен 2016

JFDistanceField_HLSLCC:
  DX: 410
  GL: 370
JFDistanceField_manualGLSL:
  DX: 410
  GL: 367

Win7 x64, GTX 970, i5-6600.

#3
10:06, 29 сен 2016

static_cast
> Хотя... 10%? Подозрительно. Как то слишком круто для забытого, никому ненужного GAPI [OpenGL].
Ну это на NVidia карточке. Мне кажется на других картах разница будет больше. Собственно для этого тему и создал.

#4
10:07, 29 сен 2016

А-А-ХА-ХА-ХА! Я ТАК И ЗНАЛ !!! 92 (DX) против 89 (OGL) фпс (hd 5770) !!! 92 > 89! Что же мы имеем? OpenGL унижен, ещё раз!

Автор сделал большую ошибку! Скоро все окажутся от OGL, зная, насколько он медленный !!!

#5
10:15, 29 сен 2016

static_cast
Чет как-то мало, 3% разница.

#6
10:29, 29 сен 2016

Нее, это не катит.

Чтобы померить скорость апи, надо сабмитить много батчей с разной степенью забатченности. При этом, нужно менять всякие интересные стейты типа альфаблендинга, или, там, формат вершин, и умиляться, как драйвер перекомпилирует шейдеры прям во время дро колла. Тестировать на обоих вендорах.

Если же у тебя в демке всего несколько фуллскрин пассов, то ты не "скорость апи" измеряешь, а скорость шейдерных юнитов на твоей видюхе. Ну и в некотором смысле, эффективность оптимизаций шейдерного кода компилятором.

#7
10:31, 29 сен 2016

Wraith
> Нее, это не катит.
всё катит

#8
10:36, 29 сен 2016

Wraith
> Чтобы померить скорость апи, надо сабмитить много батчей с разной степенью
> забатченности.
Это зависит от того, что я хочу измерять.

Wraith
> Ну и в некотором смысле, эффективность оптимизаций шейдерного кода
> компилятором.
Фактически я это и измеряю. Семпл как раз собран таким образом, чтобы именно GPU был завален работой. А чтобы хоть как-то помочь OpenGL - в семпле JFDistanceField_HLSLCC.exe GLSL шейдера транслирванные из скомпилированного и оптимизированного HLSL кода. Но что-то оно ему не очень помогает.

#9
10:42, 29 сен 2016

В обоих экзешниках DX: 26 fps, OGL: 25 fps. то есть DX быстрее на 4%
win7, amd mobility hd 5650

#10
10:49, 29 сен 2016

MrShoor
JFDistanceField_manualGLSL.exe
DX11 26
OGL 20
JFDistanceField_HLSLCC.exe:
218982 | Тест производительности видеокарты: OGL vs DX11
Intel HD 4000

#11
10:50, 29 сен 2016

Автор MSAA 4х или 8х было в тестах включено ?

Что то подсказывает что просадка будет еще на OpenGL при включенном MSAA.

#12
10:54, 29 сен 2016

GL 340
DX11 365
gtx980M

#13
11:02, 29 сен 2016

Это к тому, что микрософты в своей винде так специально сделали или к тому, что опенгл реально медленнее?

#14
11:05, 29 сен 2016

Хороший вопрос !
Ну теоритически Микрософт разработал свою Шинду, потому знает лучшие варианты как делать быстрые дрова и общаться с железом.
И Микрософт не гласно, толкает в перед только DX. OpenGL Микрософт не любит.

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

Тема в архиве.