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

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

Страницы: 1375 376 377 378408 Следующая »
#5625
(Правка: 18:17) 18:17, 6 сен. 2019

Я вот не пойму - есть reneder pass, у которого на входе куча аттачментов, и которые потом используются в разных пайплайнах. Ок - я могу задать каждому аттачменту его конечный layout, соответствующий требуемому в пайплайне, но как я могу для каждого аттачмента индивидуально задать srcStage, srcAccess, dstStage, dstAccess? Неужели единственный вариант - это задать общий VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT в dependencies или вообще сделать dependenciesCount=0 и после и перед рендер пассом вручную натыкать барьеров?


#5626
(Правка: 18:46) 18:45, 6 сен. 2019

BingoBongo
> Неужели единственный вариант - это задать общий
> VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
сам-то как думаешь? собственно, из-за этого люди и плюхаются со всеми render graph'ами.

#5627
19:49, 6 сен. 2019

Suslik
> сам-то как думаешь?
Лучший ответ!

#5628
23:48, 6 сен. 2019

BingoBongo
> или вообще сделать dependenciesCount=0 и после и перед рендер пассом вручную натыкать барьеров?
наверное лучше так

#5629
0:25, 7 сен. 2019

BingoBongo
> наверное лучше так
Почему? Я попробовал так для каждого рендерпасса (в каждом 1 сабпасс):

  VkSubpassDependency dependency[2];

  dependency[0].srcSubpass = VK_SUBPASS_EXTERNAL;
  dependency[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT ;
  dependency[0].srcAccessMask = 0;
  dependency[0].dstSubpass = 0;
  dependency[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
  dependency[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
  dependency[0].dependencyFlags = 0;

  dependency[1].srcSubpass = 0;
  dependency[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
  dependency[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
  dependency[1].dstSubpass = VK_SUBPASS_EXTERNAL;
  dependency[1].dstStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
  dependency[1].dstAccessMask = 0;
  dependency[1].dependencyFlags = 0;

  VkRenderPassCreateInfo renderPassInfo = {};
  renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
  renderPassInfo.attachmentCount = (uint32)attachmentDescriptions.size();
  renderPassInfo.pAttachments = attachmentDescriptions.data();
  renderPassInfo.subpassCount = 1;
  renderPassInfo.pSubpasses = &subpass;
  renderPassInfo.dependencyCount = 2;
  renderPassInfo.pDependencies = dependency;

Это будет работать сильно медленнее, чем расставленные вручную барьеры или какая проблема?

#5630
(Правка: 2:09) 2:07, 7 сен. 2019

BingoBongo
> Это будет работать сильно медленнее, чем расставленные вручную барьеры или
> какая проблема?
кто-то проверял и не заметил разницы производительности между барьерами отдельно и барьерами внутри subpass dependencies. если сабпасс всего 1, то нет смысла пользоваться subpass dependencies вместо барьеров.

BingoBongo
> dependency[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT ;
> dependency[1].dstStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
разумеется, барьерами предполагается пользоваться не так.

#5631
17:01, 9 сен. 2019

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

Да у меня очень хреново с инглишем и читать с бумаги моим глазам легче.
+ Показать

#5632
17:56, 9 сен. 2019

MAMOHT-92
> актуальной ли будет книга
да. ничего критически важного с тех времен не появилось.

#5633
21:29, 9 сен. 2019

Ну основа вулкана осталась та же, но может способ объяснения всего этого поменялся.
Тексом вообще не просто все это объяснить, тут нужны картинки, гифки, примеры.

#5634
(Правка: 9:26) 9:25, 10 сен. 2019

Как это понять? Что может быть неправильно?

Validation layer: number of elements inside built in block differ between stages shader (vertex shader 1 vs geometry shader 4)

Там и кода-то почти нет, что новой версии компилятора не нравится?

// Vert //////////////////////////////////////////////////////////////////////////////

#version 450

#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable

layout (location = 0) in vec3 inPos;

out gl_PerVertex 
{
    vec4 gl_Position;
};

layout(push_constant) uniform PushConsts {
        mat4 depthMVP;
        float index;
} pushConsts;

 
void main()
{
     gl_Position =  pushConsts.depthMVP * vec4(inPos, 1.0);
}

// Geom //////////////////////////////////////////////////////////////////////////////

#version 450

layout (triangles) in;
layout (triangle_strip, max_vertices = 3) out;

layout(push_constant) uniform PushConsts {
        mat4 depthMVP;
        int index;
} pushConsts;

void main() {    

    gl_Layer = pushConsts.index;

    gl_Position = gl_in[0].gl_Position; 
    EmitVertex();
    gl_Position = gl_in[1].gl_Position; 
    EmitVertex();
    gl_Position = gl_in[2].gl_Position; 
    EmitVertex();
    EndPrimitive();
}  
#5635
9:35, 10 сен. 2019

MikeNew
> float index;
MikeNew
> int index;

#5636
(Правка: 10:14) 10:06, 10 сен. 2019

innuendo
> MikeNew
> > float index;
> MikeNew
> > int index;
Если бы все было так просто.
Поправил - не помогло.
Такая же ошибка вылазит с вертексными и теселяционными шейдерами. Этот был взят для примера как самый простейший - связи между шейдерами нет почти, кроме той что по дефолту.
Баг новой версии вулкана?

#5637
10:55, 10 сен. 2019

MikeNew
> #extension GL_ARB_shading_language_420pack : enable
что это такое? почему оно в одном шейдере есть а в другом нету?

#5638
(Правка: 11:41) 11:40, 10 сен. 2019

Suslik
> что это такое? почему оно в одном шейдере есть а в другом нету?
Это так, небольшой бардак. :)

Я это тоже проверял (только что еще раз перепроверил, на всякий случай), включал и выключал одновременно в обоих шейдерах - все равно эта ошибка.
Я уже начал посматривать в сторону настроек конвейера, хотя они не должны иметь отношения к этой ошибке.

Предыдущая версия сдк у меня была весенняя какая-то, там такой ошибки не было.

#5639
11:43, 10 сен. 2019

А что значат цифры 1 и 4 в (vertex shader 1 vs geometry shader 4)?

Страницы: 1375 376 377 378408 Следующая »
ПрограммированиеФорумГрафика