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

Стоимость OpenGL команд (комментарии) (3 стр)

Страницы: 1 2 3 4 5 Следующая »
#30
9:18, 20 фев. 2017

Andrey
> Еще бы потестить GL_ARB_sampler_buffer_objects/GL_ARB_multibind

Ты хоть понимаешь, что себя конкретно так подставляешь ? :)

Синдром загрузки за 1 вызов не отпускает ?

#31
10:49, 20 фев. 2017

CD
dmitryhryppa
поправил - должно работать

Andrey
>Вылетает на Intel HD 4000:
>WARNING: 0:2: '#extension' : 'GL_EXT_bindable_uniform' is not supported
интересно)
легаси конечно, но блин... Intel ужасен
к слову, у нас есть статистика по карточкам - интелом очень многие пользуются

вот кстати лог от CD

CPU: Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz
GPU: GeForce GTX 760/PCIe/SSE2

Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:
SIMPLE_DIPS_TEST 0.13
FBO_CHANGE_TEST 1.12
SHADERS_CHANGE_TEST 1.40
VBO_CHANGE_TEST 0.22
ARRAY_OF_TEXTURES_TEST 0.96
TEXTURES_ARRAY_TEST 0.21
UNIFORMS_SIMPLE_CHANGE_TEST 0.72
UNIFORMS_SSBO_TEST 2.70

---API call cost:
glBindFramebuffer: 5.48  4135%
glUseProgram: 1.27  957%
glBindVertexArray: 0.09  68%
glBindTexture: 0.14  103%
glDrawRangeElements: 0.13  100%
glUniform4fv: 0.06  44%

---Instancing time:
UBO_INSTANCING 2.19
TBO_INSTANCING 5.60
SSBO_INSTANCING 2.23
VBO_INSTANCING 2.17
TEXTURE_INSTANCING 2.19
UNIFORMS_INSTANCING 5.93
MULTI_DRAW_INDIRECT_INSTANCING 208.57

Интересно
glBindVertexArray: 0.09  68%
glBindTexture: 0.14  103%
ну и - очень странный инстансинг

#32
11:16, 20 фев. 2017

barnes
GPU: GeForce GTX 690/PCIe/SSE2
glBindVertexArray: 0.09  74%
glBindTexture: 0.17  131%
инстансинг 2.5 ms+

dmitryhryppa
GPU: GeForce GTX 970/PCIe/SSE2
glBindVertexArray: 0.10  87%
glBindTexture: 0.15  134%
инстансинг 2.38 ms+

CD
GPU: GeForce GTX 760/PCIe/SSE2
glBindVertexArray: 0.09  68%
glBindTexture: 0.14  103%
инстансинг 2.2 ms+

Andrey
GPU: AMD Radeon R7 200 Series
glBindVertexArray: 1.00  372%
glBindTexture: 0.77  285%
Дешевый инстансинг 0.5-0.7 ms

Джек Аллигатор
GPU: AMD Mobility Radeon HD 5000 Series
glBindVertexArray:              0.72  175%    0.97  162%
glBindTexture:                  0.62  152%    0.87  145%
инстансинг 0.2-0.3 ms

_Wizard_
GPU: AMD Radeon (TM) R9 380 Series
glBindVertexArray: 0.55  268%
glBindTexture: 0.48  232%
инстансинг 0.15-0.2 ms

сильно разнятся показания)
на GeForce'ах сильно дешевле glBindVertexArray и glBindTexture чем на Radeon'ах, но при этом в 5-10 раз дороже инстансинг
остальные показания вроде +- сходятся
с glMultiDrawElementsIndirect надо разобраться еще...

#33
11:38, 20 фев. 2017

_Wizard_

> вот кстати лог от CD
>
> GPU: GeForce GTX 760/PCIe/SSE2

> ---Instancing time:
> UBO_INSTANCING 2.19
> TBO_INSTANCING 5.60
> SSBO_INSTANCING 2.23
VBO_INSTANCING 2.17
> TEXTURE_INSTANCING 2.19
> UNIFORMS_INSTANCING 5.93
>ну и - очень странный инстансинг
Что странного? Однако на nVidia через gl_InstanceID медленнее? Весь мир перевернулся!
Кстати, если вместо glMapBuffer(Target, GL_WRITE_ONLY) memcpy/ unmap использовать glBufferSubData в функции update_instancing_buffers, также буфер создать immutable, через GL_ARB_buffer_storage, может чуток шустрее будет?
Все-же стоит обратить внимание на следующее "it may be able to make certain assumptions or apply particular optimizations in order to increase performance or reliability."

#34
12:02, 20 фев. 2017

_Wizard_

960 GTX


CPU: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
GPU: GeForce GTX 960/PCIe/SSE2

Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:
SIMPLE_DIPS_TEST 0.08
FBO_CHANGE_TEST 0.97
SHADERS_CHANGE_TEST 1.07
VBO_CHANGE_TEST 0.15
ARRAY_OF_TEXTURES_TEST 0.74
TEXTURES_ARRAY_TEST 0.17
UNIFORMS_SIMPLE_CHANGE_TEST 0.56
UNIFORMS_SSBO_TEST 0.21

---API call cost:
glBindFramebuffer: 4.77  5823%
glUseProgram: 0.99  1203%
glBindVertexArray: 0.07  83%
glBindTexture: 0.11  133%
glDrawRangeElements: 0.08  100%
glUniform4fv: 0.05  58%

---Instancing time:
UBO_INSTANCING 1.90
TBO_INSTANCING 2.22
SSBO_INSTANCING 1.88
VBO_INSTANCING 1.84
TEXTURE_INSTANCING 1.87
UNIFORMS_INSTANCING 4.99
MULTI_DRAW_INDIRECT_INSTANCING 4.75

#35
12:29, 20 фев. 2017

Исправление Crash на Intel HD 4000
Исправил Crash на Intel HD 4000.
Изменил GL_EXT_bindable_uniform на GL_ARB_uniform_buffer_object, поставил проверку на валидность шейдеров при отсутствии поддержки GL_ARB_shader_storage_buffer_object
CPU:        Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz
GPU: Intel(R) HD Graphics 4000

Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:
SIMPLE_DIPS_TEST 0.18
FBO_CHANGE_TEST 0.56
SHADERS_CHANGE_TEST 2.49
VBO_CHANGE_TEST 0.73
ARRAY_OF_TEXTURES_TEST 2.41
TEXTURES_ARRAY_TEST 0.44
UNIFORMS_SIMPLE_CHANGE_TEST 0.61
UNIFORMS_SSBO_TEST 0.00

---API call cost:
glBindFramebuffer: 2.62  1440%
glUseProgram: 2.30  1267%
glBindVertexArray: 0.55  301%
glBindTexture: 0.37  204%
glDrawRangeElements: 0.18  100%
glUniform4fv: 0.04  23%

---Instancing time:
UBO_INSTANCING 0.05
TBO_INSTANCING 0.24
SSBO_INSTANCING 0.00
VBO_INSTANCING 0.10
TEXTURE_INSTANCING 0.07
UNIFORMS_INSTANCING 25.08
MULTI_DRAW_INDIRECT_INSTANCING 28.08

#36
12:34, 20 фев. 2017

Andrey
> Старое расширение, видно Intel не успел его поддержать и сразу сделал UBO.

Да, старое, я делал на нём инстансинг ещё в конце 2007, а ты когда делал инстансинг ?

#37
13:09, 20 фев. 2017

Обновил драйвер и некоторые значения ускорилось

CPU: Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
GPU: GeForce GTX 970/PCIe/SSE2
Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:                        Было        Новый драйвер
SIMPLE_DIPS_TEST                                0.11        0.12
FBO_CHANGE_TEST                                1.28        1.18
SHADERS_CHANGE_TEST                        2.04        1.40
VBO_CHANGE_TEST                                0.22        0.22
ARRAY_OF_TEXTURES_TEST                  1.04        0.97
TEXTURES_ARRAY_TEST                        0.23        0.20
UNIFORMS_SIMPLE_CHANGE_TEST        0.75        0.59
UNIFORMS_SSBO_TEST                          3.02        2.82

---API call cost:
glBindFramebuffer:                      6.29  5481%      5.78  4963%
glUseProgram:                            1.93  1679%      1.28  1103%
glBindVertexArray:                      0.10  87%          0.10  85%
glBindTexture:                            0.15  134%        0.14  121%
glDrawRangeElements:                0.11  100%        0.12  100%
glUniform4fv:                              0.06  55%          0.05  41%

---Instancing time:
UBO_INSTANCING                                  2.38        2.26
TBO_INSTANCING                                  4.37      3.65
SSBO_INSTANCING                                2.41      2.28                 
VBO_INSTANCING                                  2.38      2.28
TEXTURE_INSTANCING                          2.40        2.30             
UNIFORMS_INSTANCING                        6.11      5.90
MULTI_DRAW_INDIRECT_INSTANCING    247.24  255.08              (Тут ошибка в логе: Message:GL_INVALID_OPERATION error generated. Zero bound to DRAW_INDIRECT_BUFFER.)

По выложенным тестам явно прослеживается сильная зависимость от CPU, надо было i7 покупать :D

#38
14:11, 20 фев. 2017

Andrey
>Что странного? Однако на nVidia через gl_InstanceID медленнее? Весь мир перевернулся!
чувак, в 10 раз дороже, чем на радеонах !
на интеле вообще все шикарно с инстансингом, судя по твоим замерам
там всего то 100 дипов, и получаем 2.5 ms. ... ну ок, ладно - 100к инстансов отрисовали
надо кстати померить с уменьшенным количеством инстансов... в 100 раз

есть некая вероятность, что что-то не так мерим  - хотя я обернул таймером только сам тест а не весь кадр

>Исправил Crash на Intel HD 4000.
спасибо, погляжу

#39
14:19, 20 фев. 2017

_Wizard_
> чувак, в 10 раз дороже, чем на радеонах !
> на интеле вообще все шикарно с инстансингом
Спарведливости ради, дело ведь не только в карточке
Там еще явная записимость от CPU, при чем сильная

Вот у innuendo 960 GTX быстрее моей 970, но у него проц  i7-4790K, а у меня i5-4590

#40
14:21, 20 фев. 2017

_Wizard_
> чувак, в 10 раз дороже, чем на радеонах !
а ты вот про что, да nVidia давно сдулася, только фанаты зеленых переплачивают за бренд :) к примеру Direct3D 12/Vulkan лучше для GCN :)
Ну и все-же раз уж делал много разных сравнений и замеров можешь запилить сравнение несколько glTexParameterX vs GL_ARB_sampler_buffer_objects и установку нескольких текстур vs GL_ARB_multibind ?

#41
14:32, 20 фев. 2017

Andrey
> Ну и все-же раз уж делал много разных сравнений и замеров можешь запилить
> сравнение несколько glTexParameterX vs GL_ARB_sampler_buffer_objects и
> установку нескольких текстур vs GL_ARB_multibind ?

Какие ещё оптимизации ты знаешь ? Желательно с реальных проектов :)


Andrey
> а ты вот про что, да nVidia давно сдулася, только фанаты зеленых переплачивают
> за бренд :) к примеру Direct3D 12/Vulkan лучше для GCN

Ты знаешь какая поддержка разрабов у Nvidia ?

#42
18:08, 20 фев. 2017
CPU: Intel(R) Core(TM) i5-4460  CPU @ 3.20GHz
GPU: AMD Radeon R9 200 Series

Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:
SIMPLE_DIPS_TEST 0.19
FBO_CHANGE_TEST 1.34
SHADERS_CHANGE_TEST 2.45
VBO_CHANGE_TEST 0.74
ARRAY_OF_TEXTURES_TEST 2.98
TEXTURES_ARRAY_TEST 0.71
UNIFORMS_SIMPLE_CHANGE_TEST 1.10
UNIFORMS_SSBO_TEST 0.65

---API call cost:
glBindFramebuffer: 6.49   3352% 
glUseProgram: 2.25   1163% 
glBindVertexArray: 0.55   283% 
glBindTexture: 0.46   240% 
glDrawRangeElements: 0.19   100% 
glUniform4fv: 0.09   46% 

---Instancing time:
UBO_INSTANCING 0.14
TBO_INSTANCING 0.52
SSBO_INSTANCING 0.16
VBO_INSTANCING 0.15
TEXTURE_INSTANCING 0.17
UNIFORMS_INSTANCING 5.57
MULTI_DRAW_INDIRECT_INSTANCING 6.35
#43
11:45, 22 фев. 2017

поправил код:
1. похоже drawIndirect я сделал не правильно. Передавать напрямую информацию о дипах было не правильно. Нужно было заполнять GL_DRAW_INDIRECT_BUFFER
Тайминг сильно изменился. Так что можно перемерить конкретно MULTI_DRAW_INDIRECT_INSTANCING
2. с исправлениями от Andrey
- ubo_instancing fix
- проверка SSBO перед использованием...
3. Заметил, что спамится много ненужного в лог, возможно это тормозит/сильно влияет на тайминги... так что сделал 2 exe, с включенным и выключенным debug output

#44
11:58, 22 фев. 2017

Без дебага (какой-то глюк вероятно):

CPU: Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz
GPU: GeForce GTX 760/PCIe/SSE2

Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:
SIMPLE_DIPS_TEST 0.01
FBO_CHANGE_TEST 0.00
SHADERS_CHANGE_TEST 0.03
VBO_CHANGE_TEST 0.01
ARRAY_OF_TEXTURES_TEST 0.09
TEXTURES_ARRAY_TEST 0.03
UNIFORMS_SIMPLE_CHANGE_TEST 0.19
UNIFORMS_SSBO_TEST 0.41

---API call cost:
glBindFramebuffer: 0.00   38% 
glUseProgram: 0.02   126% 
glBindVertexArray: 0.00   18% 
glBindTexture: 0.01   108% 
glDrawRangeElements: 0.01   100% 
glUniform4fv: 0.02   139% 

---Instancing time:
UBO_INSTANCING 0.00
TBO_INSTANCING 0.01
SSBO_INSTANCING 0.01
VBO_INSTANCING 0.00
TEXTURE_INSTANCING 0.01
UNIFORMS_INSTANCING 0.86
MULTI_DRAW_INDIRECT_INSTANCING 0.96
Без дебага №2
CPU: Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz
GPU: GeForce GTX 760/PCIe/SSE2

Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:
SIMPLE_DIPS_TEST 0.12
FBO_CHANGE_TEST 1.11
SHADERS_CHANGE_TEST 1.41
VBO_CHANGE_TEST 0.20
ARRAY_OF_TEXTURES_TEST 0.96
TEXTURES_ARRAY_TEST 0.21
UNIFORMS_SIMPLE_CHANGE_TEST 0.60
UNIFORMS_SSBO_TEST 0.20

---API call cost:
glBindFramebuffer: 5.42   4632% 
glUseProgram: 1.29   1105% 
glBindVertexArray: 0.09   74% 
glBindTexture: 0.14   119% 
glDrawRangeElements: 0.12   100% 
glUniform4fv: 0.05   41% 

---Instancing time:
UBO_INSTANCING 2.18
TBO_INSTANCING 5.39
SSBO_INSTANCING 2.25
VBO_INSTANCING 2.22
TEXTURE_INSTANCING 2.25
UNIFORMS_INSTANCING 6.00
MULTI_DRAW_INDIRECT_INSTANCING 0.57
С дебагом:
+ Показать

Предыдущая версия с дебагом:
+ Показать

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

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