Описание тега spir-v
SPIR-V - это язык промежуточного представления, разработанный Khronos Group для использования OpenCL (2.0+), OpenGL (4.6+) и Vulkan (все версии). Не используйте этот тег для вопросов о SPIR, более раннем стандарте, который использовался с OpenCL до 2.0.
1
ответ
Есть ли способ использовать clz() в Vulkan Compute Shader?
Я заинтересован в реализации определенного алгоритма в наборе вычислительных шейдеров Vulkan. Алгоритм использует функцию clz() в одной точке. Я ожидаю, что мой NVIDIA GPU, вероятно, предлагает аппаратную поддержку для этой функции; CUDA, очевидно, …
19 авг '16 в 19:10
1
ответ
Есть ли способ получить атрибуты и униформу в Vulkan после vkCreateShaderModule?
Как и в opengl, мы можем сделать glGetActiveAttrib и glGetActiveUniform.
21 июл '16 в 00:00
1
ответ
Как получить версию установленного Vulkan API в Linux?
2018-03-07 вышла новая версия API (Vulkan 1.1). Я хочу знать: какая консольная команда может отображать текущую установленную версию API. $ /usr/bin/vulkaninfo | head -n 5 =========== VULKAN INFO =========== Vulkan Instance Version: 1.1.70 WARNING: …
22 апр '18 в 03:09
1
ответ
В OpenGL 4.6 у меня не работает альфа-смешение
Я работаю над системой частиц, использующей шейдеры OpenGL и версии 460, скомпилированные для SPIR-V. Мои частицы основаны на PNG-текстурах с альфа-каналом, и это на самом деле довольно просто, я делал это раньше в предыдущих версиях OpenGL. Тем не …
12 янв '19 в 10:36
1
ответ
Слишком много одной частицы: сгенерирована ошибка GL_INVALID_VALUE. <start> не соответствует минимальным требованиям выравнивания для буферов хранения шейдеров
Я получаю странную ошибку в моей системе частиц. Я динамически устанавливаю размер моих буферов и могу изменять количество своих частиц так, как хочу. Я играю с числами, такими как 30k, 40k и все что между ними. Максимум достигается с 40800... тогда…
13 янв '19 в 19:02
0
ответов
Ошибка компилятора SPIR-V при попытке использовать единую структуру в качестве аргумента функции
#version 400 #extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_420pack : enable layout(location = 0) out vec4 fs_color; struct Test { float value; }; layout(std140,set = 0,binding = 0) uniform UTest { Test t; } u_…
02 апр '18 в 10:43
0
ответов
Загрузка бинарного шейдера SPIRV завершается неудачно
В моей программе я попытался загрузить скомпилированные бинарные шейдеры с примером кода от Саши Виллемса ( https://github.com/SaschaWillems/openglcpp/blob/master/SPIRVShader/main.cpp): bool loadBinaryShader(const char *fileName, GLuint stage, GLuin…
20 апр '17 в 09:47
2
ответа
Какие шаги необходимо предпринять для реализации OpenCL на устройстве?
Допустим, у меня есть устройство, которое, хотя оно и способно поддерживать, в настоящее время не поддерживает OpenCL. У меня есть ISA, документы по проектированию оборудования и много другой документации. Моя система, на которой находится устройств…
06 окт '17 в 14:43
3
ответа
Предоставляет ли байт-код SPIR-V запутывание?
Обратному инженеру легко подключить графический отладчик к приложению OpenGL для извлечения исходного кода шейдера. Насколько я понимаю, Vulkan, с другой стороны, использует байт-код SPIR-V, а не передает текстовые шейдеры в графический API. Байт-ко…
01 сен '16 в 19:32
0
ответов
Загрузка SPIR-V в OpenGL не удалась
Я использую Ubuntu 16.4 с драйвером NVIDIA 384.111, и у меня есть проблема, аналогичная этой. Я скомпилировал минимальный вершинный шейдер GLSL (один вход и пустую основную функцию) для SPIR-V так же, как описано в связанном обсуждении. Когда я загр…
16 июн '18 в 19:30
1
ответ
SPIR-V требует расположения пользователя на входе / выходе в Vulkan 1.0.51.1 +
Я установил последнюю версию Vulkan SDK на свой компьютер, но когда бы я ни захотел сгенерировать файлы SPIR-V для своих шейдеров через glslValidator.exe, он не работает и возвращает следующие ошибки ERROR: Shader.vert:17: 'location' : SPIR-V requir…
03 сен '17 в 18:37
1
ответ
Разрешено ли использовать VkBool32 в качестве константы push?
Я пытаюсь создать VkBool32 в моем коде C++: VkBool32 myBool = VK_FALSE; и передать его в GLSL через константу push: vkCmdPushConstants(..., sizeof(myBool), &myBool); который получен bool в едином классе хранения: layout(push_constant) uniform Pu…
30 июл '17 в 13:15
1
ответ
glslang не может разобрать встроенные модули
Вот мой код: bool ParseShader(glslang::TShader* p_shader) { EShMessages messages = (EShMessages)(EShMsgSpvRules | EShMsgVulkanRules); TBuiltInResource resources; InitializeResources(resources); if (!p_shader->parse(&resources, 100, false, mes…
26 июл '17 в 17:22
1
ответ
vertexPipelineStoresAndAtomics предупреждение для вершинного шейдера Vulkan SSBO
Я хочу использовать массив vec3 в моем вершинном шейдере. я создал layout(binding = 1) readonly buffer MyBuffer { vec3 buf[]; } myBuffer; ... vec test = myBuffer[gl_VertexIndex]; макет в моем GLSL и glslc это к моему SPIR-V, где у него есть это NonW…
11 май '18 в 11:57
1
ответ
Запросить наличие расширения GLSL в шейдере SPIR-V
В обычном GLSL я могу сделать что-то вроде этого, чтобы условно включить расширение GLSL: #if defined(GL_ARB_shader_viewport_layer_array) #extension GL_ARB_shader_viewport_layer_array : enable // Some other stuff here #endif У меня вопрос, как я мог…
10 мар '18 в 14:16
1
ответ
Каков статус поддержки NVIDIA SPIR на середину 2018 года?
Этот вопрос: Поддерживает ли NVidia OpenCL SPIR? спросили 5 лет назад. С тех пор поддержка NVIDIA для Khronos OpenCL улучшилась за этот период, и она также приняла Khronos Vulkan (о котором я мало знаю), мне было интересно, изменились ли вещи по сра…
23 июл '18 в 21:19
1
ответ
Следует ли оптимизировать сгенерированный код SPIR-V?
В настоящее время я рассматриваю возможность переноса имеющегося у меня кода из OpenGL/GLSL в Vulkan/SPIR-V, и часть этого кода генерирует GLSL во время выполнения, поэтому вместо этого мне придется генерировать SPIR-V. Что мне интересно, так это то…
30 апр '17 в 23:56
2
ответа
Модифицируя шейдер HLSL для работы в Vulkan, нужно ли разделять текстуры / сэмплеры?
Я изменяю шейдер HLSL, используемый в D3D12, для компиляции в SPIR-V, потому что я хочу использовать тот же код шейдера в Vulkan. Вот шейдер: #if !VULKAN #define layout(a) #else #define register(a) blank #endif struct VSOutput { float4 pos : SV_Posi…
26 авг '17 в 16:03
1
ответ
Какие типы в SPIR-V не могут быть псевдонимами типов?
Неструктурные типы (скаляры, векторы, массивы и т. Д.) С одинаковой параметризацией операнда не могут быть псевдонимами типов. Для неструктур, два типа <id>s соответствуют if-and-only-if, если типы совпадают. Что именно это означает? #version …
20 июл '17 в 07:06
0
ответов
Компилятор OpenCL2.2 SPIRV не проверяет неверный код
Я просто использовал эталонную реализацию Clang OpenCL C++ для компиляции исходного кода на странице 13 спецификации: #include <opencl_def> #include <opencl_memory> #include <opencl_vector_load_store> half bar(half a) { //ok: half …
21 окт '16 в 22:43