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

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

Страницы: 1729 730 731 732742 Следующая »
#10935
15:29, 16 фев 2024

s3dworld
Я тебе указал пример что могут вываться больше
Про фенс может чел словил баг ранее

#10936
15:35, 16 фев 2024

А что касается CUDA, OpenCL и Vulkan Compute Shader's. Есть какая-то разница (ну кроме инициализации, входного формата)? Может что-то конкретно прям лучше?

#10937
(Правка: 15:59) 15:52, 16 фев 2024

s3dworld
Разница есть
На нвидиа лучше куда

#10938
10:02, 20 фев 2024

Ребят, есть несколько вопросов по поводу Vulkan.

1. vkCmdPipelineBarrier() позволяет задать барьеры памяти для буферов, изображений и глобальной памяти. С изображениями понятно, так мы переключаем раскладку, ну и собственно можем же так воздействовать на то, чтобы запись не шла до чтения, например. С буферами тоже понятно, можем контролировать процесс синхронизации, например, чтобы чтение из буфера было строго после записи в буфер. А что позволяет глобальная память? Ну, скажем а что нужно синхронизировать, если у нас нет ни буферов, ни изображений?

2. Прочитал следующее:

Спецификация утверждает, что все команды начинают исполняться в том порядке, в котором они отправлены в очередь, однако завершаются они в произвольном порядке.

Вроде как бы обнадёживает. Но далее там пишут:

Не беспокойтесь, тот факт, что команды начинают исполняться по порядку - просто удобный способ описать спецификацию. Мы же должны считать, что пока мы явно не добавляем синхронизацию, все команды исполняются в произвольном порядке.

И тут мне сразу мысли какие лезут в голову. Вот взять такую цепочку:

vkCmdBeginRenderPass()
vkCmdBindPipeline()
vkCmdBindDescriptorSets()
vkCmdBindVertexBuffers()
vkCmdDraw()
vkCmdEndRenderPass()

Неужели здесь кто-то может раньше кого-то начать исполнение (особенно vkCmdEndRenderPass() раннее vkCmdBeginRenderPass())? Может vkCmdDraw() равнее vkCmdBindVertexBuffers()?

3. Покажу фрагменты кода. То, что изначально присвоено, взято из книги. А то, что закомментированно - взято из примера в Vulkan SDK. Создание прохода рендеринга:

VkAttachmentDescription desc;

desc.finalLayout        = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; // VK_IMAGE_LAYOUT_PRESENT_SRC_KHR

Подготовка к показу:

VkImageMemoryBarrier barrier;

barrier.srcAccessMask   = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;     // 0
barrier.dstAccessMask   = VK_ACCESS_MEMORY_READ_BIT;                // 0
barrier.oldLayout       = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; // VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
barrier.newLayout       = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;          // VK_IMAGE_LAYOUT_PRESENT_SRC_KHR

vkCmdPipelineBarrier(
    commandBuffer,
    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,                  // VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
    0,
    0,nullptr,
    0,nullptr,
    1,&barrier);

И оба примера работают. А в чём вообще разница?

#10939
10:16, 20 фев 2024

s3dworld
Барьеры между стадиями

#10940
10:23, 20 фев 2024

s3dworld
Классика это первый копьюте шейдер колбасит буфер а второй принимает это как результат

#10941
8:23, 21 фев 2024

innuendo
> Барьеры между стадиями
С учётом того, что стадии "задавать" как-то и нельзя - в плане того, что просто BeginRenderPass и EndRenderPass. Получается, что тупо где угодно подобавлял в CommandBuffer эти Barrier'ы и они сами расставятся на свои места по src и dst полям?

#10942
9:11, 21 фев 2024

s3dworld
На этом сайте есть статья про синки

#10943
10:23, 21 фев 2024

innuendo
> На этом сайте есть статья про синки
А просто "Да" и "Нет" уже не в моде?

#10944
10:41, 21 фев 2024

s3dworld
Я скрытый садист ... Хочется чтобы ты помучался читая доки

#10945
11:43, 26 фев 2024

Andrey
> C прекрасным Direct3D12 багов практически нет на навиди/AMD(и даже Intel)- я на Direct3D12 отладживаю графическую фичу, когда заработает, портирую в Vulkan.
А почему прекрасным? Что в нём такого?

Я вот бегло посмотрел. В Vulkan всё очень подробно. Узнал сколько устройств. Посмотрел сколько кучек памяти, сколько типов памяти. Посмотрел сколько семейств устройств, какие у них свойства. И указываешь что где и куда создавать. Открыл Direct3D 12. Только сколько физической и сколько системной. Создаёшь очередь и там указываешь какого типа она будет. Получается, что в Vulkan может получиться так, что даже одна очередь может выполнять различные вещи. А в Direct3D 12 для каждого типа нужно свою очередь создавать. Что-то мне даже пока Vulkan больше нравится.

#10946
11:52, 26 фев 2024

s3dworld
> А в Direct3D 12 для каждого типа нужно свою очередь создавать.
Это, конечно же, не правда. В D3D12 множества операций, доступных в очередях, включаются друг в друга: COPY может выполнять только копирование, COMPUTE может выполнять копирование и запуск вычислительных шейдеров, а также трассировки лучей и построение ускоряющих структур, а DIRECT может всё, что могут COPY и COMPUTE, а также выполнять графические команды для растеризации.
> Посмотрел сколько кучек памяти, сколько типов памяти.
А зачем это всё надо? В D3D12 достаточно указать предпочитаемый пул (оперативная память или видеопамять) и режим доступа со стороны центрального процессора (без доступа, Write Combined, Write Back) и всё, никаких мучений с разными типами и прочим бредом.
> А почему прекрасным? Что в нём такого?
То, что меньше позволяет производителям железа, гораздо больше фиксированных ограничений (количество RT, выравнивания и прочего), проще писать, потому что надо меньше запрашивать данных об оборудовании. Vulkan же позволят вендорам слишком много. Плюс в D3D12 нет расширений, новые функции добавляются крупными кусками, и доступ к ним единообразен, в отличие от Vulkan, где может быть либо расширение, либо его функционал в ядре, и из-за этого нужно выбирать функции либо с префиксом расширения (KHR/EXT), либо без него, что гораздо сложнее по сравнению с D3D12.

#10947
11:59, 26 фев 2024

Мда ... Сразу виден опыт ... Директ изначально имеет управление памятью через рефкаунтеры и жёсткий рантайм
Зато не  на всех платформах

#10948
12:03, 26 фев 2024

s3dworld
Не обращай внимания его навидия покусала

#10949
12:13, 26 фев 2024

Молодежь просто не помнит зоопарк конца 90 ... Прям как сейчас с мобилками

Страницы: 1729 730 731 732742 Следующая »
ПрограммированиеФорумГрафика