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

Vulkan API (вышел!) (408 стр)

Страницы: 1407 408 409 410417 Следующая »
#6105
(Правка: 12:09) 12:07, 15 дек. 2019

BingoBongo
> Вроде, ошибка тупая, но решения я не нашел.
написано же

GraphViz is not found, download and install library from  https://www.graphviz.org/

graphviz запускается только с консоли, так что надо скачать и поставить, дальше все само подцепится.

Там надо нормальную визуализацию написать, а это уныло. Иначе сложно во всем разбираться.


#6106
12:10, 15 дек. 2019

/A\
> написано же
Это начало лога, см дальше. Хедеры вулкана не качаются.

#6107
12:46, 15 дек. 2019

BingoBongo
> Хедеры вулкана не качаются.
Ну вот этот скрипт у меня везде используется и не было никаких проблем, не знаю что тут не так

#6108
0:50, 17 дек. 2019

Внезапно обнаружил, что в режиме вертикальной синхронизации вулкан создает поток amdvlk64.dll, который делает аллокации памяти в куче VK_SYSTEM_ALLOCATION_SCOPE_COMMAND, тем самым осуществляя многопоточный доступ к памяти.

#6109
15:23, 19 дек. 2019

Тут про расширение VK_NV_shader_sm_builtins
Можно визиулизировать какой SM и warp обрабатывает пиксель.
https://twitter.com/Wunkolo/status/1154964037647474688

#6110
23:17, 19 дек. 2019

Есть гипотетические VkImage и две очереди. Первая очередь поддерживает только флаг VK_QUEUE_COMPUTE_BIT, другая его не поддерживает, но вместо этого у нее есть только флаг VK_QUEUE_GRAPHICS_BIT. В цикле в первой очереди я заполняю image, во второй очереди использую ее в пиксельном шейдере как текстуру. Соответственно, при переходе от первой очереди ко второй нужен release-acquire барьер (даже два), в котором srcPipelineStage=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT и dstPipelineStage=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT.

Теперь представьте аналогичную ситуацию, в которой VkImage создана в режиме VK_SHARING_MODE_CONCURRENT. release-acquire барьер не может существовать, потому что для такого режима srcQueue=dstQueue=VK_QUEUE_FAMILY_IGNORED. Однако, я не могу поставить барьер на первой очереди, потому что она не поддерживает dstPipelineStage=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, и я не могу поставить барьер на второй очереди, потому что она не поддерживает srcPipelineStage=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT (см. таблицу). Как это разруливается? Получается барьер тут вообще не нужен?

#6111
2:10, 20 дек. 2019

BingoBongo
> Первая очередь поддерживает только флаг VK_QUEUE_COMPUTE_BIT, другая его не
> поддерживает, но вместо этого у нее есть только флаг VK_QUEUE_GRAPHICS_BIT
в спеке сказано, что если есть графика, то есть и компьют и трансфер, указывать их не обязательно.

Для VK_SHARING_MODE_CONCURRENT внутри очереди ставишь барьер чтоб сменить лейаут и только.
srcPipelineStage - соответствует waitDstStageMask для семафора, по которому ожидаешь завершения использования имейджа в другой очереди.
dstPipelineStage - то где будешь использовать в текущей очереди.

#6112
10:11, 20 дек. 2019

/A\
ах вот оно как, спс

#6113
10:32, 21 дек. 2019

Мне интересно, а что было бы, если в Vulkan API enum'ы вроде Flags и FlagBits были одной единой побитовой структурой в C++20?

#6114
10:38, 21 дек. 2019

helix.d
В vulkan-cpp не так?

#6115
(Правка: 10:54) 10:51, 21 дек. 2019

Dimich
> В vulkan-cpp не так?
О таком не слышал, слышал об vulkan-hpp, а в нем пока что не так...
Я имел ввиду такое для C++20...

struct flags { uint32_t 
  something_bit:1,
  another_bit:1;
};

И еще возможны операторные включения...

#6116
(Правка: 11:39) 11:39, 21 дек. 2019

helix.d
Не понял, а что не так с enum class: uint32_t { VK_SOMETHING, }?

#6117
(Правка: 11:57) 11:56, 21 дек. 2019

Dimich
> Не понял, а что не так с enum class: uint32_t { VK_SOMETHING, }?
Трудно ответить... Я бы сказал что не потребовалось бы излишество типов... а также более короткими и практичными именами...
Правда возникает иногда трудность с суффиксами NV, EXT, KHR у некоторых битов...

#6118
11:59, 21 дек. 2019
Dimich

это технотролль - ему просто нечего делать

#6119
19:44, 21 дек. 2019

helix.d
> что было бы, если в Vulkan API enum'ы вроде Flags и FlagBits были одной единой побитовой структурой
11.4.9 Bit-fields [class.bit]
Allocation of bit-fields within a class object is implementation-defined. Alignment of bit-fields is implementation-defined. Bit-fields are packed into some
addressable allocation unit. [Note: Bit-fields straddle allocation units on some machines and not on others. Bit-fields are assigned right-to-left on some machines, left-to-right on others. — end note]

И это не говоря о создании биндингов ко всему этому implementation-defined добру для других языков.

Страницы: 1407 408 409 410417 Следующая »
ПрограммированиеФорумГрафика